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.

[参考译文] TMS320F280041C:hex2000实用程序二进制输出文件和选项选择

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1065614/tms320f280041c-hex2000-utility-binary-output-file-and-options-selection

器件型号:TMS320F280041C

我需要创建一个二进制文件供自定义引导加载程序使用。 我已经阅读了十六进制实用程序手册的第12节、但我仍然觉得很愚蠢。 它具有如此多的选项、我不知道我是否选择了正确的选项。

下面的第一个图像是 CCS 调试器加载的闪存。 下面的第二个图像显示了我在工程属性中选择的实用程序选项。 下面的第三个图像是 CCS/hex2000生成的二进制文件。 (我的十六进制编辑器以字节为单位显示大小、不在 uint16_t 中)出于某种原因、它不包含 FFFF FFFF。 否则、值相同。 可能缺少另一个 FFFF FFFF、因为二进制文件的大小小于 uint16_t 的4 我是否为该实用程序选择了正确的选项? 由于 CCS 调试器、二进制文件是否正确且我看到 FFFF FFFF? 如果没有、我需要做什么?

Alex

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

    Alex、

    您的链接器 cmd 文件中是否包含 PAGE 0和 PAGE 1? 如果是、填充值可能会进入第1页的十六进制输出。

    请检查。

    谢谢、此致、
    Vamsi

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

    您好、Vamsi、

    下面是 *。cmd 文件。 你能告诉我该怎么办吗?

    存储器

    第0页:
    /* begin 用于"引导至闪存"引导加载程序模式*/
    // Alex Begin:origin = 0x080000,length = 0x000002
    开始:origin = 0x085000,length = 0x000002
    复位:origin = 0x3FFFC0,length = 0x000002

    PATCH_EST_Angle_run_patchable_address:origin = 0x009000,length = 0x00000e
    PATCH_EST_Dir_run_patchable_address:origin = 0x00900e,length = 0x00000e
    PATCH_EST_EAB_RUN_patchable_address:origin = 0x00901c,length = 0x00000e
    PATCH_EST_Flux_AB_estFluxDot_patchable_address:origin = 0x00902a、length = 0x00000e
    PATCH_EST_Flux_DQ_RUN_patchable_address:origin = 0x009038,length = 0x00000e
    PATCH_EST_Flux_run_patchable_address:origin = 0x009046,length = 0x00000e
    PATCH_EST_Freq_run_patchable_address:origin = 0x009054,length = 0x00000e
    PATCH_EST_IAB_RUN_patchable_address:origin = 0x009062,length = 0x00000e
    patch_EST_idq_run_patchable_address:origin = 0x009070,length = 0x00000e
    patch_EST_LS_run_patchable_address:origin = 0x00907e,length = 0x00000e
    PATCH_EST_OneOverDcBus_run_patchable_address:origin = 0x00908c,length = 0x00000e
    PATCH_EST_RR_RUN_patchable_address:origin = 0x00909a,length = 0x00000e
    PATCH_EST_RsOnLine_run_patchable_address:origin = 0x0090a8,length = 0x00000e
    PATCH_EST_Rs_run_patchable_address:origin = 0x0090b6,length = 0x00000e
    PATCH_EST_VAB_RUN_patchable_address:origin = 0x0090c4,length = 0x00000e
    PATCH_EST_Vdq_run_patchable_address:origin = 0x0090d2,length = 0x00000e
    PATCH_EST_runEst_patchable_address:origin = 0x0090e0,length = 0x00000e

    // Alex RAMGS1_3:origin = 0x00E000,length = 0x006000
    RAMGS1_3:origin = 0x00E000、length = 0x005FE0
    RAMGS_BOOT:origin = 0x013FF0,length = 0x000004

    RAMLS4_7:origin = 0x00A000、length = 0x002000

    // Alex FLASHB0_SA:origin = 0x080002,length = 0x00FFFE //片上闪存*
    FLASHB0_SA:origin = 0x085002,length = 0x00AFFE //片上闪存*/
    FLASHB1_SA:origin = 0x090000,length = 0x010000 //片上闪存*/


    第1页:
    BOOT_RSVD:origin = 0x000002,length = 0x0000F3 // M0的一部分,引导 ROM 将此用于栈*/
    RAMM0:origin = 0x0000F5,length = 0x00030B
    RAMM1:origin = 0x000400,length = 0x000400

    /* CLA1:origin = 0x001400,length = 0x000080 */*在头命令文件中定义*/

    RAMGS0_A:origin = 0x00C000、length = 0x002000

    RAMLS0_1:origin = 0x008000、length = 0x001000 //无法使用,为快速对象保留*/
    RAMLS2_3:origin = 0x009100,length = 0x000F00 /*

    CLA1MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1MSGRAMHIGH:origin = 0x001500,length = 0x000080

    部分

    .TI.ramfunc:load = FLASHB0_SA,
    运行= RAMLS4_7、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)


    codestart:> begin,page = 0,align (4)
    .text:> FLASHB0_SA,PAGE = 0,ALIGN (4)
    .cinit:> FLASHB0_SA,page = 0,align (4)
    .pinit:> FLASHB0_SA,PAGE = 0,ALIGN (4)
    .switch:> FLASHB0_SA,PAGE = 0,ALIGN (4)
    .econst:> FLASHB0_SA,PAGE = 0,ALIGN (4)

    .reset:> reset,page = 0,type = DSECT
    .cio:>RAMLS4_7,page = 0
    .stack:>RAMM0,page = 1.
    .ebss:> RAMGS0_A,PAGE = 1
    .esysmem:>RAMGS0_A,PAGE = 1.

    /* Cla1RegsFile:> CLA1,page = 1 */*在.cmd 文件的头文件中定义

    .bss_cla:> RAMLS2_3,page = 1.

    Cla1Prog:> FLASHB0_SA,
    运行= RAMLS4_7、
    Load_start (_Cla1ProgLoadStart)、
    run_start (_Cla1ProgRunStart)、
    load_size (_Cla1ProgLoadSize)、
    PAGE = 0、ALIGN (4)

    Cla1Prog2:> FLASHB0_SA,
    运行= RAMLS4_7、
    Load_start (_Cla1Prog2LoadStart)、
    run_start (_Cla1Prog2RunStart)、
    load_size (_Cla1Prog2LoadSize)、
    PAGE = 0、ALIGN (4)

    Cla1ToCpuMsgRAM:> CLA1MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1MSGRAMHIGH,PAGE = 1.

    .CONST_CLA:> FLASHB0_SA、
    运行= RAMLS4_7、
    run_start (_Cla1ConstRunStart)、
    Load_start (_Cla1ConstLoadStart)、
    load_size (_Cla1ConstLoadSize)、
    PAGE = 0

    暂存区:>RAMLS2_3, page = 1.

    BOOT_DATA:> RAMGS_BOOT

    PATCH_EST_Angle_run_patchable_section:> PATCH_EST_Angle_run_patchable_address,page = 0
    patch_EST_Dir_run_patchable_section:> patch_EST_Dir_run_patchable_address,page = 0
    PATCH_EST_EAB_RUN_patchable_section:> PATCH_EST_EAB_RUN_PATCHable_ADDRESS,PAGE = 0
    PATCH_EST_Flux_AB_estFluxDot_patchable_section:> PATCH_EST_Flux_AB_estFluxDot_patchable_address、page = 0
    PATCH_EST_Flux_DQ_run_patchable_section:> PATCH_EST_Flux_DQ_run_patchable_address,page = 0
    PATCH_EST_Flux_run_patchable_section:> PATCH_EST_Flux_run_patchable_address,page = 0
    patch_EST_Freq_run_patchable_section:> patch_EST_Freq_run_patchable_address,page = 0
    PATCH_EST_IAB_RUN_PATCHABLE 部分:> PATCH_EST_IAB_RUN_PATCHABLE 地址,PAGE = 0
    patch_EST_idq_run_patchable_section:> patch_EST_idq_run_patchable_address,page = 0
    patch_EST_LS_run_patchable_section:> patch_EST_LS_run_patchable_address,page = 0
    PATCH_EST_OneOverDcBus_run_patchable_section:> PATCH_EST_OneOverDcBus_run_patchable_address,page = 0
    PATCH_EST_RR_RUN_patchable_section:> PATCH_EST_RR_RUN_PATCHable_address,page = 0
    PATCH_EST_RsOnLine_run_patchable_section:> PATCH_EST_RsOnLine_run_patchable_address,page = 0
    PATCH_EST_Rs_run_patchable_section:> PATCH_EST_Rs_run_patchable_address,page = 0
    PATCH_EST_VAB_RUN_patchable_section:> PATCH_EST_VAB_RUN_patchable_address,page = 0
    PATCH_EST_Vdq_run_patchable_section:> PATCH_EST_Vdq_run_patchable_address,page = 0
    patch_EST_runEst_patchable_section:> patch_EST_runEst_patchable_address,page = 0

    部分

    SYSCTRL_DATA:> RAMM1 | RAMLS2_3,PAGE = 1
    CTRL_DATA:> RAMM1 | RAMLS2_3,PAGE = 1
    EST_DATA:> RAMGS0_A,PAGE = 1

    部分

    dataalog_data:> RAMGS0_A,page = 1.
    graph_data:> RAMGS0_A,page = 1.

    Alex

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

    Alex、

    我将在下周(1月4日或5日)回顾并返回给您。

    谢谢、此致、
    Vamsi

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

    Alex、

    我在链接器 cmd 文件的第1页中没有看到任何闪存空间;因此、单独的第1页 hex 文件可能不是问题。

    如果我理解正确、您想为任何未使用的闪存位置填充0xFFFF -这是正确的吗?

    如果是、

    (i)您可以将其填入链接器命令文件本身。   下面是示例。  您可以针对在链接器 cmd 文件中定义的所有闪存地址范围执行此操作。

      闪存:origin = 0x090000、length = 0x002000、fill=0xFFFF

      如需更多信息、请参阅  https://www.ti.com/lit/pdf/spru513中的 MEMORY 指令第8.5.4节

    (二)还有另一种方法。  使用 CCS 对闪存进行编程后、您可以从 CCS 存储器窗口下载二进制文件。   单击存储器窗口中的绿色按钮(下面以黄色突出显示)、将中的存储器内容导出为 二进制文件; 稍后、您可以使用该文件再次对闪存进行编程。

    如果要使用十六进制工具方法来填充未使用的空间、我需要将您路由到我们的编译器团队。  请告诉我。

    谢谢、此致、
    Vamsi

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

    Alex、

    当我看到您的配置填充0xFF (在他添加的图像中)时、我认为目的是填充未使用的位置。   

    如果您想知道 它们是否被擦除未使用的位置、可以使用链接器命令文件中的"填充"选项来填充除0xFFFF 以外的内容。  填充后、如果十六进制输出显示填充配置值、 则很容易与 CCS 存储器窗口内容匹配。

    还有一点:我注意到链接器 cmd 文件中的入口点不是 TRM 中列出的入口点之一(请参阅下面的)。  请检查。

    谢谢、此致、
    Vamsi

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

    从引导 ROM 到我的自定义引导加载程序的入口点是0x00080000、它将跳转到位于0x00085000的主应用程序。 它可以正常工作、不是问题。 我现在确实使用了将内存保存到二进制文件、但我认为该实用程序可以在不执行此额外步骤的情况下执行该操作。

    我想您对 HEX2000实用程序的问题有误解。 填充选项与问题无关。 我不关心未使用的位置是否已填充、或者不关心电机是否在旋转。  HEX2000实用程序创建的文件不会旋转电机、它与微型存储器中的文件不同。 地址0x85002处的存储器具有0xFFFF、二进制文件具有0x761B、依此类推。 如果入口点地址导致此问题、我将对其进行更改。 只需告诉我具体的更改内容和更改位置。  

    Alex

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

    Alex、

    当然、如果这是从自定义引导加载程序到应用程序的入口位置、则没关系。   入口点注释与二进制讨论无关;我提到过它、就像我注意到的那样。   

    关于二进制输出: 二进制文件仅包含一个段、并在提供的地址加载。  因此、如果您不使用某个值填充未使用的位置、则会在错误的地址加载第二个段之后的二进制数据。  我想您知道这一点、因此您填充了0xF。  希望您现在了解我为什么提出这一建议。

    谢谢、此致、
    Vamsi

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

    我现在与我们的编译器团队交谈了。   

    他们建议使用  tiobj2bin 而不是 hex2000实用程序来创建二进制文件: 请参阅 http://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_project-management.html?highlight=tiobj2bin#pre-and-post-build-steps 

    我将此帖子分配给了我们的编译器团队-如果您有进一步的问题、他们可以为您提供帮助。

    谢谢、此致、

    Vamsi

    http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_an_introduction_to_binary_files.html 

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

    项目名称 是 is07_speed_control_sensored。 我希望二进制文件具有相同的名称。 我在编译后处理框中放入了什么确切的文本?

    Alex

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

    Alex、

    希望您对0xF 的问题现在已经结束。

    我们的编译器团队将为您提供进一步的帮助。

    谢谢、此致、

    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="428443" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1065614/tms320f280041c-hex2000-utility-binary-output-file-and-options-selection/3949119#3949119"]项目名称是 is07_sensored_controls。 我希望二进制文件具有相同的名称。 我在编译后框中放入了什么确切的文本?

    建议的案文是...

    "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000" "${CG_TOOL_ROOT}/bin/hex2000" "${CCS_INSTALL_ROOT}/utils/tiobj3bin/mkhex4bin"

    这是对 Windows 批处理文件的调用。  第一部分是批处理文件的名称。  其余是批处理文件的参数。  第二个参数指定二进制文件的名称。  现在、您以 name_of _project.bin 结束。  这足够好了吗?

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    这是命令的结果:

    “C:/ti/ccs920/ccs/utils/tiobj2bin/ tiobj2binâ€? “is07速度控制传感 outâ€? “is07速度控制传感 binâ€? “C:/ti/ccs920/ccs/tools/compiler/ti-cgt-C2000_20.2.4.sps/bin/ ofd2000â€? “C:/ti/ccs920/ccs/tools/compiler/ti-cgt-C2000_20.2.4.sps/bin/ hex2000â€? “C:/ti/ccs920/ccs/utils/tiobj2bin/ mkhex4binâ€?
    Makefile:256:目标"编译后"的配方失败
    Process_begin:CreateProcess (NULL、“C:/ti/ccs920/cs/utils/tiobj2bin/ tiobj2binâ€? “is07速度控制传感 outâ€? “is07速度控制传感 binâ€? “C:/ti/ccs920/ccs/tools/compiler/ti-cgt-C2000_20.2.4.sps/bin/ ofd2000â€? “C:/ti/ccs920/ccs/tools/compiler/ti-cgt-C2000_20.2.4.sps/bin/ hex2000â€? “C:/ti/ccs920/ccs/utils/tiobj2bin/ mkhex4binâ€?...) 失败。

    gmak[2]:[编译后处理]错误2 (忽略)

    有什么想法吗?

    Alex

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

    粘贴在编译后命令和系统响应中时出现问题。  我看不清楚。  请重试。  在 CCS 的"Console"视图中、使用 "Copy Build Log" 图标将所有内容保存到文本文件中。 确保使用文件扩展名.txt。 然后将该文本文件附加到您的下一个帖子。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    我尝试了。 结果是相同的。 此网站不允许我附加文件。

    您是否有 Windows10计算机? 它是否可以在该计算机上工作? 我是否需要删除引号?

    Alex

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

    有关将文件附加到论坛帖子的详细信息、请参阅 此常见问题解答。

    引号字符可能是问题所在。  请查看 此论坛主题是否 有帮助。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    我的最后一个问题是一个技巧问题。 我在上一篇帖子之前删除了所有引号、但它确实起作用了。 我只是想了解 TI 员工在为问题提供"解决方案"之前是否验证他们的建议是否有效。 现在、我看到大家只需搜索 TI 网页和/或数据库、看看是否有任何结果、而不是开发经过验证的解决方案。 我不知道你得到的积分是多少。

    以下是 Ally 的工作原理:

    ${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin ${BuildArtiftFileName}${BuildArtifactFileBaseName}.bin ${CG_TOOL_ROOT}/bin/hofd2000 ${CG_TOOL_ROOT}/hex2000 ${CCS_INSTALL_ROOT}/utils/mk4bin

    您现在可以关闭此帖子。

    Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="428443" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1065614/tms320f280041c-hex2000-utility-binary-output-file-and-options-selection/39496595#3949695"]我删除了我之前的所有引号和引号[我的帖子]。

    粘贴的命令 George 包含智能引号、6.1.3.4中 CCS 用户指南中的命令也是如此 。 预编译和编译后处理步骤、而不是引用 ASCII 代码34 (十进制)的"标准"。

    我之前曾在 CCS/TM4C129ENCPDT 中报告过类似问题:一些 GEL 示例中使用的智能引号、  为此、我们提出了 sir.ext.ti.com/.../EXT_EP-10170以更正 CCS 用户指南文档中引号的使用。

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

    感谢切斯特解释问题。   

    [引用 userid="91588" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1065614/tms320f280041c-hex2000-utility-binary-output-file-and-options-selection/3950031#3950031"]命令 George 包含智能引号/粘贴引号]

    已修复。   

    [引用 userid="91588" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1065614/tms320f280041c-hex2000-utility-binary-output-file-and-options-selection/3950031#3950031"] CCS 用户指南中的命令也是如此[引用]

    这将很快得到解决。

    谢谢、此致、

    乔治