i.MX6 DualLite stuck at early boot
AudioONE
audioone.official at gmail.com
Thu Jan 3 11:26:35 UTC 2019
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 at 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 at 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 at 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
More information about the freebsd-arm
mailing list