I am trying to get a custom board based of the SabreSD board up and running. The board has a IMX6 solo processor and a different DDR from the sabresd board. At the moment im trying to create two images, u-boot and linux, that can be used with the MFG-tool to flash the emmc.
I have followed the instructions in the "i.MX 6Solo/6DualLite BSP Porting Guide" and the documentation from the MFG tool "Manufacturing Tool V2 Linux or Android Firmware Development Guide V2.docx".
I have updated the DCD table and have tried it with the "DDR_Stress_Tester_V1.0.1" and it does not report any errors. I have also given the board a custom machine number and added it to the register site.
My issue is that the board fails to execute beyond the point below.
U-Boot 2009.08-00698-g928df9c-dirty (Feb 06 2014 - 17:06:17)
CPU: Freescale i.MX6 family TO1.1 at 792 MHz
Thermal sensor with ratio = 187
Temperature: 40 C, calibration data 0x5a15255f
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 99000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6DL/Solo-ChamHigh: unknown-board Board: 0x61011 [POR ]
Boot Device: NOR
DRAM: 1 GB
MMC: mmc init start
usdhc gpio init SLUT
Using default environment
Board late init Start
Board late init SLUT
Net: No ethernet found.
Hit any key to stop autoboot: 0
* kernel: cmdline image address = 0x10800000
## Booting kernel from Legacy Image at 10800000 ...
Image Name: Linux-3.0.35-03028-g0231539-dirt
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 6958796 Bytes = 6.6 MB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
kernel data at 0x10800040, len = 0x006a2ecc (6958796)
Loading Kernel Image ... OK
kernel loaded at 0x10008000, end = 0x106aaecc
Using machid 0x12fb
## Transferring control to Linux (at address 10008000) ...
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
I have traced it to the point where it tries to turn on the MMU by setting gpio pins.
mov r0, r0
mcr p15, 0, r0, c1, c0, 0 @ write control reg
mrc p15, 0, r3, c0, c0, 0 @ read id reg
mov r3, r3
mov r3, r13
mov pc, r3
My guess is that I must have missed setting up something important before reaching this point in the startup. I would very much appreciate any ideas on what could cause this issue and how I could solve it. Please let me know if I have failed to provide any information that you think is vital to the question.
Since this mmu initial code are common and there is nothing special we need to do during kernel boot up, so I would like to know whether you have turned off cache, mmu correctly in uboot before jumping to kernel, can you help double check it?