i.mx6 boot

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.mx6 boot

Jump to solution
1,431 Views
jiefengzhang
Contributor I

chip : i.mx6q

I think after reading the datasheetchip startup process is as follows:

1、When the chip start-up(boot from SD card) , Chip will copy the SD card code from 0x400 to the internal RAM.(copy length is 4K)

2、Internal ROM code will check IVT and DCD , and then perform DCD to initialize the DDR.

3、Internal ROM code will copy boot_data->length specifies the length of the data to boot_data specified address , and then jump to entry the specified address.

question :

1、The above view is correct?


2、How do Internal ROM code find the DCD?


In my code ,the address offset is 0x27800000(As long as the memory address range , For example : 0x10000000 ) :

boot_data->start       = 0x27800000

DCD(Absolute address)     = 0x2780042C

entry                  = 0x278006E0


I try change the DCD(Absolute address) , but code is not working .

The DDR initialization after finding DCD , Why DCD(Absolute address) in the memory address ? How do Internal ROM code find the DCD? Internal ROM should not find DCD according to the address in memory.


Forgive my English is not good , thanks.


Labels (6)
0 Kudos
1 Solution
997 Views
Yuri
NXP Employee
NXP Employee

You may use U-boot as an example how to locate the DCD :

uboot-imx.git - Freescale i.MX u-boot Tree

Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
4 Replies
997 Views
Yuri
NXP Employee
NXP Employee

  Your understanding of the boot sequence is correct, but the DCD is loaded to the internal
RAM (iRAM), and DCD -based initialization is performed in internal RAM (OCRAM), except the EIM :

"For External Interface Module (EIM) boot devices, downloading initial load region to iRAM is skipped.
IVT is read from EIM address space (see Image Vector Table and Boot Data). Copying initial load region
and the rest of the program image is done only if the absolute start address of the image is

not equal to EIM CS0 start address."

Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

997 Views
jiefengzhang
Contributor I

I change the DCD(Absolute address , this address is in the external RAM(DDR) ) , the code is not work.


The DCD is loaded to the iRAM . Why to do with the external RAM address ?

Unless the DCD load address is :    iRAM start address  +  (  DCD(Absolute address-   boot_data->start ) ?

0 Kudos
998 Views
Yuri
NXP Employee
NXP Employee

You may use U-boot as an example how to locate the DCD :

uboot-imx.git - Freescale i.MX u-boot Tree

Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
997 Views
jiefengzhang
Contributor I

thanks

0 Kudos