This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: CM如何生成bin文件

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"

  • 在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).

  • 我知道是ARM啊,STM的arm就是可以生成bin文件的,在线升级都是用的bin文件

  • 所以您上面语句里是否有修改为armofd 和 armhex?

  •  ARM的已经搞定了看大小对比数据是正常的,为什么CPU的会这么大比FLASH都大

  • ARM的已经搞定了

    CM核也生成bin文件了?

    看大小对比数据是正常的,为什么CPU的会这么大比FLASH都大

    不太理解您的意思

  • CM的bin文件生成的是正常的,CPU生成的的不正常,CPU的BIN文件大小1000K了FLASH才多大?

  •  EE00前都是00

  • CPU的BIN文件大小1000K了FLASH才多大?

    您编译的是自己的程序还是例程?我这边编译的例程104K

  • 关于应用程序占用的memory size,不是看生成的hex/bin文件的大小,而是在.map文件中查看

    您可以使用bin查看工具打开bin文件看看,里面后面大部分内容应该都是0xFF,也就是说生成的bin文件是把整个空间填入的内容,后面全0xFF的空间其实并没有用到

    若是对bin文件大小敏感的话,建议您提高编译器优化等级试试

  • 现在有一个现象在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;

    }

  • 一个大的 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