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.
Solved! Go to Solution.
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!
-----------------------------------------------------------------------------------------------------------------------
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!
-----------------------------------------------------------------------------------------------------------------------
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 ) ?
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!
-----------------------------------------------------------------------------------------------------------------------
thanks