Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jan 2019 19:27:04 +0800
From:      AudioONE <audioone.official@gmail.com>
To:        freebsd-ports@freebsd.org, freebsd-arm@freebsd.org
Subject:   i.MX6 DualLite stuck at early boot
Message-ID:  <CAL5b%2BC1D0-V=kvQH3L7c0HJMJA7QU18bjJyYxpjPBkKG7LS%2BZQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
okay....... after days and days mind storm(mind fuck), finally, I can enter
DDB, here is what I did in [reinit_mmu], maybe can help someone.


==============================

ASENTRY_NP(reinit_mmu)
        push    {r4-r11, lr}
        mov     r4, r0
        mov     r5, r1
        mov     r6, r2

+ /*  Only for Cortex-A9 Errdata Fix */
+        mrc     p15, 0, r0, c15, c0, 1  @ read diagnostic register
+         orr     r0, r0, #1 << 4         @ set bit #4
+         orr     r0, r0, #1 << 6         @ set bit #6
+      orr     r0, r0, #1 << 11        @ set bit #11
+      orr     r0, r0, #1 << 21        @ set bit #21
+        mcr     p15, 0, r0, c15, c0, 1  @ write diagnostic register
+         DSB
 +        ISB

.
.
.
.
#else
        bl      dcache_inv_pou_all
#endif
        mcr     CP15_ICIALLU
 +       mcr     CP15_TLBIALL           /*  Flush TLB  */
 +       mcr     CP15_BPIALL             /* Flush Branch predictor */
        DSB
        ISB


        /* Set auxiliary register */
        mrc     CP15_ACTLR(r7)
.
.
.

END(reinit_mmu)
==============================

my new problem is OS panic at same address "FAR=0000ec10"(after reset the
eval-board many times), what does it mean? something wrong with FDT? I use
wandboard-dual dts file(1 GB memory)


U-Boot 2016.05 (Dec 31 2018 - 22:57:28 +0800)

CPU:   Freescale i.MX6DL rev1.2 at 792 MHz
Reset cause: POR
Board: MX6DL-Armadillo2
DRAM:  1 GiB
WARNING: Caches not enabled
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FEC
Error: FEC address not set.

Hit any key to stop autoboot:  0
reading tarker
** Unable to read file tarker **
reading tmpker
** Unable to read file tmpker **
Booting BSD loader
reading ubldr.bin
185536 bytes read in 40 ms (4.4 MiB/s)
## Starting application at 0x12000000 ...
Consoles: U-Boot console
Compatible U-Boot API signature found @0x4fd703e0

FreeBSD/armv6 U-Boot loader, Revision 1.2
(root@freebsd-x250, Sat Dec 15 17:17:42 HKT 2018)

DRAM: 1024MB
Number of U-Boot devices: 2
U-Boot env: loaderdev not set, will probe all devices.
Found U-Boot device: disk
  Probing all disk devices...
  Checking unit=0 slice=<auto> partition=<auto>... good.
Booting from disk0s2:
/
/boot/kernel/kernel data=0x580b24+0xb74dc -
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel]...
Kernel entry at 0x0x12200100...
Kernel args: (null)
initarm: console initialized
 arg1 kmdp = 0xc2639000
 boothowto = 0x00000000
 dtbp = 0xc254af08
 lastaddr1: 0x1283a000
loader passed (static) kenv:
 loader_envp = 0xc2638000
 c2638000 LINES=24
 c2638009 console=uboot
 c2638017 currdev=disk0s2:
 c2638028 kerflag=
 c2638031 kernelname=/boot/kernel/kernel
 c2638050 loaddev=disk0s2:
 c2638061 prompt=loader>
 c2638070 twiddle_divisor=1
imx_wdog_init_last_reset
ARM Debug Architecture v7
4 watchpoints and 6 breakpoints supported
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2016 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.0-RELEASE-p1 #180 r309528M: Thu Jan  3 10:42:45 HKT 2019
    root@4160059805-freebsd-xeon:/mnt/dev/bsdbuild/arm.armv6/mnt/dev/11/sys/IMX6
arm
FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM
3.8.0)
WARNING: WITNESS option enabled, expect reduced performance.
WARNING: DIAGNOSTIC option enabled, expect reduced performance.
subsystem 1000000
   0xc23e0b88(0)... Fatal kernel mode data abort: 'Translation Fault (L1)'
on read
trapframe: 0xc2713d18
FSR=00000005, FAR=0000ec10, spsr=600000d3
r0 =12998000, r1 =c2ffc010, r2 =00000001, r3 =c261c07c
r4 =00000006, r5 =c261c074, r6 =00000000, r7 =2a600000
r8 =c2ffc059, r9 =00000000, r10=c260ba28, r11=c2713dd8
r12=c2ffc014, ssp=c2713da8, slr=0000ec10, pc =c23fa450

[ thread pid 0 tid 0 ]
Stopped at      0xc23fa450
db> bt
Tracing pid 0 tid 0 td 0xc2617190
KDB: reentering
KDB: stack backtrace:
KDB: reentering
KDB: stack backtrace:
blahblahblah.....
blahblahblah.....
blahblahblah.....
blahblahblah.....
KDB: reentering
KDB: stack backtrace:
KDB: reentering
KDB: stack backtrace:
panic: pmap_fault: pm_pt1 abort
cpuid = 0
Uptime: 1s



>  hi guys
>
>
I've got a small brand eval-board which built with MCIMX6U6AVM08AC and
running FreeBSD 11.0.1(I have tried HEAD version, 12.0-BETA3, it didn't
work  too), ubldr stage is fine but it stucked at "reinit_mmu"
function(FreeBSD might be have assembly printf for debug environment,
because aseeembly code just like a blackbox when you without JTAG debugger
in hand )
>
>  ======================================
>  Booting from disk0s2:
>  /
>  /boot/kernel/kernel data=0x57b564+0x58a9c syms=[0x4+0x6e9d0+0x4+0x77ada]
>  Hit [Enter] to boot immediately, or any other key for command prompt.
>  Booting [/boot/kernel/kernel]...
>  Kernel entry at 0x0x12200100...
>  Kernel args: (null)
>  EARL_DEBUG: pmap_kern_ttb 0x1290004a, actlr_mask 0xc1, actlr_set 0x41
>  (nothing)
>  ======================================
>
>
>
>  when I trace the code to "reinit_mmu" function, commented code like
this, kernel panic and reported "Asynchronous External Abort". Am I the
only one who meet this WEIRD case? I got AM3352/AM3354/Zynq7 platforms,
they works fine with kernel 11.0.1. Is it something different between i.MX6
Dual(Wandboard) and i.MX6 DualLite?
>
>          /* Enable caches. */
>          mrc     CP15_SCTLR(r7)
>  // it will be stucked if don't commented this code
>  /*      orr     r7, #CPU_CONTROL_DC_ENABLE      //DEBUG
>          orr     r7, #CPU_CONTROL_IC_ENABLE          //DEBUG
>          orr     r7, #CPU_CONTROL_BPRD_ENABLE   //DEBUG  */
>          mcr     CP15_SCTLR(r7)
>          DSB
>
>          mcr     CP15_TTBR0(r4)          /* Set new TTB */
>          DSB
>          ISB
>
>  // it will be stucked if don't commented this code
>  /*      mcr     CP15_TLBIALL            /// Flush TLB    //DEBUG   */
>          mcr     CP15_BPIALL             /* Flush Branch predictor */
>          DSB
>          ISB
>
>
>
>
>  U-Boot 2016.05 (Dec 16 2018 - 13:09:25 +0800)
>
>  CPU:   Freescale i.MX6DL rev1.2 at 792 MHz
>  Reset cause: POR
>  Board: MX6DL-Armadillo2
>  DRAM:  1 GiB
>  WARNING: Caches not enabled
>  MMC:   FSL_SDHC: 0
>  *** Warning - bad CRC, using default environment
>
>  In:    serial
>  Out:   serial
>  Err:   serial
>  Net:   FEC
>  Error: FEC address not set.
>
>  Hit any key to stop autoboot:  0
>  reading ubldr.bin
>  185536 bytes read in 40 ms (4.4 MiB/s)
>  ## Starting application at 0x12000000 ...
>  Consoles: U-Boot console
>  Compatible U-Boot API signature found @0x4fd703e0
>
>  FreeBSD/armv6 U-Boot loader, Revision 1.2
>  (root@freebsd-x250, Sat Dec 15 17:17:42 HKT 2018)
>
>  DRAM: 1024MB
>  Number of U-Boot devices: 2
>  U-Boot env: loaderdev not set, will probe all devices.
>  Found U-Boot device: disk
>    Probing all disk devices...
>    Checking unit=0 slice=<auto> partition=<auto>... good.
>  Booting from disk0s2:
>  /
>  /boot/kernel/kernel data=0x57b564+0x58a9c syms=[0x4+0x6e9d0+0x4+0x77ada]
>  Hit [Enter] to boot immediately, or any other key for command prompt.
>  Booting [/boot/kernel/kernel]...
>  Kernel entry at 0x0x12200100...
>  Kernel args: (null)
>  EARL_DEBUG: pmap_kern_ttb 0x1290004a, actlr_mask 0xc1, actlr_set 0x41
>  EARL_DEBUG: cpu_setup pass
>  EARL_DEBUG: init_param1 pass
>  initarm: console initialized
>   arg1 kmdp = 0xc26bc000
>   boothowto = 0x00000000
>   dtbp = 0xc2547eb8
>   lastaddr1: 0x128bd000
>  loader passed (static) kenv:
>   loader_envp = 0xc26bb000
>   c26bb000 LINES=24
>   c26bb009 console=uboot
>   c26bb017 currdev=disk0s2:
>   c26bb028 kerflag=
>   c26bb031 kernelname=/boot/kernel/kernel
>   c26bb050 loaddev=disk0s2:
>   c26bb061 prompt=loader>
>   c26bb070 twiddle_divisor=1
>  EARL_DEBUG: platform_late_init pass
>  Fatal kernel mode data abort: 'Asynchronous External Abort' on write
>  trapframe: 0xc257c688
>  FSR=00001c06, FAR=Invalid,  spsr=600000d3
>  r0 =00000100, r1 =600001d3, r2 =600000d3, r3 =30c52079
>  r4 =00000000, r5 =c257c7e4, r6 =c25b3280, r7 =c25b3280
>  r8 =c2578058, r9 =00000000, r10=c25ce154, r11=c257c7d8
>  r12=c2577c24, ssp=c257c718, slr=c244b3c0, pc =c244b3d4
>
>  panic: Fatal abort
>  cpuid = 0
>  Uptime: 1s



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAL5b%2BC1D0-V=kvQH3L7c0HJMJA7QU18bjJyYxpjPBkKG7LS%2BZQ>