Part Number:TMS320F28388D
采用此方式可在CPU编译时生成bin,在CM中应用不好使
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000" "${CG_TOOL_ROOT}/bin/hex2000" "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"
Susan Yang:
DSP应用 说:在CM中应用不好使
cm是一个ARM内核,您需要使用armofd 和 armhex
Be sure to replace ofd2000 and hex2000 with the respective binaries for your device, for example, ofd6x and hex6x (for c6000) or armofd and armhex (for ARM).
,
DSP应用:
我知道是ARM啊,STM的arm就是可以生成bin文件的,在线升级都是用的bin文件
,
Susan Yang:
所以您上面语句里是否有修改为armofd 和 armhex?
,
DSP应用:
ARM的已经搞定了看大小对比数据是正常的,为什么CPU的会这么大比FLASH都大
,
Susan Yang:
DSP应用 说:ARM的已经搞定了
CM核也生成bin文件了?
DSP应用 说:看大小对比数据是正常的,为什么CPU的会这么大比FLASH都大
不太理解您的意思
,
DSP应用:
CM的bin文件生成的是正常的,CPU生成的的不正常,CPU的BIN文件大小1000K了FLASH才多大?
,
DSP应用:
EE00前都是00
,
Susan Yang:
DSP应用 说:CPU的BIN文件大小1000K了FLASH才多大?
您编译的是自己的程序还是例程?我这边编译的例程104K
,
DSP应用:
自己的程序
,
Susan Yang:
关于应用程序占用的memory size,不是看生成的hex/bin文件的大小,而是在.map文件中查看
您可以使用bin查看工具打开bin文件看看,里面后面大部分内容应该都是0xFF,也就是说生成的bin文件是把整个空间填入的内容,后面全0xFF的空间其实并没有用到
若是对bin文件大小敏感的话,建议您提高编译器优化等级试试
,
DSP应用:
现在有一个现象在CLA中如下写编译BIN是68K,是正常的;
for(i=0;i!=2;i=i+4){CTRL_Run_exe(&ctrlcla.Channel[i+0], cla_para.Period,cla_para.Test_flag);CTRL_Run_exe(&ctrlcla.Channel[i+1], cla_para.Period,cla_para.Test_flag);CTRL_Run_exe(&ctrlcla.Channel[i+2], cla_para.Period,cla_para.Test_flag);CTRL_Run_exe(&ctrlcla.Channel[i+3], cla_para.Period,cla_para.Test_flag);
}
如下写BIN就是1000K;
for(i=0;i!=8;i+){CTRL_Run_exe(&ctrlcla.Channel[i+0], cla_para.Period,cla_para.Test_flag);
}
去掉整个CLA,cla文件不编译也是1000K;所以BIN文件到底跟什么有关?
__interrupt void Cla1Task1 ( void ){ Uint16 i,pl; pl = ctrlcla.TADC_Select*2; GpioDataRegs.GPBSET.bit.GPIO33 = 1; ADBUS_Refresh_cla(); /*9-16通道控制*/ for(i=0;i!=2;i++) { CTRL_Run_exe(&ctrlcla.Channel[pl+0], cla_para.Period,cla_para.Test_flag); CTRL_Run_exe(&ctrlcla.Channel[pl+1], cla_para.Period,cla_para.Test_flag); CTRL_Run_exe(&ctrlcla.Channel[pl+2], cla_para.Period,cla_para.Test_flag); CTRL_Run_exe(&ctrlcla.Channel[pl+3], cla_para.Period,cla_para.Test_flag);
}// if(ctrlcla.TADC_Select==3)ctrlcla.TADC_Select = 0;// else ctrlcla.TADC_Select++; GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1;
}
,
Susan Yang:
一个大的 bin 文件通常是由它中间的一个大洞引起的。通常非常大的未初始化部分(或多个部分)位于该中间地址范围内。也许是堆栈、堆或类似的东西。
一种解决方案是更改段分配给内存的方式,以便所有已初始化的代码段和数据段彼此相邻。
您可以参考下
https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/729970/faq-explain-the-format-of-a-binary-bin-file