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.

[参考译文] CC2340R5:使用 Uniflash 创建合并文件

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1496714/cc2340r5-creating-a-merge-file-using-uniflash

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

工具/软件:

我使用 LP-EM-CC2340R52 EVK 和基本双映像作为基本工程。 我想合并 mcuboot.hex 和 basic_ble_dual_oad_onchip.bin (偏移量:0x00006000)、并创建一个.bin 文件。  
 

我有一些我想讨论的要点,

1.是否可以使用 uniflash 合并文件? 如果是、请做同样的指南。

2.如果没有,那么我有什么所有的选项? 使用 oad 映像工具可以将十六进制文件和二进制文件合并为 最终出纸槽 文件吗?

请告诉我、创建合并容器文件的最佳方法是什么。

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

    您好、Sushant、

    我正在研究您关于我们如何合并这些文件的请求!  

    谢谢、
    Alex F

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

    您好 Alex、  

    期待您的答复。

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

    您好、Sushant、

    我可能找到了我们需要的内容、似乎有一个 python 实用程序可以用来组合两个十六进制文件、以下文档的第2.7节对此进行了详细说明:

    CC2640/CC2650低功耗蓝牙软件开发人员指南(修订版 E)

    和 python 的下载链接:

    IntelHex 项目文件:IntelHex

    话虽如此、似乎这是为闪存编程器2制作的、因此希望它可以用于 UniFlash。  

    谢谢、
    Alex F

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

    您好 Alex、  

    如果你建议合并两个 hex 文件,那么我需要知道一种方法,我可以先将我的 dual_oad_image.bin 转换为.hex .

    那么、似乎只能尝试合并两个十六进制文件。

    请也务必指导您完成此过程  

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

    您好、Sushant、

    若要生成十六进制文件、我们需要在工程属性中添加以下编译后处理步骤:  

    ${CG_TOOL_ROOT}/bin/tiarmhex -Order MS --memwidth=8 --romwidth=8 --Intel -o ${BuildArtifactFileBaseName}.hex ${BuildArtifactFileBaseName}

    谢谢、
    Alex F

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

    您好 Alex、  

    我使用 srecord 实用程序通过以下命令合并两个十六进制文件:-


    D:\Sushant\SRec\bin>srec_cat mcuboot_LP_EM_CC2340R5_nortos_ticlang.hex - intel basic_ble_oad_dual_image_LP_EM_CC2340R5_freertos_ticlang.hex - intel -offset 0x00006000 -o merge -hex - Intel



    merge.hex 文件大小为529KB、现在当我尝试使用 UNIFLASH (带有512KB 闪存的 LP_EM_CC2340R52)刷写 EVK 时、我看到一个错误:


    [NVM 2025年4月8日、10:04:54 AM] [错误] Cortex-M0P:文件加载程序:无法终止闪存编程:地址0x4e026000处的验证错误、预期为0xff、但读取0x00




    这里可能有什么问题、请尽快帮助我解决。

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

    您好 Alex、  

    似乎问题是为基本双映像添加编译后处理步骤时出现的。

    以下是我使用的编译后处理步骤  


    ${CG_TOOL_ROOT}/bin/tiarmobjcopy ${BuildArtifactFileBaseName}.out -- output-target binary ${BuildArtifactFileBaseName}_noheader.bin -- remove-section=.ccfg
    ${COM_TI_SIMPLELINK_LOWPOWER_F3_SDK_INSTALL_DIR}/tools/common/mcuboot/imgtool _v1.bin 符号--header-size 0x100 --align 4 --slot size 0x3B000 --version 1.0.0 --pad-header --pad --key ${COM_TI_SIMPLELINK_F3_SDK_INSTALL_DIR}/source/third_party/mcuboot/root-ec-p256.pem ${LOWfacArtifactFileName}_noheader.bin
    ${COM_TI_SIMPLELINK_LOWPOWER_F3_SDK_INSTALL_DIR}/tools/common/mcuboot/imgtool _v2.bin 符号--header-size 0x100 --align 4 --slot size 0x3B000 --version 2.0.0 --pad-header --pad --key ${COM_TI_SIMPLELINK_F3_SDK_INSTALL_DIR}/source/third_party/mcuboot/root-ec-p256.pem ${LOWfacArtifactFileName}_noheader.bin
    ${CG_TOOL_ROOT}/bin/tiarmhex -Order MS --memwidth=8 --romwidth=8 --Intel -o ${BuildArtifactFileBaseName}.hex ${BuildArtifactFileBaseName}

    使用此文件时 、输出十六进制文件 basic_ble_oad_dual_image_LP_EM_CC2340R5_freertos_ticlang.hex 出现了某种程度的损坏、因此为了解决方法、我直接使用 srec_cat 实用程序来获取完整的合并十六进制文件。  

    D:\Sushant\SRec\bin>srec_cat mcuboot_LP_EM_CC2340R5_nortos_ticlang.hex -英特尔 basic_ble_oad_dual_image_LP_EM_CC2340R5_freertos_ticlang.bin -binary -offset 0x00006000 -o merge.hex -英特尔

    但是、请告诉我编译后步骤有什么问题、因为该问题导致生成的十六进制文件出现问题。

     

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

    您好、Sushant、  

    您是否可以在第二个编译步骤之后(在无标头编译步骤之前)尝试添加十六进制编译后步骤、十六进制可能会拉取导致错误的无标头信息。

    谢谢、
    Alex F