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.

[参考译文] TMS320F280049C:Uniflash 的 CCS 输出格式

Guru**** 2460950 points
Other Parts Discussed in Thread: UNIFLASH, TMS320F28035

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1499887/tms320f280049c-ccs-output-format-for-uniflash

器件型号:TMS320F280049C
Thread 中讨论的其他器件:UNIFLASHTMS320F28035

工具/软件:

您好、

我正在使用 Uniflash 成功刷写器件、可以通过调试器验证刷写的映像、所有操作都正常。

以上所有内容均使用默认文件格式".out"。  

我希望从 CCS 生成一个".hex"文件以供 Uniflash 使用、但在多次尝试后、我询问了帮助。

我尝试了所有可能的格式从 CCS ( ihex , m2, m3, tihex ,..)但所有失败。

这是根本不可能的吗?

提前感谢。

Luca Pizzini

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

    您好、Luca :通过启用 C2000 Hex 实用程序并在 build->steps 类别中添加编译后处理步骤、可以在 CCS 中生成".hex"格式以供 Uniflash 使用:

    "${CG_TOOL_HEX}""${BuildArtifactFileName}"-boot -sci8 -a -o "${BuildArtifactFileBaseName}.txt"

    另外、 C2000微控制器 ROM 引导加载程序的串行闪存编程部分中也提到了这一行、以供参考。

    这样、您应该能够 通过 UniFlash 加载.hex 文件。

    谢谢。此致、

    Charles

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

    您好 Charles、

    我尝试了你的建议,但失败了,抱歉。 我错了吗?

    在这里选择 CCS 设置后、我添加了编译后处理的最上面一行。 我必须删除其余部分吗?

    这是 Uniflash 的第一个字节/字错误。

    这里是我从 CCS 获得的文件。

    使用.out 文件时一切都可以正常工作。 也许我不明白。

    等待您的指导、

    此致

    Luca.

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

    尊敬的 Luca:

    选中 bin 框时、可能是 UniFlash 需要(*。bin)文件。 修改工程属性所需的步骤更少、使用十六进制实用程序还会添加构建步骤字符串。 我们的理解是十六进制实用程序生成--map 输出代码和其他编译后十六进制输出格式。 UniFlash 转到工程属性将添加到"CCS 编译步骤"选项卡、将编译步骤条目发布到字符串下方。 似乎调用另一个复选框(创建容器输出)可能必须在项目属性中的某个位置进行检查。 几个月前使用 C2000 MCU 测试了该字符串、似乎可以正常使用。

     "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armofd "${CG_TOOL_ROOT}/bin/armhex "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin

    稍后修改:

    "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe "${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CCS_TOOL_ROOT}/bin/hex2000.exe "${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe

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

    尊敬的 Gentaco:

    我不明白你的意思。 现在我尝试生成一个 bin 文件。 我在十六进制实用程序部分中找到一种出纸槽格式、但未能在闪存上进行验证。

    十六进制实用程序是否有问题?

    我的目标是(最好有)生成一个易于读取、存储和比较的文本输出文件。

    例如、我想使用 Intel HEX 格式或 Motorola Srec 等

    是否有一种方法(希望简单的方法)可以做到这一点?

    为了更好地解释我的目标:使用较旧的 TMS320F28035、我们使用一款口渴的编程器 Elprotronic 生成.hex 文件并在生产线上对闪存进行编程。 但它不支持 F280049。 因此、现在我将与 Uniflash 一起使用 olimex (XDS100v3 USB Debug Probe)、它可以正常工作、但只能使用 CCS 中的.out 文件。

    谢谢你

    Luca.

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

    在应用程序正在运行时、UniFlash 加载二进制文件并显示存储器部分警告。

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

    感谢 Gentaco、

    因此、我知道无法获得任何文本格式、例如:Intel hex 或 srec o ti.txt 等

    我是对的吗?

    Luca.

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

    你好 Luca 尝试 ASCII 文件格式。?

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

    尊敬的 Luca:

    如 Genatco 所述、选择图像进行 CPU 加载后、您是否无法取消选中"Binary"复选框? 以及将文件格式更改为 .txt 格式

    谢谢。此致、

    Charles

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

    编译器 ofd2000.exe 和 hexC2000.exe 似乎仅支持根据 tiobj2bin.bat 文件 REM 文本进行的 COF 构建。 然而、编译后选项字符串为 EABI 生成*。bin 文件、但不会从用于 UniFlash 的*。out 文件所在的 CODE_START 地址(0x00081000)启动。 *。bin 似乎缺少 x49c_flash_cpu.cmd 文件中详述的更高闪存地址数据。 似乎、应用程序需要图像符号才能正常运行几个#pragma SECTIONS EABI 编译版本。 这种相同的十六进制*。bin 构建方法非常适合使用#pragma 数据段的 ARM Cortex 构建。 看似 mkhex4bin.exe 需要更新才能处理 EABI C2000构建。

    "${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

    似乎 UniFlash *。bin 写入实际上失败了、或者 ofdArm.exe 以某种方式用于 C2000 MCU 十六进制构建、有疑问!  

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

    是的、我可以选中并取消选中"二进制"标志、但选中为二进制时、我必须将起始地址设置为0x80000并无法验证(我没有对闪存重新编程)。

    但这太复杂了。

    我尝试了所有可用的格式没有成功,现在我放弃了。

    因此、我将继续使用 image.out 文件格式 关闭此问题。

    感谢您的尝试

    此致

    Luca.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此我将继续使用 image.out 文件格式 关闭此问题

     看似 Sys-Config 资源使生成 POST 二进制输出变得更加复杂。 即使下面的十六进制实用程序指令设置为 false、UniFlash 似乎也会组合二进制文件的闪存部分。 符号似乎应该包含在映像文件中、而不是选择 General 页上的 image mode 复选框、否则必须设置编译器错误 ROM 指令。 但是、链接器指令中已经存在(--rom_model)则没有意义。

     似乎在使用 Hex 实用程序创建 C2000二进制文件时、我们不需要添加编译后处理步骤。 十六进制实用程序可以生成二进制映像中 CMD 段的映射文件、例如 C:\MyDocuments\MyHex.map 文件。 UniFlash 将二进制文件转换为相同地址*。out 时显示为 Verbose、通常、*。out 文件的代码起始地址为0x00081000。 无论是否有符号、都不会发生软复位闪存引导。

    很高兴获得二进制文件来与 UniFlash x49c MCU 配合使用。 code_start 为二进制文件失败:jmp _c_Init、main.c 将永远不会执行。

    构建辅助目标:"is16_x49c_umcsdk_v5.03.bin"
    调用:C2000 Hex 实用程序
    "c:/ti/ccs1220/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/bin/hex2000 --entrypoint=code_start --linkerfill --map="C:/Users/WIN7/Documents/CCS12.2_WorkSpace/is16_x49c_umcsdk_v5.03/Flash_lib_DRV8320RS/c2000_hex_binary.map --diag_swrap=off --binary --load_image --load_image:combine_sections=false --load_image:endian=little --load_image:file_type=executable --load_image
    正在转换为加载图像格式...
    "is16_x49c_umcsdk_v5.03.out" codestart ==>codestart
    "is16_x49c_umcsdk_v5.03.out".text =>.text
    "is16_x49c_umcsdk_v5.03.out".TI.ramfunc =>.TI.ramfunc
    "is16_x49c_umcsdk_v5.03.out".const =>.const
    "is16_x49c_umcsdk_v5.03.out".cinit =>.cinit
    已完成二级目标的构建:"is16_x49c_umcsdk_v5.03.bin"

    警告:使用--load_image 时-memwidth 无效(忽略)

    ********************************************************************************
    TMS320C2000 Hex Converter                                                v21.6.0
    ********************************************************************************
    
    INPUT FILE NAME: <is16_x49c_umcsdk_v5.03.out>
    OUTPUT FORMAT:   Load Image
    
    PHYSICAL MEMORY PARAMETERS
       Default data width   :  16
       Default memory width :   8 (LS-->MS)
       Default output width :   8
    
    OUTPUT FILE: is16_x49c_umcsdk_v5.03.bin
    
    OUTPUT TRANSLATION MAP
    --------------------------------------------------------------------------------
    00000800..0000088b  Page=0  Memory Width=16  ROM Width=16  "hal_data"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: hal_data
    --------------------------------------------------------------------------------
    00000918..00000997  Page=0  Memory Width=16  ROM Width=16  ".bss"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .bss
    --------------------------------------------------------------------------------
    00000a18..00000ac4  Page=0  Memory Width=16  ROM Width=16  ".data"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .data
    --------------------------------------------------------------------------------
    0000e800..0000e875  Page=0  Memory Width=16  ROM Width=16  "AdcaRegsFile"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: AdcaRegsFile
    --------------------------------------------------------------------------------
    00010000..000100a1  Page=0  Memory Width=16  ROM Width=16  ".TI.noinit"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .TI.noinit
    --------------------------------------------------------------------------------
    0001a000..0001a2cf  Page=0  Memory Width=16  ROM Width=16  "foc_data"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: foc_data
    --------------------------------------------------------------------------------
    0001a600..0001a71d  Page=0  Memory Width=16  ROM Width=16  "user_data"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: user_data
    --------------------------------------------------------------------------------
    0001c000..0001c5a7  Page=0  Memory Width=16  ROM Width=16  "est_data"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: est_data
    --------------------------------------------------------------------------------
    0001e000..0001efff  Page=0  Memory Width=16  ROM Width=16  ".stack"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .stack
    --------------------------------------------------------------------------------
    00100000..00100001  Page=0  Memory Width=16  ROM Width=16  "codestart"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: codestart
       CONTENTS: 00100000..00100001   is16_x49c_umcsdk_v5.03.out(codestart) Data Width=2   
    
    --------------------------------------------------------------------------------
    00102000..0010a3d9  Page=0  Memory Width=16  ROM Width=16  ".text"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .text
       CONTENTS: 00102000..0010a3d9   is16_x49c_umcsdk_v5.03.out(.text) Data Width=2   
    
    --------------------------------------------------------------------------------
    001127c0..0011442f  Page=0  Memory Width=16  ROM Width=16  ".TI.ramfunc"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .TI.ramfunc
       CONTENTS: 001127c0..0011442f   is16_x49c_umcsdk_v5.03.out(.TI.ramfunc) Data Width=2   
    
    --------------------------------------------------------------------------------
    001160a0..0011742d  Page=0  Memory Width=16  ROM Width=16  ".const"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .const
       CONTENTS: 001160a0..0011742d   is16_x49c_umcsdk_v5.03.out(.const) Data Width=2   
    
    --------------------------------------------------------------------------------
    001187c0..00118863  Page=0  Memory Width=16  ROM Width=16  ".cinit"
    --------------------------------------------------------------------------------
       OUTPUT SECTION: .cinit
       CONTENTS: 001187c0..00118863   is16_x49c_umcsdk_v5.03.out(.cinit) Data Width=2   
    

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

    您好 Gentaco,感谢您的帮助。

    我已将"Hex Utility"配置为您的映像。

    结果:成功。

    CCS 现在生成两个文件:.out (380K)和.hex (129K)。

    两个文件都可以通过 Uniflash 对闪存进行编程。

    但是

    hex 文件是一个比.out 文件小的二进制文件、因此在我看来几乎是一样的。

    你怎么看?

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

    尊敬的 Gentaco:

    通过 Uniflash 编程后、我的应用似乎运行良好。

    但明天我们将关闭约2周。

    我想知道这种问题是否仅在 F280049或整个 C2000系列中存在?

    我希望新版本的 CCS 能够 为像我这样的用户轻松解决所有这些问题。  

    我是说使用简单的 GUI 设置。

    我会在2周内回来的。

    此致

    Luca Pizzini

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

    尊敬的 Luca:

    很高兴听到、我们将与我们的团队一起考虑这一点。 同时感谢 Genatco 帮助解决该问题。  

    此致、

    Charles