关于CCS输入出文件格式COFF和ELF的设置以及生成hex和bin文件的几个小问...
发布网友
发布时间:2024-10-21 20:48
我来回答
共1个回答
热心网友
时间:2024-10-23 02:08
本文为个人学习记录。
CCS11软件版本下输出文件格式有COFF和ELF两种选择。COFF格式为老旧格式,可能被未来版本放弃支持,而ELF格式为新标准,eabi全称为嵌入式应用程序二进制接口。
当输出格式设定为COFF时,若编译选项中的idiv_support被设置为none,则在编译过程中会收到错误提示,指出存在未引用的符号。具体错误信息包括:警告信息,表明无效的编译器选项被忽略;错误信息指出未解决的符号,以及"SP_EV_OpenLoopTest.out"未能被构建。此问题源于COFF格式下,某些变量名称前需添加下划线标识,修改配置后即可解决此问题。
关于idiv_support设置为none的说明,表示当不选择'none'值时,编译器会利用特定指令集扩展加速基本整数除法和取模运算,并允许访问stdlib.h中的除法指令。设置idiv_support为idiv0表示启用增强的整数除法支持。测试显示,使用idiv0模式时,整数除法的执行时间仅为19个SYSCLK周期,相比none模式的79个SYSCLK周期,性能显著提升。
若在COFF格式下设置idiv_support为idiv0,需要在编译选项中加入--abi=eabi指令,否则编译过程会报错:错误信息指出idiv_support=idiv0选项在不配合--abi=eabi的情况下无效。
生成bin文件时,在指定位置添加指令,调用CCS安装路径下的utils/tiobj2bin/tiobj2bin的mkhex4bin.exe程序生成bin文件。具体指令如下:"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000" "${CG_TOOL_ROOT}/bin/hex2000" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"。
为了生成hex文件,需进行如下设置,并注意内存位宽的配置,C2000的内存和flash位宽为16位,需在图6中进行相关设置。若忽略位宽的设定,生成的hex文件与bin文件不匹配,bin文件将根据.out文件输出。