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-Q1:OAD 生产文件

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1492668/cc2340r5-q1-oad-production-file

器件型号:CC2340R5-Q1
主题中讨论的其他器件:CC2340R5UNIFLASH

工具/软件:

您好团队:

我们在2340器件中实现了 OAD。 出于生产目的、我们将 mcuboot、persistent 和应用程序文件组合在一起、但 bin 文件的大小为12、78,082 KB。 由于文件原因、我无法通过任何工具进行刷写、因此请帮助我如何生成生产文件。 我生成了大小为928KB 的十六进制文件、但使用 TI Simple Link 移动应用程序或使用 BTool、我们无法无线刷写(不允许使用十六进制文件)。 我知道如何生成 bin 生产文件。

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

    您好:

    您是否能够分别刷写这三个映像? 各个映像二进制文件的大小是多少?

    .hex 文件更大、因为它们包含的信息多于二进制文件(例如、在存储器中的放置位置)。   

    此致、

    Nima Behmanesh

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

    是的、我可以单独刷写。 组合文件后、.hex 文件大小为998KB、而.bin 为12、78,082KB。  

    另外、MCU 引导为43KB、持久性为174KB、应用文件为199KB。

    我在 CMD (命令提示符)中使用以下命令

    启动 ssrecoret-1.65.0-win64/bin/srec_cat   

    oad/mcuboot_onchip_LP_EM_CC2340R5_nortos_ticlang.hex - Intel  

     oad/basic_persistent_LP_EM_CC2340R5_freertos_ticlang.bin -bin -offset 0x0006000  

     oad/application.bin -bin -offset 0x00032000   

    -o applicatiBin.bin -bin (用于 bin 文件生成)

    -o SapplicationHex.hex -Intel  (用于生成十六进制文件)

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

    您好:

    是的、我可以单独刷写。 组合文件后、.hex 文件大小为998KB、而.bin 为12、78,082KB。  [/报价]

    由于您可以单独刷写、这意味着组合的二进制文件应该能够放入 CC2340R5存储器中。 hex 将更大、因为它包含的信息比实际刷写的信息更多。

    我不太确定 srecord 工具是什么。 我认为我们没有任何可以组合二进制文件的工具。 这可能是工具的问题。

    此致、

    Nima Behmanesh

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

    实际上、对于26x2、TI 建议使用  srec_cat (用于生产文件)。  

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

    您好:

    可以尝试将.bin 文件转换为.hex 文件、并仅组合.hex 文件。 换言之、如果文件类型相同、请尝试组合它们。 我将在本周晚些时候尝试此操作、并将更新流程。

    此致、

    Nima Behmanesh

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

    您好:

    我应该会在星期三给你一个更新。

    此致、

    Nima Behmanesh

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

    您好:

    经过研究、确实没有办法合并这些文件。

    原因是 CCFG 是存储器映射寄存器、映射到0x4E002000。 该地址远比器件上的实际内存容量大得多。 当您尝试创建一个包含 CCFG/SCFG 的二进制文件时、它将填充应用的结束地址和0x4E002000之间的所有内容、从而产生>1GB 的二进制文件。

    您可以执行的操作:

    1.从应用程序二进制文件中 RIP CCFG:

    ${CG_TOOL_ROOT}/bin/tiarmobjcopy -O binary ${BuildArtifactFileBaseName}.out ${BuildArtifactFileBaseName}.bin --remove-section=.ccfg

    2.分别刷写 CCFG 和应用程序。  

    总之、无法创建完整的二进制文件、因为二进制文件没有任何有关闪存位置的信息。 因此、CCFG 不能包含在其中、因此至少需要两个二进制文件。

    此致、

    Nima Behmanesh

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

    您能不能说明如何单独刷写 ccfg? 我之前试过、但在 uniflash 中、它会在刷写时显示错误、最重要的一点是每当我们需要通过无线闪存时不考虑 cfg、因为在 btool 和 TI 应用中没有用于合并文件闪存的功能

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

    您好:

    显示的错误是什么? 您只需刷写一次 SCFG 和 CCFG。

    请概述您的 CCFG/SCFG 刷写过程。

    此致、

    Nima Behmanesh

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

    你好、Nima、

    请仔细看下图

    我有两点

    1.如何添加 CCFG 文件

    2.在第一次闪存通过 uniflash 我们可以闪存 MCUboot +持久+应用程序,但我可以合并这三个文件而无需 CCFG ,并通过 TI 移动应用程序通过 OAD 进行闪存而不会有任何问题。 因为我们注意到、如果我们仅刷写应用程序.bin 文件、就会遇到一些问题、比如我们仅通过一次查找车辆命令、然后命令也会继续

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

    您好:

    2. 首次通过 uniflash 闪存时、我们可以闪存 MCUboot +持久+应用程序、但我可以将这三个文件(无需 CCFG)合并、并通过 TI 移动应用程序通过 OAD 闪存而不会出现任何问题。 因为我们注意到、如果我们只刷写应用程序.bin 文件、那么我们会遇到一些问题、比如我们仅传递一次查找车辆命令、然后它也会继续

    我相信这里有一个误解。

    MCUBoot 和 Persistent 不会进行无线更新。 MCUBoot 是一种引导加载程序、用于在映像在闪存中执行之前验证映像。 持久应用程序 实现  OAD 服务、允许 二进制 文件以无线方式上传到器件。 它被称为 persistent、因为它不会改变并会保留在设备上。

    应用是唯一实际通过无线方式进行更新的东西。 无法组合 CCFG + MCUBoot + Persistent + Application、因为这样设备就必须对自身和处理无线进程的代码进行写入。 此外、无法将其合并为二进制文件。 CCFG 是存储器映射到0x4E002000、该地址不在闪存地址范围内。 如果您尝试将 CCFG 包含到二进制文件中、会用0填补空间空白、从而导致较大的二进制大小。  

    --

    如果您想要更新 MCUBoot 或 PERSISTENT、这必须通过串行协议来完成。 CCFG 只需刷写一次。 您通过无线方式上传至器件的二进制文件不意味着具有 CCFG、因为 CCFG 不应在 OTA 更新之间发生更改。

    总结:

    1. CCFG 应刷写一次、然后 不能是 无线更新了。

    2.无法无线更新 MCUBoot 和持久应用程序。 这些可以通过串行协议进行更新。

    3.实际应用程序可以无线更新,但必须采用二进制格式,无需 CCFG。 它应该只包含应用程序。

    此致、

    Nima Behmanesh