根据芯片手册中的HPI部分的约定,一次读写必须为32位,那么加载文件必须为4字节的倍数。
而根据下面的生成加载文件的描述:
Boot Table format as following:
|———————————-|
| Entry Point (4 bytes) |
|———————————-|
| Section 1 Size (4 bytes) |
| Section 1 Load Address (4 bytes) |
| Section 1 Run Address (4 bytes) |
| Section 1 Data (4*n bytes) |
|———————————-|
| Section 2 Size (4 bytes) |
| Section 2 Load Address (4 bytes) |
| Section 2 Run Address (4 bytes) |
| Section 2 Data (4*n bytes) |
|———————————-|
| ………….. |
|———————————-|
| Section N Size (4 bytes) |
| Section N Load Address (4 bytes) |
| Section N Run Address (4 bytes) |
| Section N Data (4*n bytes) |
|———————————-|
| 0x00000000 (End flag) |
|———————————-|
Notes: If the raw section data is not multiple of 4 bytes, pad will be added,
Don't copy the pad to DSP memory!
当加载文件中 不是4的倍数时,HPI BOOT怎么办?
Shine:
你好,
请问你使用是哪款DSP?
liang junjun:
回复 Shine:
c6748
Shine:
回复 liang junjun:
请问你这段话是在TI的哪个芯片手册里看到的?
我在c6748 bootloader文档中没有这样的说明
liang junjun:
回复 Shine:
关于一次读写为32位是从6748 datasheet 20.2.6.7节中时序中找到。
关于pad不能写入memory的注意项是从转换工具 DSPBoot.exe 所产生的XXX.h文件中的BIN文件格式的解释说明中的描述中看到的
liang junjun:
回复 Shine:
6748 datasheet 20.2.6.7章节时序中可以获得 一次读写 为32bit
下面的那一段 是 转换工具 DSPBoot.exe 对目标文件 .out 转换成 的BIN文件的 可读形式文件 .h中的注释部分内容。
Shine:
回复 liang junjun:
谢谢提供详细资料。
我的理解是当section size不是4的整数时,会在raw data最后补0~3个"0"字节,这样也就保证HPI每次可以读取4byte数据。
liang junjun:
回复 Shine:
红色标记部分说 不要把PAD 写入memory,这个通过 读一次 修改 数据再写入 也可以实现,在 BOOT 阶段 这跟把PAD写入memory 应该没有区别,这个注意项到底想要说明的是什么问题咧。
在HPI BOOT 模式下 可以 直接忽略这个注意项。
Shine:
回复 liang junjun:
我认同你的观点, 通常情况下可以忽略。这个注意项我觉得可能在代码很大,而且有很多段大小都是奇数时,而memory大小又有限的情况下,可以考虑copy时去掉PAD.