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.

[参考译文] TMS320F280041:将 hex.cmd 实用程序文件添加到 C2000 Hex 生成工具时出现问题

Guru**** 2562250 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1569107/tms320f280041-problems-adding-hex-cmd-utility-file-to-c2000-hex-generation-tool

器件型号:TMS320F280041
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

TI 团队大家好、

我正在尝试指定编译后处理步骤以生成所需的.hex 文件。 为此、我遵循了以下文章的提示: TMS320F28379D:CCS V20 Hex Utility 命令行模式 — C2000 微控制器论坛 — C2000Tm μ︎ 微控制器 — TI E2E 支持论坛

我将添加以下编译后处理步骤: “${CG_TOOL_HEX}““${BuildArtifactFileName}“@${ProjDirPath}/hexUtility.cmd -o “${BuildArtifactFileBaseName}.hex“。

我创建了以下 hexUtility.cmd 文件:  

--intel
--fill=0xFFFF
--image
--memwidth=16
--romwidth=16
--diag_wrap=off

ROMS
{
    FLASH: origin=0x80000, length=0x10000, fill=0xFFFF
}
我还确保在工程属性中正确禁用了 C2000 Hex 实用程序。
hexUtility.cmd 位于{ProjDirPath}中。
Out 构建成功、但在运行 C2000 Hex Utility 时收到以下错误:  
Out 构建成功、但在运行 C2000 Hex Utility 时收到以下错误:


[271]“C:/TI/ccs2020/ccs/tools/compiler/ti-cgt-c2000_22.6.2.LTS/bin/hex2000 ““project-name.out"@“@C:\Users\Martin.blochre\workspace_ccstheia\project-name/hexUtility.cmd -o “project-name.hex"</s>“

[272]致命错误:无法打开输入文件
[273]“@C:\Users\Martin.blochre\workspace_ccstheia\project-name/hexUtility
[274].cmd“:参数无效
[275]gmake[2]:[Makefile:275:post-build]错误 1(已忽略)
[276]*****构建完成****
您是否知道错误为什么会发生? 为什么它不能 打开输入文件?
谢谢、
Martin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]我要添加以下编译后处理步骤: “${CG_TOOL_HEX}““${BuildArtifactFileName}“@${ProjDirPath}/hexUtility.cmd -o “${BuildArtifactFileBaseName}.hex“。

    我在 cmd 文件的路径之前看到一个“@“字符。 这是个拼写错误吗?

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

    是的,我的错很抱歉,它现在正在工作。 但是、我遇到了另一个问题、我尝试生成两个.hex 文件。 一个负责 OTP BANK0、另一个负责闪存 BANK0。 为此、我知道有两个编译后处理指令、每个指令一个负责。 闪存 BANK0 可正常运行。 但是、对于 OTP、我将运行以下.cmd:

    --intel
    --fill=0xFFFF
    --image
    --memwidth=16
    --romwidth=16
    
    ROMS
    {
        OTP_Z1: origin=0x78000, length=0x400, fill=0xFFFF
    }

    负责此代码闪存区域的汇编代码如下:

         .sect "dcsm_otp_z1_pswdlock"
          .retain
          .long 0xFB7FFFFF
          .long 0x7FFFFFFF     ;Reserved
          
         .sect "dcsm_otp_z1_crclock"
          .retain
          .long 0x4BFFFFFF
          .long 0x3FFFFFFF     ;Reserved
       
         .sect "dcsm_otp_z1_jtaglock"
          .retain
          .long 0x9FFFFFFF
          .long 0x0FFFFFFF     ;Reserved
         .sect "dcsm_otp_z1_gpreg"
          .retain
          .long 0x5AFFFFFF     ;Z1OTP_BOOTPIN_CONFIG
          .long 0x5AFFFFfF     ;Z1OTP_GPREG2
         .sect "dcsm_otp_z1_bootctrl"
          .retain
          .long 0xFFFFFF03     ;Z1OTP_BOOTDEF_LOW
          .long 0xFFFFFFFF     ;Z1OTP_BOOTDEF_HIGH

    我想更改我的.cmd 以仅对扇区进行编程: dcsm_OTP_Z1_pswdlock 、dcsm_OTP_Z1_crclock 、dcsm_OTP_Z1_jtaglock、 dcsm_OTP_Z1_gpreg 和 dcsm_OTP_Z1_bootctrl。  其余内容保持不变、除非我在 UNIFLASH 上看到以下错误: [ERROR] C28xx_CPU1:闪存编程期间出现错误。 地址 0x00078000、FMSTAT(某些器件上为 STATCMD)0x00000030。

    在插入以下 syscfg 配置时、会自动生成汇编代码:

    是否可以生成.hex、它只会更改上述段? 如果是、如何实现? 也许通过.cmd?

    非常感谢您的快速响应:)

    您好、

    Martin  

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

    对于这个问题、我将推迟到编译器(十六进制实用程序)专家。 我将提请他们注意这一问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以生成.hex、它只会更改上述部分?

    是的。  使用 很重要 指令而不是 ROM 指令。  请在 C28x 汇编工具手册 中搜索 短语 十六进制转换实用程序 SECTIONS 指令

    谢谢。此致、

    -乔治