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.

[参考译文] 编译器/TMS320F28069:生成.bin 文件

Guru**** 2589245 points
Other Parts Discussed in Thread: TMS320F28069

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/807299/compiler-tms320f28069-generation-of-bin-file

器件型号:TMS320F28069

工具/软件:TI C/C++编译器

您好!

实际上、我们需要生成.bin 文件来升级固件。

如何从 CCS IDE 为 TMS320F28069生成.bin 文件。

谢谢、此致、  

Amol

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 有关 工程管理和编译的较大文章的预编译和编译后处理步骤子章节。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../Example_5F00_2806xGpioToggle.zipHi

    我按照程序添加了命令"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtiftFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/ofd2000 ""${CG_TOOL_ROOT}/bin/hex2000 "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin

    但它会创建大小更大的.bin 文件、

    如何减小 bin 文件的大小。 请参阅随附的 bin 文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我看到您的链接器映射文件、我怀疑我能够告诉您发生了什么。  请将其附加到您的下一个帖子。  因此论坛将接受它、请将文件扩展名.txt 添加到其中。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的乔治:

    请找到以下链接器映射文件

    谢谢、此致、

    Amol

    /*
    // TI 文件$Revision:/main/3 $
    //签入$日期:2011年3月3日13:45:53 $
    //######################################################################################################################
    //
    //文件:f28069.cmd
    //
    //标题:F28069器件的链接器命令文件
    //
    //######################################################################################################################
    //$TI 发行版:F2806x 支持库 v2.04.00.00 $
    //$Release Date:Thu OCT 18 15:47:20 CDT 2018 $
    //版权所有:
    //版权所有(C) 2009-2018 Texas Instruments Incorporated - http://www.ti.com/
    //
    //以源代码和二进制形式重新分发和使用,有无
    //如果满足以下条件,则允许进行修改
    //满足:
    //
    //重新分发源代码必须保留上述版权
    //注意、此条件列表和以下免责声明。
    //
    //二进制形式的重新分发必须复制上述版权
    //注意、中的条件列表和以下免责声明
    //随提供的文档和/或其他材料
    //分布。
    //
    //德州仪器公司的名称和的名称都不是
    //其贡献者可用于认可或推广衍生产品
    //未经特定的事先书面许可,从该软件下载。
    //
    //本软件由版权所有者和作者提供
    //“原样”以及任何明示或暗示的保证,包括但不包括
    //限于对适销性和适用性的暗示保证
    //一个特定的目的是免责的。 在任何情况下、版权均不得
    //所有者或贡献者应对任何直接、间接、偶然、
    //特殊、典型或必然的损害(包括但不包括)
    //仅限于采购替代货物或服务;
    //数据或利润;或业务中断)
    //责任理论,无论是合同责任、严格责任还是侵权行为
    //(包括疏忽或其他)以任何方式因使用而产生
    //此软件,即使已被告知可能会发生此类损坏。
    //$
    //######################################################################################################################
    *

    /*===================================================================
    //适用于 Code Composer Studio V2.2和更高版本
    //--------------------------------------------------------
    //除了该内存链接器命令文件外,
    //将头文件链接器命令文件直接添加到工程中。
    //链接时需要标头链接器命令文件
    //将外设结构设置到内部的适当位置
    //存储器映射。
    //
    //在中找到了头文件链接器文件 头文件\cmd
    //
    //对于 BIOS 应用程序添加:F2806x_Headers_BIOS.cmd
    //对于非 BIOS 应用程序添加:F2806x_Headers_nonBIOS.cmd
    =================================================================================================== *

    /*===================================================================
    //对于 V2.2之前的 Code Composer Studio
    //--------------------------------------------------------
    // 1)使用以下-l 语句之一来包含
    //项目中的头链接器命令文件。 头文件链接器
    //将外设结构链接到正确的文件
    //内存映射中的位置*/

    /*取消注释此行以仅包括非 BIOS 应用程序的文件*/
    /*-l F2806x_Headers_nonBIOS.cmd */

    /*取消注释此行以仅包括 BIOS 应用程序的文件*/
    /*-l F2806x_Headers_BIOS.cmd */

    /* 2)在项目中添加路径 头文件\cmd 到
    库搜索路径位于 project->build options、linker tab、
    库搜索路径(-I)。
    /*================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *

    /*定义 F2806x 的内存块开始/长度
    PAGE 0将用于组织程序段
    第1页将用于组织数据段

    注:
    F28069上的存储器块是一致的(也是相同的
    物理存储器)。
    不应该是相同的存储器区域
    同时为 PAGE 0和 PAGE 1定义。
    这样做将导致程序损坏
    和/或数据。

    可组合连续 SARAM 存储器块
    如果需要创建更大的存储器块。
    *

    存储器

    第0页:/*程序内存*/
    /*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
    RAML0:origin = 0x008000、length = 0x000800 //片上 RAM 块 L0 */
    RAML1:origin = 0x008800,length = 0x000400 //片上 RAM 块 L1 */
    OTP:origin = 0x3D7800,length = 0x000400 //片上 OTP */

    FLASHH:origin = 0x3D8000,length = 0x004000 //片上闪存*/
    FLASHG:origin = 0x3DC000、length = 0x004000 //片上闪存*/
    FLASHF:origin = 0x3E0000,length = 0x004000 //片上闪存*/
    FLASHE:origin = 0x3E4000、length = 0x004000 //片上闪存*/
    FLASHD:origin = 0x3E8000、length = 0x004000 //片上闪存*/
    FLASHC:origin = 0x3EC000,length = 0x004000 //片上闪存*/
    FLASHA:origin = 0x3F4000,length = 0x003F80 //片上闪存*/
    csm_RSVD:origin = 0x3F7F80,length = 0x000076 // FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
    begin:origin = 0x3F7FF6,length = 0x000002/* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
    CSM_PWL_P0:origin = 0x3F7FF8,length = 0x000008 // FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/

    FPUTABLES:origin = 0x3FD590,length = 0x0006A0 //引导 ROM 中的 FPU 表*/
    IQTABLES:origin = 0x3FDF00,length = 0x000B50 //引导 ROM 中的 IQMath 表*
    IQTABLES2:origin = 0x3FEA50,length = 0x00008C //引导 ROM 中的 IQMath 表*
    IQTABLES3:origin = 0x3FEADC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/

    ROM:origin = 0x3FF3B0,length = 0x000C10 //引导 ROM */
    复位:origin = 0x3FFFC0,length = 0x000002 //引导 ROM 的部分*/
    向量:origin = 0x3FFFC2,length = 0x00003E //引导 ROM 的部分*/

    第1页:/*数据存储器*/
    /*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
    /*寄存器保留在第1页中*/

    BOOT_RSVD:origin = 0x000000,length = 0x000050 // M0的一部分,引导 ROM 将此用于栈*/
    RAMM0:origin = 0x000050、length = 0x0003B0 //片上 RAM 块 M0 *
    RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
    RAML2:origin = 0x008C00,length = 0x000400 //片上 RAM 块 L2 */
    RAML3:origin = 0x009000,length = 0x001000 //片上 RAM 块 L3 */
    RAML4:origin = 0x00A000、length = 0x002000 //片上 RAM 块 L4 */
    RAML5:origin = 0x00C000、length = 0x002000 //片上 RAM 块 L5 */
    RAML6:origin = 0x00E000、length = 0x002000 //片上 RAM 块 L6 */
    RAML7:origin = 0x010000、length = 0x002000 //片上 RAM 块 L7 */
    RAML8:origin = 0x012000,length = 0x002000 //片上 RAM 块 L8 */
    USB_RAM:origin = 0x040000、length = 0x000800 // USB RAM *
    FLASHB:origin = 0x3F0000,length = 0x004000 //片上闪存*/

    /*将段分配给内存块。
    注:
    DSP28_CodeStartBranch.asm 中用于重定向代码的 codestart 用户定义段
    闪存时执行
    ramfuncs 用户定义的段来存储将从闪存复制到 RAM 中的函数
    *


    部分

    /*分配计划领域:*/
    .cinit:> FLASHH,PAGE = 0
    .pinit:> FLASHH,PAGE = 0
    .text:> FLASHH,PAGE = 0
    codestart:> begin,page = 0
    ramfuncs:load = FLASHD,
    运行= RAML0、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    load_size (_RamfuncsLoadSize)、
    PAGE = 0

    csmpasswds:>csm_PWL_P0,page = 0
    csm_rsvd:>csm_RSVD,page = 0

    /*分配未初始化的数据段:*/
    .stack:>RAMM0,page = 1.
    .ebss:> RAML4,PAGE = 1
    .esysmem:>RAML2,page = 1.
    .cio:>RAML5,page = 1.

    /*闪存中的初始化段*/
    /*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
    econst:> FLASHH,PAGE = 0
    .switch:>FLASHH,PAGE = 0

    /*分配 IQ 数学区域:*/
    IQMath:> FLASHH,PAGE = 0 //*数学代码*/
    IQmathTables :>IQTABLES,PAGE = 0,TYPE = NOLOAD

    /*分配 FPU 数学区域:*/
    FPUmathTables:> FPUTABLES,PAGE = 0,TYPE = NOLOAD

    DMARAML5:>RAML5,PAGE = 1
    DMARAML6:>RAML6,PAGE=1
    DMARAML7:>RAML7,PAGE=1
    DMARAML8:>RAML8,PAGE = 1

    /*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables2:> IQTABLES2,PAGE = 0,TYPE = NOLOAD

    IQMath.lib (IQmathTablesRam)


    *
    /*如果调用 IQNasin ()或 IQasin (),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables3:> IQTABLES3,PAGE = 0,TYPE = NOLOAD

    IQMath.lib (IQmathTablesRam)


    *

    /*.reset 是编译器使用的标准段。 它包含*/
    /* C 代码_c_int00起始地址。 /*
    /*当使用引导 ROM 时,此部分和 CPU 矢量*/
    /*不需要表。 因此、默认类型设置为*/
    /* DSECT */
    .reset:> reset,page = 0,type = DSECT
    VECTORS:> VECTORS,PAGE = 0,TYPE = DSECT

    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    遗憾的是、您发送了链接器命令文件、该文件与链接器映射文件不同。  链接器命令文件是链接的重要输入。  链接器映射文件是链接的输出。  它是一个文本文件、其中显示了如何构建段并将其分配给存储器。  在 CCS 工程中、链接器映射文件与工程具有相同的名称、扩展名为.map。  它位于 Debug 目录中、或当前编译配置的名称。

    请找到链接器映射文件、添加文件扩展名.txt、并将其附加到您的下一篇文章中。  请勿在帖子中直接复制并粘贴文件内容。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请按照上一帖子中所述提交链接器映射文件。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的乔治:

    感谢您的意见,

    当我使用 共轭存储器位置更改链接器 cmd 文件时,它解决了我的问题,并使用链接器映射文件进行了验证。

    谢谢、此致、

    Amol