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.

[参考译文] CC1311P3:为 CC1311引导加载程序生成二进制文件

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1299862/cc1311p3-generating-binary-for-the-cc1311-bootloader

器件型号:CC1311P3

大家好!  

我将尝试通过 ROM 引导加载程序刷写1311。 引导加载程序部分没有问题、我可以通信、擦除扇区和刷写程序。 我无法生成二进制文件以刷写到控制器...  

"空"项目创建的二进制文件为350kB?  我无法 运行 Tiobj2bin、有关该主题的所有线程都有六年历史、也可能适用于不同的架构。如果我理解正确、那么构建流程和/或 TIobj2bin 最近发生了一些变化。 说实话、这有点混乱、我对二进制生成/TI 控制器架构/Tiobj2bin 过程的了解不够、无法快速找到这些信息。  

那么、有人能告诉我如何为1311生成二进制文件的正确方向吗?  

我目前正在使用 CCS 12.4 (如果我能找到我的 admin 就会更新)和 gcc 来构建"empty"示例。 我使用的是 CC1311P3 Launchpad 作为测试、但实际应用使用的是 R3、前提是这一点很重要。  

感谢您发送编修

最大值

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

    您好、Max:

    是那些您已经运行的步骤吗? https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/docs/zigbee/html/zigbee/ota_upgrade.html?highlight=tiobj2bin#adding-post-build-actions-in-ccs

    此致、

    亚瑟

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

    Arthur、您好!  

    感谢您的回复。  

    我做了类似的事情(在论坛的某个地方找到)、但参数可能不完整或错误。 我今天不在办公室,但明天会尝试,并返回给你。  

    感谢您发送编修

    最大值

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

    Arthur、您好!

    我只有一个机会尝试执行 post-build 操作。 在 empy 项目的 GCC 版本中、CG_TOOL_HEX 变量未定义。 我尝试了导入该工程的 TI-clang 版本、并再次从链接中添加了 post-build 步骤。 然后、post-build 步骤失败、并出现以下错误:  

    C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmhex.exe -order MS --memwidth=8 --romwidth=8 --intel -o empty_LP_CC1311P3_tirtos7_ticlang.hex empty_LP_CC1311P3_tirtos7_ticlang
    Translating to Intel format...
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .resetVecs ==> .resetVecs
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .text ==> .text
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .rodata ==> .rodata
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .args ==> .args
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .cinit ==> .cinit
    "empty_LP_CC1311P3_tirtos7_ticlang.out" .ccfg ==> .ccfg
    C:/ti/ccs1250/ccs/utils/tiobj2bin/tiobj2bin empty_LP_CC1311P3_tirtos7_ticlang.out empty_LP_CC1311P3_tirtos7_ticlang.bin C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/armofd C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/armhex C:/ti/ccs1250/ccs/utils/tiobj2bin/mkhex4bin
    tiobj2bin.bat failed on C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/armofd
    Please see processors.wiki.ti.com/.../Tiobj2bin_Failed
    tiobj2bin.bat failed on C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/armhex
    Please see processors.wiki.ti.com/.../Tiobj2bin_Failed
    C:/ti/ccs1250/ccs/utils/tiobj2bin/mkhex4bin failure occurred. Giving up.
    C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_02_23/tools/common/oad/oad_image_tool --verbose ccs C:/Users/max.menges/workspace/update_red/empty_LP_CC1311P3_tirtos7_ticlang 7 -hex1 Debug/empty_LP_CC1311P3_tirtos7_ticlang.hex -k C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_02_23/tools/common/oad/private.pem -o Debug/empty_LP_CC1311P3_tirtos7_ticlang_oad
    makefile:171: recipe for target 'post-build' failed
    warning: Data is being written to auto-generated file empty_LP_CC1311P3_tirtos7_ticlang.x1
    warning: Data is being written to auto-generated file empty_LP_CC1311P3_tirtos7_ticlang.x2
    warning: Data is being written to auto-generated file empty_LP_CC1311P3_tirtos7_ticlang.x3
    Der Befehl "C:\ti\ccs1250\ccs\tools\compiler\ti-cgt-armllvm_3.2.0.LTS\bin\ofd470" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    File does not exist: at XML_TI_OFD.pm line 877.
    Traceback (most recent call last):
    File "oad_image_tool.py", line 542, in <module>
    File "oad_image_tool.py", line 341, in main
    File "oad_image_tool.py", line 184, in createAppStackBinfile
    File "imgBinUtil.py", line 252, in updateImgLen
    File "imgBinUtil.py", line 105, in writeBytes
    OverflowError: can't convert negative int to unsigned
    [10836] Failed to execute script 'oad_image_tool' due to unhandled exception!
    gmake[2]: [post-build] Error 1 (ignored)
    C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_02_23/tools/zstack/zigbee_ota_image_converter/zOTAfileGen C:/Users/max.menges/workspace/update_red/empty_LP_CC1311P3_tirtos7_ticlang/Debug/empty_LP_CC1311P3_tirtos7_ticlang_oad.bin C:/Users/max.menges/workspace/update_red/empty_LP_CC1311P3_tirtos7_ticlang/Debug/ BEBE 2652 00000001

    我查看了 http://processors.wiki.ti.com/index.php/Tiobj2bin_Failed 网站并实施了建议的修复(在空项目的 GCC 版本中)、即删除至编译后步骤并启用 GNU objcopy 实用程序。 这会进行编译、但会再次创建大小为~350kB 的二进制文件。  

    有什么建议吗?  

    您好

    最大值

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

    您好、Max:

    您可以检查二进制内容吗?

    我觉得这是预期行为、因为固件将置于二进制文件的开头、但器件配置 CCFG 将位于闪存的结尾。 从 ticlang 工程查看以下存储器映射:

    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      FLASH                 00000000   00058000  0000502c  00052fd4  R  X
      GPRAM                 11000000   00002000  00000000  00002000  RW X
      SRAM                  20000000   00014000  00009810  0000a7f0  RW X
      LOG_DATA              90000000   00040000  00000000  00040000  R   
    
    
    SEGMENT ALLOCATION MAP
    
    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    00000000    00000000    000000d8   000000d8    r--
    00000000    00000000    000000d8   000000d8    r-- .resetVecs
    000000e0    000000e0    00004efc   00004efc    r-x
    000000e0    000000e0    00004c54   00004c54    r-x .text
    00004d34    00004d34    000001a8   000001a8    r-- .rodata
    00004edc    00004edc    00000100   00000100    r-- .cinit
    00057fa8    00057fa8    00000058   00000058    r--
    00057fa8    00057fa8    00000058   00000058    r-- .ccfg

    我想提醒你注意 闪存 即0x58000。 现在、如果您看一下 .ccfg ,您可以看到它是从开始的 0x57FA8

    现在正在发生的事情是、tiobj2bin 可以按预期工作、但由于二进制格式的性质、它将包括所有空段区域、直到它到达.ccfg 段。 因此得出与器件中闪存大小相匹配的二进制文件大小。

    此致、

    亚瑟

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

    Arthur、您好!  

    是的、存储器映射在 GCC 上类似:  

    二进制代码如下所示:  

    大约有16kB 的程序、还有一些有关内存用尽的纯文本警告。 在纯文本警告之后、这里有几个非零字节。 然后仅从0x4510变为零、一直到闪存末尾、CCFG 包含一个扇区。

     

    我是否会按原样将该文件写入闪存? 减去最后的 CCFG 扇区? 或者我是否需要执行更多处理?  

    您好

    最大值

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

    您好、Max:

    您应该能够安全地使用或不使用 CCFG 将完整文件刷写到闪存中(只要现有的 CCFG 配置符合您的要求)。

    如果您有自己的引导加载程序闪存软件、也可以尝试忽略没有相关数据的区域、并直接跳至 CCFG。

    此致、

    亚瑟

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

    Arthur、您好!  

    我一直忙于其他事情、现在只能进行测试。 只想告诉您一切正常、现在我可以通过引导加载程序进行更新。

    感谢您的帮助。

    您好

    最大值