根据 "AM1808 StarterWare软件使用笔记"一文的描述,我进行了实验,但是从串口出来“
StarterWare AM1808 Boot Loader
Invalid magic number in boot image
”
打印信息,我查看了源代码,在NANDBootCopy()中会有对Magic Number的比较,
if ((nandBootHeader.magicNum != MAGIC_NUM_SF) &&
(nandBootHeader.magicNum != MAGIC_NUM_GF))
{
UARTPuts("Invalid magic number in boot image\r\n", -1);
BootAbort();
}
在头文件中有这样的定义
#if defined(am1808) || defined(omapl138) || defined(c6748)
/* Magic numbers for gforge and sourceforge */
#define MAGIC_NUM_GF (0xA1ACED00)
#define MAGIC_NUM_SF (0x55424CBB)
据此我查询了通过AISGEN生成的boot.ais文件,发现其magic number 为:0x41504954,很显然这里的错误肯定是magic number不一致所产生的。
为何会这样?boot.ais 中magic number是通过AISGEN转换成AIS的过程中写入的吗?如何操作才能如“"AM1808 StarterWare软件使用笔记”中所述正常工作呢?
Gary Wu:
通过什么方式烧写的?
AISGEN烧写时,选择的是d800k008还是?
zl laing:
回复 Gary Wu:
用AIGEN将CCS生成的boot.out转换成boot.ais,然后用
sfh_OMAP-L138.exe –flash boot.ais rtc.bin –targetType AM1808 –flashType NAND –p COM1进行烧写
Gary Wu:
回复 zl laing:
AISGEN烧写时,选择的是d800k008还是什么???
zl laing:
回复 Gary Wu:
选择的是d800k008
Tuff Li:
回复 zl laing:
感觉楼主对启动不是很理解,关键点如下:
不管怎么启动的,RBL要能正确认识你烧到存储介质上的内容!
Gary Wu:
回复 zl laing:
问上述问题的原因是因为首先得确认芯片ROM code的版本
可以通过连接仿真器,查看0XFFFD0000来确认
确认之后,然后在使用AISGEN工具的时候,选择对应的选项
Gary Wu:
回复 Gary Wu:
关于AM1808详细的boot信息,以及AISGEN的原理及使用,可以参考文档《using the AM18xx bootloader》
http://www.ti.com/lit/pdf/spraba5