假如说有一个工程的CMD文件如下:
MEMORY
{
VECS: o = 0x80000000 l = 0x00000f00 ARMRAM: o = 0xFFFF0080 l = 0x00001f80
DSPRAM: o = 0x11800000 l = 0x00040000
SHAREDRAM: o = 0x80000f00 l = 0x0001ffff
}
SECTIONS
{ ".vectors" > VECS
datasect > DSPRAM
.bss > SHAREDRAM
.cinit > SHAREDRAM
.cio > SHAREDRAM
.const > SHAREDRAM
.stack > SHAREDRAM
.sysmem > SHAREDRAM
.text > SHAREDRAM
.switch > SHAREDRAM
.far > SHAREDRAM
}
C6747的ROM BootLoader是怎样实现把下载在NandFlash中的Image文件搬移到内部RAM的??
在NandFlash下载程序的工程中有如下的一个定义:
typedef struct
{
Uint32 magicNum; // Expected magic number
Uint32 entryPoint; // Entry point of the user application
Uint32 numPage; // Number of pages where boot loader is stored
Uint32 block; // Starting block number where User boot loader is stored
Uint32 page; // Starting page number where boot-loader is stored
Uint32 ldAddress; // Starting RAM address where image is to copied – XIP Mode
}
NANDWRITER_Boot;
在程序下载时,在写入AISgen生成的bin文件之后,上面的结构体会按顺序写入Nand的下一页。
把下载在Nand中的Image文件读出发现未页的数据:
0x26000220
0xA1ACED00 // Expected magic number
0x800066C0 // Entry point of the user application
0x00000003 // Number of pages where boot loader is stored
0x00000001 // Starting block number where User boot loader is stored
0x00000001 // Starting page number where boot-loader is stored
0x00000000 // Starting RAM address where image is to copied – XIP Mode
0xffffffff
……
0xffffffff
下面是关于RBL UBL ABL的一段文字:
When the board is powered on the following steps occur:
First, the RBL in the DaVinci starts executing. It examines Page 0 of the first 24 blocks of NAND flash, starting at block 1 looking for the magic number of the UBL Descriptor. If a UBL Descriptor is found, the RBL loads the UBL into the internal ARM RAM and jumps to the entry point and starts execution of the UBL.
按照这个意思,RBL把NandFlash中的Image文件拷贝到以0x00000000开始的RAM中再跳到0x800066C0开始执行程序,但这个和CMD文件中的定全的不一致呀!!
但是程序完全能正常运行,即使不写入NANDWRITER_Boot也能正常运行!!
这个问题我在“C6747关于Nand启动与二次Boot,RBL”也提到过
https://www.deyisupport.com/question_answer/f/32/t/7501.aspx
xiaobin lin:
请问你使用什么工具看的 AISgen的 AIs格式的bin文件?
JingJing Huang:
回复 xiaobin lin:
自己用c写的小程序!!