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 ZC 和 CC2530 ZR 上的无线升级、尽管数据传入 CC2538 ZC 的 UART

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/695613/cc2538-over-the-air-upgrade-on-cc2538-zc-and-cc2530-zr-though-data-coming-to-uart-of-cc2538-zc

器件型号:CC2538

问题在于:

ZStack 1.2.1家庭自动化安装程序提供的 OTA 指南告诉"用户必须有一个连接到 PC 的附加硬件、其中包含与 OTA 系统兼容的特殊类型的二进制文件才能工作、 然后、此附加硬件/软件狗可以更新网络中任何 ZigBee 节点的 FW "。 如果我在这里了解到任何问题、请纠正我的问题。

2.我的系统使用一个通过 UART 与 cc2538 ZC 通信的 wifi 模块。 此 WiFi 模块通过 LAN 或远程 Web 服务器直接从移动应用程序获取数据、然后将此数据发送到 cc2538、该 CC2538会解释和处理用于打开/关闭网络中任何 ZR 的命令。 现在、我希望 OTA 系统的工作方式是、我可以在移动应用程序(或存储)中保留用于 ZR 的固件副本、并将此数据发送到 ZC、以便重写/更新其固件。 为了实现这一点、我应该怎么做?  

3.如果上述点可行且可行、如何将所有 ZRS 封装的 FW 更新到相同的 ZC?

提前感谢!

Saurabh

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

    如果我理解正确、您基本上希望用 WiFi 模块替换 OtaServer PC 工具。 在完全了解 OTA 软件狗示例中已存在的 OTA 升级集群和 OtaServer 用于控制此信息的 UART 协议后、可以执行此操作。 一旦您充分了解了从控制台传入的 OTA_ProcSysAppMsg 案例和从客户端 ZRS 传入的 OTA_Dongle_ProcessIncomingMsg 以及该软件狗如何处理每个案例、您就可以自定义您的 WiFi 模块软件、使其成为 OTA 控制台本身。

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

    您好、Ryan  

    感谢您的回答。 您能否确认按照您建议的方法让我:

    1.升级协调器(ZC)上的固件、使 WiFi (ESP8266)通过 UART 连接。

    2.升级属于第1点中提到的 ZC 的 PAN 上所有路由器(ZRS)上的 FW。  

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.可以、您可以通过后门引导加载程序更新 CC2538、您可以参阅 processors.wiki.ti.com/.../CC2538_Bootloader_Backdoor
    2.要更新网络中的 ZR/ZED、ZC/ZD/ZED 必须支持 OTA 群集。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Yikai。 谢谢。 我的目标是仅实施第1点。 我通过了链接: processors.wiki.ti.com/.../CC2538_Bootloader_Backdoor 。 我确实看到了"CC2538 SoC 的串行引导加载程序
    文档编号:SWRA431,版本1.1",它使我对确切从何处开始感到困惑。 希望您能提出一些建议。
    我的 ESP8266仅适用于 AT 命令。 ZC cc2538与 ESP 模块通信、我无法更改 ESP8266上的固件(我有、但在这种情况下、我必须重写在 cc2538上运行的整个代码)、但是、我可以在 ESP 模块中添加定制 AT 命令、并在需要时使用它们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC2538串行后门引导加载程序也无法更改。 如果无法更改 ESP8266上的 FW、我假设您必须实施自己的串行引导加载程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无法使应用程序代码在启用 SBL_CLIENT 标志的情况下执行,并按照串行引导加载程序文档执行所有操作。 我正在附加链接器文件内容。 请帮助诊断问题。  

    
    
    
    //定义符号__ICFEDIT_SIZE _cstack__= 0x4000;
    定义大小为4G 的存储器内存;
    
    //定义区域 INTVEC =内存:[从0x00200000到0x0020011B];
    定义区域 SBL_CHECKSUM =内存:[从0x0020011C 到0x00200133];
    
    定义区域闪存=
    
    0x0027MFF];从0x0027MFF]定义区域:[0x0027MFF]
    define region CP_IMPC_283 = mem:[从0x0027FED4到0x0027FF1F];
    define region CP_CAPK_283 = mem:[从0x0027FF20到0x0027FF47];
    define region CP_DEPK_283 = mem:[从0x0027FFB4]
    
    
    ;从0x0027FFCc 到0x27FFCc = 0x0027MMEFFB4C];从0x0027FFCc 到0x27FFCc = 0x270027MMEFFC;从0x27FFCb = 0x0027FFC];从0x00270027FFCb = 0x27FFCb = 0x270027Dcb = 0x27FFCb3到0x27FFCb;从区域0x27FFCc = 0x
    定义区域 CP_IEEE = mem:[从0x0027FFCC 到0x0027FFD3];
    定义区域 FLASH_CCA = mem:[从0x0027FFD4到0x0027FFDF];
    定义区域 FLASH_LCK = mem:[从0x0027FFE0到0x0027FFF];
    //块 CSTAFFD4到0x2000FFF = 0x2000m;定义
    区域对齐= 0x2000FFSRAW = 0x2000FFF];[从0x2000FFF = 0x2000FFF]
    定义块堆、对齐= 8、大小= 0x100{};
    定义导出的符号 STACK_TOP = 0x20007FFF + 1;
    
    放置在 FLASH_CCA 的开头{readonly section .CCA};
    放置在 CP_IEEE 的开头{readonly section IEEE_address_space};
    放置在 CP_DEPK 的开头{readonly section DEV_private_key_address_space};
    放置在 CP_CAPK 的开头{readonly section CA_public_key_address_space};
    放置在 CP_IMPC 的开头{readonly section implicate_certificate_address_space};
    放置在 CP_DEPT_283的开头{readonly section PRIV_key_283_address_space};
    放置在 CP_CAPK_ADDRK_POST_ENT_283_START SECTION}的开头;只放置在 CC283_ADDRT_SPACE 的开头
    
    置于闪存中{只读};
    置于 SRAM 的开头{段 VTABLE };
    置于 SRAM 中{ readwrite, block heap };
    
    
    
    
    
    通过复制进行初始化{ readwrite };
    不初始化{段.noinit };
    
    
    置于 SBL_CHECKSUM 的开头{只读段.CHECKSUM };
    放入 SBL_CHECKSUM {只读段.IMAGE_STATUS };
    
    不要初始化{段.STACK };
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否曾按照 processors.wiki.ti.com/.../CC2538_Bootloader_Backdoor 中的步骤 使其适用于您的 CC2538?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我确实进行了介绍、但尚未遵循、因为根据我的理解、第一步是刷写串行引导加载程序、然后刷写使用修改后的链接器文件编译的应用程序代码、其中包含校验和详细信息、并启用 SBL_client 标志。
    我一直处于使应用程序代码正常工作的阶段。
    我是否需要启用后门才能解决上述问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    串行引导加载程序是 CC2538中的 ROM 代码、您无需下载任何内容即可使其正常工作。