This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
采用i2c salve boot模式启动,数据发送成功,但依然无法启动
我的boot table是有i2cAsmTest.out通过hex6x.exe转换来的,转换的cmd如下:
i2cAsmTest.out
-boot
-a
-e _c_int00
-order L
-memwidth32
-romwidth32
-o ledtest.btbl
然后把这个btbl文件放在0x00,0x06,0x00,0x00,0x00,0x01后发送给dsp,请问这个btbl文件有问题吗?
另外dsp接受后是不是把boot table数据存到0x800000地址中
i2cAsmTest.out
-boot
-a
-e _c_int00
-order L
-memwidth32
-romwidth32
-o ledtest.btbl
所这个-a换成-b重新生成bin文件。
你用的是ascii码,从host下发时,有先转换成二进制吗?
#1. 根据boot table的定义:entry point为0x00800BA0, 第一个section的load address 0x00800800,length为0x00000460, 稍微对比了前面几个位置的内容是一致的。那么说明DSP 正确接收了I2C master发过来的数据并放到了对应的内存上了。
#2. 有点问题,按照第一段的长度0x0460,在这个文件的0x0460处的数据是两个word的0,按照boot table的定义,这是文件结束的标志,那这后面的数是什么呢?
#3. 上面memory的数据不是从CCS download .out文件后显示的吧。
#4.这时,在CCS里将指针改为entry point:0x00800BA0,打开工程,load symbol, 先在main里打个定点,运行一下试试。
11.10.2 The Boot Table Format
The boot table format is simple. There is a header record containing a 4-byte field that indicates where the
boot loader should branch after it has completed copying data. After the header, each section that is to be
included in the boot table will have the following:
1. 4-byte field containing the size of the section
2. 4-byte field containing the destination address for the copy
3. The actual data to be copied
改成-b后生成led.bin,后来我又修改了应用代码,生成新的led1.bin,但发送的还是旧的led.bin文件,但我连仿真器后发现0x800800地址的数据是新的led1.bin,是不是说明我的i2c发送失败了,host发送时地址0x04不要作为数据一起发送吧?
断下电再发送呗,以清掉memory原来的值。
要不要发0x04不知道啊,按手册感觉要发,但想不出什么道理,没有实际用过这种boot模式。你可以不同的都试一下。
我的思路是先验证host能不能发送数据给bootloader放到指令的内存上。
qing zhang 说:.text : btad=00000000 dest=00800800 size=00000480
.cinit : btad=0000048c dest=00800c80 size=00000034
这个没有问题。
第一段从00800800 + 0x480= 00800c80.
我前面搞错了,漏了三个word的文件头,以上面为例文件里0000048c的位置为00000034 00800c80 就是对的。所以bin文件夹的boot table没有问题。
现面就看你能不能从host下载下去了。