你好,
我这边因为工程需要对TI目录C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl\src下的IBL源码移植到一个CCS工程中编译成功了,生成.out文件。
IBL需要哪种格式的bin文件,我现在如何把.out文件转化为相应格式的bin文件,可以烧入EEPROM,开机时通过EEPROM和NorFlash启动。
Shine:
如果是I2C nor flash boot模式的话,把.out文件重命名为.bin文件就可以了。可以参考 C:\ti\C66x MCSDK 2.1\mcsdk_2_01_02_06\tools\boot_loader\examples\i2c\nor\docs\README.txt文件。
Copy tools\boot_loader\examples\i2c\nor\evmc66xxl\bin\i2cnorboot_evm66xxl.out to tools\writer\nor\evmc66xxl\bin,rename it to app.bin, and refer to tools\writer\nor\docs\README.txt on how to program the app.bin to NOR flash.
user4504841:
回复 Shine:
您说的应该是往NorFlash中烧写的.out文件吧?这个直接命名为.bin文件是可以的。
我现在需要把往EEPROM中烧写的.out文件转化为bin文件,这个.out文件大小非常大,大概900KB左右,直接命名为bin文件,烧写到EEPROM中是不行的吧?
因为我看TI源文件夹下的IBL bin文件只有50KB左右,不知道是如何生成的?
Shine:
回复 user4504841:
IBL二次bootloader程序只是做一些基本的初始化和程序搬移(EVM板上主要是为了修复PG1.0版本PLL bug),不会很大啊。您在IBL中添加了很多功能吗?
user4504841:
回复 Shine:
C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl\src这个文件夹下的全部源码移植到CCS生成out文件确实是900KB左右,然后使用.out转bin工具转化为bin文件大概为60KB,但是烧入EEPROM不能正常启动,而C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl\src这个文件夹下官方自带的IBL文件则没问题。
我查看两种bin文件的数据,发现文件头不太一样,是不是由于bin文件格式不对造成的?
Shine:
回复 user4504841:
编译的时候可以把编译选项里的-g (full symbolic debug) 选项去掉,这样生成的.out文件里不会有调试信息,减小文件大小。
IBL生成.bin文件时会把I2C Boot Mode Parameter Table添加进去,请参考数据手册2.5.3.5 I2C Boot Parameter Table
www.ti.com/…/tms320c6678.pdf
如何把.out文件生成boot table,可以参考下面的direct boot例程。
processors.wiki.ti.com/…/KeystoneI_Bootloader_Resources_and_FAQ
user4504841:
回复 Shine:
您好,我这边还是看的不太明白。这个IBL指的是烧进EEPROM中的固件,我按照上面链接中的方式由.out文件先用Hex6x.exe工具生成.hex文件,再用下面的b2ccs和ccs2bin工具转化为bin格式文件,打开发现生成的文件内容还是和官方提供的i2crom_0x51_c6657_le.bin文件不一样,不知道哪里有问题。我移植的时候是把C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl\src下面的所有源码和头文件原封不动拷贝到新建的CCS工程下,只是把iblinit中的main函数完全移入iblmain的mian函数中,合并成一个main函数。然后直接用CCS编译生成.out文件,再用上面的方法转为bin文件,不知道哪里有问题。下面是我生成的bin文件以及官方bin文件:
IBL_bin.rar
Shine:
回复 user4504841:
请问有什么特殊原因不能用make去编译IBL,而且IBL也只是为了修复PG1.0的PLL bug。如果用PG2.x版本的芯片,可以不用IBL而直接去加载应用程序。 IBL在生成bin文件时会执行romparse把boot parameter table合并到boot table。您的步骤中并没有合并parameter table的步骤,所以会不一样。其实如果把IBL移植到ccs project,可以把它看作是一个应用程序,参考上面的direct boot中生成bin文件的方法C6678_directROM_boot_examples\C6678\spiboot\build\spiboot.cmd。在C6678_SPIboot_usersManual.pdf里有详细的生成步骤和解释。 另外,对各个命令的解释可以参考下面的FAQ。 processors.wiki.ti.com/…/KeystoneI_Bootloader_Resources_and_FAQ
user4504841:
回复 Shine:
好的,谢谢。
移植到CCS工程是为了方便后面根据我们的需要进行修改。
user4504841:
回复 Shine:
direct boot中生成bin文件的方法和C6678_SPIboot_usersManual.pdf在哪里可以找到?
Shine:
回复 user4504841:
在https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 EVM SPI boot example,文档在\C6678_directROM_boot_examples\C6678\spiboot\docs目录下。这个例程是SPI boot的,I2C boot可以做参考。