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.

[参考译文] CC2530:复位问题

Guru**** 2587345 points
Other Parts Discussed in Thread: CC2530

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/879607/cc2530-reset-question

器件型号:CC2530

大家好、

客户需要 SBL 复位支持。

芯片:CC2530

堆栈版本:ZHA1.2.2a

设备类型:协调器

他的要求:通过串行端口连接协调器和 Linux 网关并进行固件更新。

 他 》了《Serial_Boot_Loader_for_CC253x、代码运行良好。

他的问题:

网关向协调器发送 RESET 命令以进行固件更新。 但协调 器没有进入引导、而是进入了应用程序代码的开头。

ZStack 中有两个复位函数:SystemReset()和 SystemResetSoft()。 他测试了这两种方法:

 2.1. SystemReset()--在任何情况下,芯片都会进入应用部分。

 2.2. SystemResetSoft()---- 芯片可以在上电后的第一次进入引导、其他时候也可以进入 应用部分。

 2.3.手动上电或下拉复位引脚时、芯片可以进入启动状态。

在其应用中、CC2530无法关闭、并且在实施固件更新时没有复位按钮、唯一的方法是进行软件复位。  需要进行哪些更改才能重置程序并进入引导模式以进行固件更新?

不考虑 OTA、因为协调器设计为与 Linux 网关连接、因此优先选择 SBL。 欢迎提出任何建议。

BR、

维基

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

    您好!

    请参阅 CC2530的串行引导加载程序的第11节:

    11.强制使用引导模式或提早跳转到应用程序代码。

    SBL 从复位矢量接收控制权、并验证是否存在有效的应用程序代码。 如果是这样、SBL 为总线主控提供了一个窗口、在该窗口中强制进入引导模式或立即跳转到应用程序代码。

    如果 CRC 不是0x0000或0xFFFF、并且 CRC-SHADOW 是相同的、则应用程序代码是有效的。

    如果 CRC 不是0xFFFF 的0x0000且 CRC-SHADOW 为0xFFFF、则在应用程序代码图像区域内计算 CRC (这将需要一分钟时间)。 a.如果计算出的 CRC 与读取的 CRC 匹配、则将 CRC 影子编程为该相同的值以加快未来的加电速度。

    3.如果应用程序代码有效、则等待总线主控发送0xf8以强制引导模式、或发送0x07以强制立即跳转到应用程序代码。 a:UART 和 USB 传输的默认等待时间为1分钟。 B. SPI 的默认等待时间为50毫秒。

    4.如果应用程序代码有效且等待到期,则跳转至应用程序代码。

    5.如果应用程序代码无效,请立即跳转至引导代码而不等待,如上所述。

    此外、我建议为主机提供某种通过 RESET 引脚复位器件的方法。

    此致、
    Toby

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

    尊敬的 Toby:

    感谢您的支持。

    这些用于引导过程。客户需要的是:

    应用程序启动后、 程序如何在不断电或复位的情况下跳转到引导程序?

     SystemReset()和 SystemResetSoft()都不工作。

    BR、

    维基

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

    对于启用 SBL 的器件、SBL 代码在任何复位后执行。

    如果 SBL 检测 到应用程序映像有效(正确的 CRC)并且复位是由看门狗引起的、则 SBL 将立即跳转到应用程序代码。
    系统复位会导致看门狗复位。

    SystemResetSoft 是一种软复位、其作用是从开始启动应用程序代码。

    由于目的是让主机向 CC2530写入新的应用程序映像、因此请修改应用程序映像 CRC 以指示这一点。
    OTA 示例可用于:  

    void HalOtaInvRC (void)
    {
    uint16 CRC[2]={0、0xFFFF};
    HalFlashWrite ((HAL_OTA_CRC_ADDR / HAL_FLASH_WORD_SIZE)、(uint8 *) CRC、1);
    } 

    除了 SBL、CRC 的地址将不同。 使用 HAL_SB_CRC_ADDR = 0x2090 (在 hal_board_cfg.h 中定义)。
    然后、CC2530可以调用 SystemReset。 之后、主机可以将新的应用程序映像写入 CC2530。