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.

[参考译文] RTOS/CC2650:CC2650 Launchpad UART 刷写过程?

Guru**** 2587345 points
Other Parts Discussed in Thread: UNIFLASH, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/757770/rtos-cc2650-cc2650-launchpad-uart-flashing-procedure

器件型号:CC2650
主题中讨论的其他器件:UNIFLASH

工具/软件:TI-RTOS

大家好、

我在 CC2650 Launchpad 板上工作、能够通过 JTAG 接口通过 XDS110调试器和 Uniflash 工具支持来刷写映像。
正在启动、工作正常。

我的问题是:

如何通过 UART 接口将映像闪存到 CC2650芯片

我已经介绍了 CC2XX6引导加载程序接口文档、需要运行 ROM 引导加载程序以支持 UART 闪存模式

2.如何设置 CCA/CCFG 以启用 ROM 引导加载程序执行的后门。

我读取 BL_CONFIG 寄存器、即0X0001FFD8值为0XC5FFFFFF

FD8为0xFF
FD9为0xFF
FDA 为0xFF
FDB 为0xC5

帮助我通过 UART 获取刷写映像、无需使用 JTAG 接口。

Thnaks 和此致、
Ravikiran

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    www.ti.com/.../swra466a.pdf 中的图1 所示、您有两个进入引导加载程序的选项。

    第一种情况是未预设有效的闪存映像。

    第二个是启用引导加载程序后门。

    仅对于第一个选项:
    #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5 //启用 ROM 引导加载程序
    必须在 CCFG 中设置。

    对于第二个:
    您必须设置级别:
    #define SET_CCFG_BL_CONFIG_BL_LEVEL 0x1. //高电平有效以打开车尾箱装载器后门

    该值也可以是0x0。
    #define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER 0xFF //引导加载程序后门的 DIO 编号

    将0xFF 替换为要使用的引脚。

    启用后门:
    #define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5 //已启用引导加载程序后门
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ter、

    感谢您的回复。

    我使用 Uniflash 工具在"Setting and Utilities"(设置和实用程序)部分->"Erase entire flash"(擦除整个闪存)下擦除整个闪存。
    擦除后、我检查了电路板 CCFG 寄存器值、它仍然是复位值0XC5FFFFFF。


    是否可以使用 Uniflash 工具通过 UART 刷写映像? 还是需要 SmartRF 闪存编程器2软件?

    2.如何确保 CCFG 刚性以启用 ROM 引导加载程序和 BL_PIN、电平和后门启用?

    3.如果没有 JTAG 调试器支持,是否可以在 CC2650 Launchpad 中通过 UART 接口刷写映像?


    谢谢、此致、
    Ravikiran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1) 1)我的理解是需要闪存编程器2。
    2) 2)查看我之前的帖子。
    3)应该是、我们的客户的电路板上没有 JTAG 接口、因此使用 UART 来刷写器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ter、

    好的、我将尝试使用闪存编程器2通过 UAR 加载映像(在完成闪存擦除之后)
    2.是否可以使用 XDS 调试器启用配置 CCFG 寄存器手册?

    谢谢、此致、
    Ravikiran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么要通过 XDS 来操控 CCFG、而不是在 CCFG.c 文件中设置所需的设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ter、

    我尝试了用于 CC2650 Launchpad 的 simple_np 项目、在项目的"启动"目录下、存在"ccfg_app_ble.c"文件、因为以下代码存在。

    ------------------------------------------------------
    #ifdef SNP_SBL_ENABLE
    #include "board.h"

    #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5 //启用
    #define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5 //已启用

    #define SET_CCFG_BL_CONFIG_BL_LEVEL 0x0 //低电平有效

    #IF 已定义(CC2650DK_7ID)||\
    已定义(CC2650_LAUNCHXL)||\
    已定义(BOOSTXL_CC2650MA)
    #define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER Board_MRDY // BL 后门引脚、重新使用 MRDY
    其他
    错误"Board not recognized! 必须定义 CC2650DK_7ID、CC2650_LAUNCHXL 或\
    BOOSTXL_CC2650MA。"
    #endif /CC2650DK_7ID || CC2650_LAUNCHXL || BOOSTXL_CC2650MA
    ENDIF //SNP_SBL_ENABLE

    ------------------------------------------------------

    Board_MRDY 值为0x17即十进制23

    根据此代码、BL_PIN 的 DIO23引脚用于启用 ROM 引导加载程序、具有低电平有效信号。

    运行 simple_np 项目映像后,我读取 CCFG 寄存器,值为0XC5FE17C5,这表示 ROM 引导加载程序已通过后门启用。

    DIO 引脚23与 GND 相连、以提供低电平有效信号。


    我尝试使用 SmartRF 闪存编程器2通过 UART 接口刷写映像、使用 UART COM 端口、我在闪存编程器2工具中遇到以下错误。

    ------------------------------------------------------
    >在初始连接期间无法读取设备 ID。
    >通过串行引导加载程序连接失败:在初始连接期间无法读取设备 ID。
    >创建设备对象失败。
    >启动对目标的访问:COM24。
    未收到> ACK/NAK。 预期为0x00 0xCC 或0x00 0x33、接收到0x10 0x9E。
    >在初始连接期间无法读取设备 ID。
    >通过串行引导加载程序连接失败:在初始连接期间无法读取设备 ID。
    >创建设备对象失败。
    ------------------------------------------------------

    闪存编程器2或 CC2650 PL 板中可能存在什么问题?


    谢谢、此致、
    Ravikiran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先查看基础知识:您是否在尝试编程之前在 SmartRF Studio 中右键单击并选择了"connect"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在尝试程序之前尝试了连接、这也导致了与之前提到的相同的错误。

    >启动对目标的访问:COM24。

    未收到> ACK/NAK。 预期为0x00 0xCC 或0x00 0x33、接收到0x98 0x9E。

    >在初始连接期间无法读取设备 ID。

    >通过串行引导加载程序连接失败:在初始连接期间无法读取设备 ID。

    >创建设备对象失败。

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

    您获得的返回代码与器件应提供的代码不符。

    在屏幕截图中、我注意到一些看起来不正确的内容。 如果我连接 Launchpad、其外观如下所示:

    当我想使用 UART 时、我使用 XDS 类应用程序... (通过 USB 连接的 UART)  

    您使用的屏幕截图中的 UART 串行接口是什么? 您是否有 LP 连接以外的其他设备?  

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

    是的、COM24端口来自 Launchpad BLE CC2650芯片 UART TX 和 RX、通过外部 USB 连接到 TTL (串行转换器)。
    在这种情况下,调试器和 BLE 芯片 CC2650之间的 UART TX 和 RX 连接被移除(UART TX 和 RX 跳线被移除),以连接到外部 USB 转 TTL 转换器。

    我们正在 CC2650 Launchpad 中尝试上述连接设置、以便在定制板中实现相同的功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。

    在这种情况下、您是否能够监控 UART 线路并查看错误消息中给出的模式是否实际发送?

    您是否也可以像我写的那样使用 XDS110 UART 进行测试、而不是仅使用 USB 到 TTL 来测试这种情况是否存在问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ter、]

    感谢您的宝贵建议。

    刚才我 尝试了使用调试器进行 UART 编程的 UART 连接。

    我能够与目标连接并能够通过闪存编程器2中的 UART (应用/用户 UART 端口)刷写映像

    请查看以下屏幕截图以了解相同内容。

     

     

     

    现在的问题是 UART 编程的外部 USB-TTL 转换器连接可能出现什么问题  

    调试器 UART 连接和外部 USB-TTL 转换器 UART 连接是否有任何区别?

    是否可以在不支持调试器的情况下通过 UART 进行编程?

     

    谢谢、此致、

    Ravikiran

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一个可能是原因的因素是 RX 和 TX 引脚的定义。 是否确定连接了正确的引脚? (是否交换了 RX 和 TX?)

    您还应使用有效的解决方案测量 UART 接口、并将其与使用 USB 转 TTL 时的情况进行比较。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ter、

    外部 USB 至 TTL 转换器和 CC2650 Launchpad BLE 芯片连接良好。(移除 XDS 调试器和 Launchpad 中 BLE 芯片的 UART 线之间的跳线连接即可实现连接)。

    当 CC2650 Launchpad UART TX 和 RX 错误地连接到外部 USB 转 TTL 转换器(交换 TX 和 RX 线路)时、我会在闪存编程器2中始终遇到错误。

    >启动对目标的访问:COM24。

    >设备无响应。 器件可能不处于引导加载程序模式。 重置设备并重试。

    如果问题仍然存在、请检查连接和波特率。

    >通过串行引导加载程序连接失败:设备无响应。 器件可能不处于引导加载程序模式。 重置设备并重试。

    如果问题仍然存在、请检查连接和波特率。

    >创建设备对象失败。

    在正确连接外部转换器的 UART TX 和 RX 中、我在闪存编程器2中遇到以下错误。

    >启动对目标的访问:COM24。

    未收到> ACK/NAK。 预期为0x00 0xCC 或0x00 0x33、接收到0x10 0x9E。

    >在初始连接期间无法读取设备 ID。

    >通过串行引导加载程序连接失败:在初始连接期间无法读取设备 ID。

    >创建设备对象失败。

    在与外部转换器的正确 UART 连接中、@ ACK 阶段失败。

    我们将检查 XDS 调试器和与 BLE 芯片的外部转换器连接中的信号/初始化差异、一旦测试结束、我将向您更新结果。

    谢谢、此致、

    Ravikiran

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将 USB 连接到 TTL 器件时、是否使用公共接地?

    您写入的 TTL 表示与 CMOS 不同的电平?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ter、

    我观察到、在 SmartRF 闪存编程器2中、UART 编程以更高的波特率驱动、如230400值。
    最初、我使用我们的定制 USB 到 TTL 转换器进行编程、这是因为它不支持 BLE 芯片的更高波特率通信、如230400和更高。
    因此、我无法通过 SmartRF 闪存编程器2中的 UART 使用外部转换器将图像连接并刷写到目标板。

    然后、我尝试了使用其他一些标准 USB 到 TTL 转换器连接 BLE 芯片进行 UART 编程、使用此外部转换器、我能够使用 SmartRF 闪存编程器2软件通过 UART 将图像连接到目标。

    我们的定制 USB 转 TLL 转换器板支持较低的波特率、如9600等、并通过具有 UART 回波应用的 BLE 芯片进行了验证。
    那么、是否可以更改 SmartRF Flash Programmer 2软件中 UART COM 端口的波特率、或者如何更改波特率?


    谢谢、此致、
    Ravikiran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UART 速率在代码中是固定的、无法更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ter、

    这是指 无法更改的代码与 SmartRF 闪存编程器2软件有关,我的理解是否正确?

    在以下文档中,在 Windows 中提到 SBL 引导加载程序应用程序,可以用于 UART 编程,也可以更改闪存的波特率。

    www.ti.com/.../swra466a.pdf

    只 需使用 Visual Studio C++ Express 重新构建应用程序、请分享您对此的想法。 因为我们的定制 USB 至 TTL 转换器不支持更高的波特率。

    谢谢、此致、

    Ravikiran

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、在闪存编程器软件中无法更改波特率。

    是的、如果您需要不同的功能、则可以使用提供的库。 问题是、为什么要使用波特率非常低的器件、因为刷写器件需要相当长的秒、这在很多情况下是不切实际的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、原因是、在我们的定制板上、USB 到 TTL 转换器无法使用更高的波特率、因此我们正在寻找更低的波特率、是的、波特率更低会导致通过 UART 进行刷写的时间消耗更多。

    我们正在研究 USB 到 TTL 转换器的变化,这是因为我们正在寻找闪存软件支持的较低波特率。

    SBL 脚本应用程序需要在 Visual Studio C++中使用波特率更改进行重建,对吧?