AnsweredAssumed Answered

kernel stuck at start up on iMx6solo customized board

Question asked by Mohsen Gh on Mar 6, 2019
Latest reply on Mar 6, 2019 by igorpadykov

Hello everybody,

I have a customized imx6 solo board. 1 GB of DDR3 ram and MMC for boot.

I have ported u-boot(the fslc community one) and it seems to work fine. I also run stress RAM test and it came out OK. (calibration data is used in imximage.cfg)

when I attempt to run kernel it stuck at "starting kernel" commands:

>>ext4load mmc 0 ${loadaddr} zImage >>ext4load mmc 0 ${fdt_addr} *.dtb >>bootz ${loadaddr} - ${fdt_addr}

(loadaddr=0x12000000 and fdt_addr=0x18000000 the bootargs has the right ttymxc and baudrate value)

with early printk it says: "Uncompressing Linux... done, booting the kernel."

printk doesn't work, (Guess the initialize not done).

Fortunately, I have some LEDs on board, so I tried to use them and trace the code. the it seems it kernel hangs at enabling MMU:

/arch/arm/kernel/head.S :

. .     ENTRY(__turn_mmu_on)         mov r0, r0         instr_sync        mcr p15, 0, r0, c1, c0, 0         mrc p15, 0, r3, c0, c0, 0        instr_sync         mov r3, r3         mov r3, r13         ret r3     __turn_on_mmu_end     ENDPROC(__turn_mmu_on)`enter code here` ...

those mcr and mrc are the point that i can toggle GPIObefore them and not after!

I should add: to toggling GPIO I used physical address before them and virtual address after.(I also test with physical add) physical address: for example 0x0209c000 -> gpio data register which virtual address is: 0xf429c000 (just in iMX platform)

also I disable i/d cache before boot up kernel. didn't know how to disable MMU but according the u-boot it seems to be disabled.

please help me find the solution.

Thanks

Outcomes