AnsweredAssumed Answered

Imx6s custom board, mmu init issue

Question asked by Johan Foglemark on Feb 7, 2014
Latest reply on Aug 26, 2014 by Dubravko Moravski

Hi,

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

I2C:   ready

DRAM:   1 GB

MMC:   mmc init start

usdhc gpio init SLUT

FSL_USDHC: 0

Using default environment

 

 

In:    serial

Out:   serial

Err:   serial

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

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.

 

__turn_mmu_on:

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

__enable_mmu_end:

ENDPROC(__turn_mmu_on)

 

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.

Outcomes