TI中文支持网
TI专业的中文技术问题搜集分享网站

关于6678 IBL I2C启动和SPI启动的问题

研究6678快一个月了,但是始终有几个问题找不到答案:

1..out文件+rmd文件生成.b文件, 以I2C eeprom启动为例, rmd文件中的 ORG到底是什么意思?如果填0x400,在烧写的时候,就是写到eeprom的0x400处?还是RBL在搬运的时候,将数据搬到0x400的内存处?

2.  通过romparse生成.ccs文件,romparse需要一个.map.pp的文件,这个文件是描述boot parameter table吗?romparse的作用是在boot table前面加上boot parameter table吗? 哪里有文档介绍.map.pp里面详细参数的如何设定?

3. ibl用make evm_c6678_i2c就可以编译,但是我如何选择配置这个ibl的boot parameter table中的各项参数呀?我怎么配置二级启动的方式?必须用i2cparam_c66x_le.out + i2cConfig.gel来配置二级启动参数?

4. 将mcsdk里面的post程序编出来之后,post_evm6678l.dat 前面有boot parameter table吗? 也就是说post_i2crom.bin 和 i2crom_0x51_c6678_le.bin在文件结构上有不同?

5. 我要将post_i2rom.bin烧写到0x50或者0x51处,配置相应的启动方式之后,都能执行;但是系统默认编译出来的IBL无论烧写到0x50还是0x51处,都无法执行,各位有遇到过这种情况吗?

问题有点多,望见谅.其实我只想实现写一个简单的点灯程序,构建成i2crom.bin,烧到eeprom 的0x51里面, 然后启动成功,led灯亮.但是TI的开发资源包大而全,资料太分散,看了很多不得要领.ibl的编译生成过程也是复杂成分.我目前将boot_loader目录下几乎所有文档都看了,说的都相当的模糊.

Andy Yin1:

1 org指定的是烧写到ROM中的起始地址,具体参考手册SPRU186 section11.4;

2 你的理解是对的,boot parameter table 格式参考RBL中tiboot.h及bootloader user guide对不同boot mode下的各自定义;

3 mcsdk中提供的IBL是一个二次加载的例程,如果要使用mcsdk中的IBL,就需要满足其传递boot parameter的格式要求;这只是一个例程,你也可以按照你定义的方式进行二级参数的传递。

关于IBL确实没有一个详尽的文档,建议最好从IBL的源码着手看看,其他的文档写的不是很详细。

sir Li:

回复 Andy Yin1:

谢谢Andy.

sir Li:

谢谢Andy, 总算搞清楚了:

i2c_eeprom有1M bit == 128K,  0x50处代表前64K, 0x51处代表后64K, i2crom_0x51_c6678_le.bin里面包括了一个"启动参数表集合"和 boot table; 而"启动参数表集合"是7个 boot parameter table的集合,根据 DEVSTAT[7:3]的parameter index来选择这7个中的哪一个来作为本次启动的 boot parameter table.

"启动参数表集合" 中就描述了ibl 的支持的二级启动:spi  nor /  nand /  ethernet , 如果想改变这些"启动参数",就改变i2cConfig.gel中的相应的值,然后用i2cparam_c66x_le.out将i2cConfig.gel中的值烧进去,它只会改变"启动参数表集合".但当你重新烧写i2crom_0x51_c6678_le.bin的时候,又重新覆盖"启动参数表集合".

当你选择的启动参数(boot paramter)支持的二级启动是ibl_BOOT_FORMAT_ELF的时候,那么直接将编译出来的elf格式的.out文件烧写到spi nor或者nand处就可以了.

赞(0)
未经允许不得转载:TI中文支持网 » 关于6678 IBL I2C启动和SPI启动的问题
分享到: 更多 (0)