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:闪存/调试问题

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1428430/cc2340r5-flash-debug-issue

器件型号:CC2340R5
主题中讨论的其他器件: UNIFLASHSEGGER

工具与软件:

您好!

我使用的是 TI CC2340R5 DK、且使用 CCS 和/或 Theia、一切都能正常工作。

我搬到了 Clake 解决方案来构建独立的、以便在 CI 系统中运行。

我可以使用 Uniflash 生成 hex/out/bin 文件、这些文件可以正常使用。

我现在尝试使用 J-link 以闪存到 DK、但应用程序未按预期运行。

我想问题出在 CCFG CRC 记录上。  

我按照链接中的说明: https://software-dl.ti.com/simplelink/esd/simplelink_lowpower_f3_sdk/8.10.00.55/exports/docs/ble5stack/ble_user_guide/html/memory/memory_management-cc23xx.html#sec-flash-user-record

我修改了以 使用 CRC 生成用户记录二进制文件、然后我尝试在地址 0x4e020750处使用 uniflash 刷写、但出现以下错误:

"文件:C:/ti/simplelink_lowpower_f3_sdk_8_10_01_02/tools/common/crc_tool/output.bin:加载失败。"

有几个问题:

1. 写入用户记录时、什么会导致失败?

2.是否可以构建一个不覆盖 CCFG 的.out 文件?因此无论如何、我都可以使用 jlink 来刷写?


我还测试了提供给 Segger 的二进制文件以使用 jlink 进行测试、并且确实工作正常(此处为参考链接 https://wiki.segger.com/File:TI_LP_EM_CC2340R5_Blinky.zip)

谢谢你

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

    尊敬的 Luca:

    您能否提供您尝试刷写的文件? 我将在结束时进行尝试并报告结果。

    此致、

    按钮

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

    嗨、Bun、

    我已经直接向您发送了文件。

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

    我最迟会在11月1日前跟进

    按钮

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

    谢谢你

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

    尊敬的 Luca:

    1.挖掘软件更改后、只有 CCS12.7或更高版本以及 Uniflash 8.7或更高版本支持 J 链接。 请确认您的版本、这将有助于缩小根本原因的范围。

    2.在 CCS 中、连接器件(CC2340)后、在"Tools"->"On-chip Flash"下可以找到下面显示的跳过 CCFG 编程的选项

    此致、

    按钮

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

    嗨、Bun、

    感谢您的答复。

    我们使用 Uniflash 8.8.0.4946、但我们 要使用 Segger 套件进行刷写和调试、如最上面的线程所述。

    使用 JFlashLite 我们可以刷写、但应用程序随后不会运行、我猜是因为  CCFG 记录。  

    无论如何,我有 gowith uniflash 和 jlink ,它无法闪存,下面你可以找到一个显示失败原因的图像。

    谢谢你

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

    尊敬的 Luca:

    很抱歉响应延迟、但下面是我的发现

    1.在挖掘完提供的十六进制文件后,我发现下面这些 CRC 地址都是零,如果你打算使用 J-link ,那么应该有一些值,因为它不会自动编程正确的值。 请使用 CRC 工具重新检查您的编译后步骤、因为它应该会 在这些地址中重新写入正确的值。

    • 0x4E02000C

    • 0x4E02074C

    • 0x4E0207FC

    2.关于您最新的回复,这是正常现象,因为 J-link 不会自动编程正确的 CRC 值,当软件根据十六进制数据根据计算值交叉校验 CRC 值时,会不匹配,从而导致闪存或执行。

    此致、

    按钮

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

    感谢大家的支持、我终于找到了构建最终映像的方法。

    下面介绍了这些步骤、希望这些步骤能够在将来对其他人有所帮助:

    1. 构建 mcuboot
    2. 使用 crc_tool 将 CCFG 寄存器设置为 mcuboot  
    3. 使用 tiarmobjcopy 生成 ihex 文件
    4. 生成应用程序
    5. 使用 imgtool 生成报头和 ihex 输出
    6. 使用 mergehex 将引导加载程序和应用程序合并在单个十六进制文件中

    之后、Jlink 成功将十六进制映像刷写到目标