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.

[参考译文] CC2538:用于定制 CC2538 USB 软件狗的软件

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/925907/cc2538-software-for-custom-cc2538-usb-dongle

器件型号:CC2538
Thread 中讨论的其他器件: Z-stackUNIFLASH

您好!

我们有一个硬件设计、其中集成了 CC2538F512以及运行 Linux 的 Intel Atom CPU。 CC2538通过 RS-232和 USB 连接到 Atom。

我们希望对 CC2538进行编程、以便能够从 Atom 处理器检测到它、就像在 USB Zigbee 软件狗的位置一样。

我们想知道是否有任何可以在 CC2538中直接闪存的二进制文件、或者我们是否必须重新编译 Z-Stack 软件。

如果我们必须重新编译、需要哪种配置? 此外、是否可以在 CCS 中创建工程或是否需要在 IAR 中创建工程?

谢谢、

David

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

    TI Zigbee 网络3_0_Linux_Gateway_1_0_1 参考设计 提供 CC2538_Gw_ZNP_EM_Standalone _USB.hex (如果安装)。 我随附它供您参考。

    e2e.ti.com/.../CC2538_5F00_GW_5F00_ZNP_5F00_EM_5F00_StandAlone_5F00_USB.zip

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

    首先、非常感谢您的回答。

    我已经使用您的.hex 对闪存进行了编程、但在处理完成后、尝试重置 CC2538时出错。 之后、当我再次尝试编程时、我无法执行该操作、我收到以下消息:

    失败未检测到引导加载程序串行读取字节失败

    如何解决?

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

    您使用什么来看到此“Failed No bootloader detected serialread byte failed”消息?

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

    我正在使用串行引导加载程序接口来闪存 cc2538

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

    您可以尝试使用闪存编程器2对 CC2538执行批量擦除、并且串行引导加载程序应该会返回。

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

    问题是、我不知道如何使用 Programmer 2或 uniflash、因为我 通过 Linux 操作系统的原子来访问 CC2538。

    我该怎么做?

    谢谢!

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

    您有 SmartRF06EB 吗? 如果是、您可以将 CC2538EM 连接到 SmartRF06EB 以在 Linux 上使用 Uniflash 执行批量擦除。

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

    不、我没有...

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

    您必须购买用于开发的 SmartRF06EB。

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

    问题是芯片已经安装在电路板上、我们需要恢复。

    如果没有 SmartRF06EB、无法恢复 cc2538?

    我们将串行引导加载程序接口与原子处理器配合使用。

    谢谢!

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

    很抱歉,我不知道其他选择。

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

    您好!

    图像 CC2538_GW_ZNP_EM_Standalone _USB.hex 假定 SmartRF06EB 用于刷写 CC2538、并且未启用后门引导加载程序功能(请参阅 startup_ewarM.c 中的 bootloader_backdoor_disable 和 用户指南中的第8.6.2节)。

    对于 CC2538开发、我建议使用 SmartRF06EB 和 CC2538EMK。 这将允许您通过 SmartRF 闪存编程器2刷写 CC2538 、也可用于调试。

    对于生产映像、以下是一些选项、以便主机(在您的情况下为原子处理器)可以加载映像:

    • 启用后门引导加载程序以允许主机访问 ROM 引导加载程序。 请参阅 startup_ewarm.c 中的 bootloader_backdoor_disable 和 用户指南中的第8.6.2节
    • 包括串行引导加载程序以及应用程序映像。 串行引导加载程序应用程序可在"C:\Texas Instruments\Z-Stack 3.0.2\projects\Zstack\Utilities\bootload"中找到。 有关此内容的说明、请参阅"C:\Texas Instruments\Z-Stack 3.0.2\Documents\CC2538\Serial Boot Loader for CC2538.pdf"。

    此致、
    Toby

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

    您好!

    请告诉我是否有办法在没有 SmartRF06BF 的情况下恢复 cc2538吗?

    我们购买了其中一个、但如今、cc2538已经安装在电路板上... 我们不能卸载它...

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

    请参阅以下相关帖子:
     https://e2e.ti.com/support/wireless-connectivity/other-wireless/f/667/t/516487#pi239031350=3&pi320995=3
     https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/p/534990/1948400#1948400

    如果未启用后门引导加载程序、我相信您需要通过调试接口(例如 JTAG)访问器件、并使用某些应用程序(例如 SmartRF Flash Programmer 2)来批量擦除器件并刷写另一个映像。

    我将把这个主题传递给我们的硬件团队、看看是否有其他选择。

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

    您好!

    我们将仔细研究它、尽快返回给您。 请多多包涵。

    请以 PDF 格式分享您的原理图吗?

    谢谢、

    PM

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

    很抱歉,我回答说,我不在办公室。
    首先、非常感谢您的回答。
    在我向您发送原理图之前,我将尝试更好地解释我的案例,因为我真的认为我做得不是很好:-)。
    我们通常 使用串行引导程序由主机(凌动)对 CC2538进行编程 (并启用后门)、我们对此没有任何问题。
    但是、当我们尝试使用映像 CC2538_Gw_ZNP_EM_Standalone _USB.hex 对 CC2538进行编程时、编程失败、此后、每次我们尝试使用最早的映像(以前有效)或 CC2538_Gw_ZNP_EM_Standalone .hex 对 CC2538进行编程时、都会发生错误:"未检测到引导加载程序字节读取失败"
    CC2538安装在我们的板上、我们只能通过主机(凌动)来访问它。
    是否有方法可以恢复 CC2538、而无需从电路板上安装?

    很抱歉不方便

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

    您好!
    最后、我可以使用 SmartRF 闪存编程器2应用程序通过调试接口(JTAG)访问器件。 我们可以在板上启用连接器。
    现在、我将尝试将串行引导加载程序与应用程序映像一起包含在内、正如您告诉我的("将串行引导加载程序与应用程序映像一起包含在内")。 串行引导加载程序应用程序可在"C:\Texas Instruments\Z-Stack 3.0.2\projects\Zstack\Utilities\bootload"中找到。 相关说明、请参阅"C:\Texas Instruments\Z-Stack 3.0.2\Documents\CC2538\Serial Boot Loader for CC2538.pdf")。 但它不起作用...
    我正在按照"CC2538.pdf"部分中的串行引导加载程序"12.Combining 引导加载程序+十六进制文件应用程序映像"中描述的步骤进行操作。  我认为问题在于这方面:
    020000040027D3
    0CFFD400FFFFFFEF000000000000200015
    这两个文件(CC2538_GW_ZNP_EM_Standalone _USB.hex 和 CC2538_SBL_UART.hex)使用该寄存器...
    我正在尝试两个文件的多个方案、但我没有成功...
    你可以告诉我什么想法吗?
    非常感谢!

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

     按原样、CC2538_GW_ZNP_EM_A单机 版_USB.hex 是从未配置为与 SBL 应用配合使用的工程构建的。

    为此、您还需要执行第10节中概述的步骤、以生成正确的十六进制、然后将其与 SBL 十六进制相结合。

    请注意、如果主机希望进入 SBL 模式、SBL 应用程序会等待大约30秒。 如果未收到相关指示、CC2538将随后执行应用文件。

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

    谢谢!

    在哪里可以获取 CC2538_Gw_ZNP_EM_Standalone _USB.hex 的源代码来生成正确的十六进制代码?

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

    在 Z-Stack 3.0.2 (\projects\Zstack\ZNP)中使用 ZNP 项目。

    我还建议遵循以下附件中详述的构建配置(这是从 Zigbee Linux 网关获取的)。

    e2e.ti.com/.../README.md

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

    我已经使用构建配置和 SBL 将 ZNP 项目编译到 Z-Stack 3.0.2中。

    SBL 工作正常。

    但是 、我无法在 Linux 中检测到软件狗 USB。

    编译配置包含在 znp.cfg 文件中:

    -DCONCENTRATOR_ENABLE=true
    DCONCENTRATOR_DISCOVERY 时间= 60
    -DCONCENTRATOR_route_cache=true
    -DMMAX_RTG_SRC_ENTRES=200
    -DSRC_RTG_EXPI_TIME=255
    -dhal_uart=true

    -dhal_UART_USB
    -DUSB_Setup_MAX_NUMBER_of_interfaces=5
    -DBB_ZNP

    /*设备列表配置*/
    -DNWK_MAX_DEVICE_LIST=50
    DZDSECMGR_TC_DEVICE_MAX=100

    注意:由于编译错误、我必须将-DZDSECMGR_TC_DEVICE_MAX 的值更改为100。

    我是否在做一些值得做的事情?

    再次感谢!

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

    感谢您的更新。

    您是否已选中“Z-Stack ZNP 接口规范”(在 \Z-Stack 3.0.2\Documents\API 中)?
    例如、第2.1.5节包含一些有关启动过程的注释、等等

    您是否在串行接口线路上看到任何活动?

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

    如果我使用 CC2538_Gw_ZNP_EM_Standalone _USB.hex、我可以检测 USB 软件狗、如果我没有 SBL。

    但是、如果我将二进制编译与 znp.cfg 文件中包含的编译配置一起使用、我无法检测 USB 软件狗、但我有 SBL...

    因此、我认为我在编译中做了一些错误...

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

    尊敬的 David:

    构建后、是否从 Z-Stack 3.0.2\projects\Zstack\ZNP\CC2538\dev 对 CC2538ZNP-with -SBL.HEX 进行编程?  请注意、在为器件供电后、您必须等待一分钟才能超时闪存引导加载程序并启动 ZNP 应用程序。  有关 CC2538串行引导加载程序的更多信息、请参阅 Documents/CC2538文件夹。  请注意、CC2538上还有一个 ROM 串行引导加载程序、如 SWRA466中所述

    此致、
    Ryan

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

    感谢您的快速响应

    是的、如果我对 Z-Stack 3.0.2\projects\Zstack\ZNPS\CC2538\dev\CC2538ZNP-with -SBL.hex 进行编程并等待1分钟以上... 但我没有 SBL 或 USB 软件狗。

    如果我对 C:\Texas Instruments\Z-Stack 3.0.2\Projects\Zstack\ZNP\CC2538\CC2538ZNP-with -SBL\EXE\CC2538.hex 进行编程、则我具有 SBL、但我没有 USB 软件狗。

    如果我使用 CC2538_Gw_ZNP_EM_Standalone _USB.hex 进行编程、我有 USB 软件狗、但没有 SBL。

    使用 znp.cfg 文件中的选项编译项目 ZNP-CC2538ZNP-WI-SBL.HEX 和 CC2538.hex 后、我将使用 CC2538ZNP-WI-SBL:

    -DCONCENTRATOR_ENABLE=true
    DCONCENTRATOR_DISCOVERY 时间= 60
    -DCONCENTRATOR_route_cache=true
    -DMMAX_RTG_SRC_ENTRES=200
    -DSRC_RTG_EXPI_TIME=255
    -dhal_uart=true

    -dhal_UART_USB
    -DUSB_Setup_MAX_NUMBER_of_interfaces=5
    -DBB_ZNP

    /*设备列表配置*/
    -DNWK_MAX_DEVICE_LIST=50
    DZDSECMGR_TC_DEVICE_MAX=100

    谢谢!

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

    感谢您提供您所看到问题的详细信息。

    如果我理解正确:

    CC2538.hex: 通过编译工程 CC2538ZNP-WI-SBL 创建的十六进制映像
    CC2538ZNP-WIT-SBL.HEX: 组合映像 CC2538.hex  +   SBL 映像 (对于 SBL 映像,您是否使用从项目 启动(位于 Z-Stack 3.0.2\projects\Zstack\Utilities\bootload\cC2538_UART)构建的.hex?

    [引用用户="David Beamonte"]如果我对 C:\Texas Instruments\Z-Stack 3.0.2\projects\Zstack\ZNP\CC2538\CC2538ZNP-with -SBL\EXE\CC2538.hex 进行编程,则我有 SBL 但我没有 USB 软件狗。[/quot]
    CC2538.hex 需要与 SBL 映像一同刷写(例如  CC2538_SBL_UART.hex)。

    [引用 user="David Beamonte"]如果我使用 CC2538_Gw_ZNP_EM_Standalone _USB.hex 进行编程,则我有 USB 软件狗,但没有 SBL。
    是的、这是有意的、正如您之前在该主题中所面临的那样。

    我没有亲自尝试过这种方法、可以在下周内进行研究。 同时、请按照 Ryan 关于使用 ROM 引导加载程序(使用后门引导加载程序)的建议进行操作、也可以在不同的.hex 映像之间进行差异比较。 您也可以在此处随意分享这些十六进制图像以及每个图像的描述。

    谢谢、

    Toby

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

    您好!

    "CC2538.hex: 通过构建项目 CC2538ZNP-WI-SBL"->是的创建的十六进制映像
    "CC2538ZNP-WIT-SBL.HEX: 组合映像 CC2538.hex  +   SBL 映像 (对于 SBL 映像,您是否使用从项目 启动构建的.hex (位于 Z-Stack 3.0.2\projects\Zstack\Utilities\bootload\cC2538_UART)?" ->不、此映像也是通过使用选项 CC2538ZNP-WI-SBL 将工程进行构建而创建的。 此 imate 在"C:\Texas Instruments\Z-Stack 3.0.2\projects\Zstack\ZNP\CC2538\dev"中生成

    当我使用选项 CC2538ZNP-WI-SBL 编译 ZNP 项目时、会同时生成两个映像。

    这两个映像均未检测到 转换器 USB 、只有 CC2538.hex 具有 SBL (因此无需沿着 SBL 映像刷写。

    我附上这两 张图片和 znp.cfg 文件

     

    谢谢!

     

    e2e.ti.com/.../5775.bin.zip

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

    好的、感谢大家的分享。

    请给我一些时间来了解这一点、我将在下周内再次与您联系。

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

    尊敬的 David:

    很抱歉我的回复延迟了。

    我能够在具有 BBB 作为主机的 CC2538EM 上获得一个 ZNP+SBL 映像。

    以下是我采取的步骤:

    • 将 CC2538ZNP-Debug 工程配置与以下 ZNP.cfg:e2e.ti.com/.../znp.cfg 一同使用
    • 使用 C:\Texas Instruments\Z-Stack 3.0.2-S\Projects\Zstack\Utilities\bootload\CC2538_UART 工程。
    • 请按照"用于 CC2538.pdf"( /Documents/CC2538)。

    启动/复位时、器件将处于 SBL 模式。 SBL 的 main()中指出了以下内容:

    //加电时,如果已加载有效映像,请等待大约30秒,以允许
    //主机强制使用引导加载程序模式。 然后、如果未强制使用引导加载程序模式、则执行映像。 如果
    //尚未加载有效映像–立即进入引导加载程序模式。 如果图像
    已标记为有效、则//视为有效。 通过
    计算校验和并将其与存储的值进行比较、可检查标记为新的图像//是否有效。 如果校验和
    //匹配,图像将立即标记为有效。 

    请注意、此 SBL 应用将使用 UART 外设。 您可以随意修改将哪些引脚设置为 TX 和 RX (请参阅函数 sbUartInit)。