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.

[参考译文] WEBENCH®︎工具/CC2538:如何解决此致命错误:(错误-1268 @ 0x90001)设备锁定在硬件故障或 NMI 中

Guru**** 2589275 points
Other Parts Discussed in Thread: CC2538, Z-STACK

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/776343/webench-tools-cc2538-how-to-solve-this-fatal-error-error--1268-0x90001-device-is-locked-up-in-hard-fault-or-in-nmi

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

工具/软件:WEBENCHRegistered设计工具

您好 E2E 社区、

我正在开发 CC2538 Zigbee Z-stack 嵌入式固件。 我正在尝试实现 OTA 升级、以无线方式升级 SampleLight 的固件

为此、我参考 TI 的"Z-stack OTA 升级用户指南"pdf"  

 根据第2章和第4章中的说明、我对 SampleLight 项目进行了以下更改。

1) 1)向应用添加了 OTA 源代码。

             zcl_ota.c、             zcl_ota.h、
             ota_common.c、        ota_common.h、
             ota_signature.c、       ota_signature.h

2) 2)添加了 OTA 连接器配置文件

             "Projects">"Options">"Linker"选项卡

                                  $PROJ_DIR$\..\..\Tools\CC2538DB\CC2538-OTA-Image-A.ICF

3) 3)将 OTA 包含目录添加到包含目录列表中。

             "Projects">"Options">"C/C++ Compiler"

                                  $PROJ_DIR$\...\OTA\Source



4) 4)添加了配置 OTA 编译标志

             "Projects">"Options">"C/C++ Compiler"

                                   ota_client=true
                                   OTA_MMO_sign=true
                                   OTA_HA
                                   OTA_INinitial_image
                                   HAL_IMG_Area=0

5) 5)为 OTA 任务添加了 OSAL zclOTA_EVENT_LOOP 和 zclOTA_Init 任务函数

              OSAL_SampleLight.c

                              #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                     #include "zcl_ota.h"
                              #endif

 

             const pTaskEventHandlerFn tasksArr[]

                              #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                     zclota_event_loop
                              #endif

              void osalInitTasks( void )

                              #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                     zclota_Init( taskID );
                              #endif

之后、我只清理了项目、然后重新构建所有项目。

       生成 结果是

                错误总数:     0
                警告总数:  0

但是、当我尝试使用 SmartRF06 EB 将代码闪存到 CC2638时。 我遇到了一些错误,比如...

         致命错误:无法执行 GO:(错误-1268 @ 0x90001)器件锁定在硬件故障或 NMI 中。

         重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。

        (仿真包8.0.27.9) 会话中止!  

 

如果我尝试刷写任何其他示例代码,则会成功刷写...

所以我想知道这一点…

1.为什么在刷写代码时会生成此错误? 如何解决此错误?...

2.我是否在配置中做了任何错误的事情?...

请建议在示例 Light 示例项目上实现 OTA 是否需要任何其他配置...

谢谢、尊重

Shiv Patil。

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

    器件型号:CC2538

    工具/软件:WEBENCHRegistered设计工具

    您好、E2E 社区、

    我正在开发 CC2538 Zigbee Z-stack 嵌入式固件。 我正在尝试实现 OTA 升级、以无线方式升级 SampleLight 的固件。

    为此、我参考 TI 的"Z-stack OTA 升级用户指南"pdf"  

     根据第2章和第4章中的说明、我对 SampleLight 项目进行了以下更改。

    1) 1)向应用添加了 OTA 源代码。

                  zcl_ota.c、             zcl_ota.h、
                 ota_common.c、        ota_common.h、
                 ota_signature.c、       ota_signature.h

    2) 2)添加了 OTA 连接器配置文件  

                 "Projects">"Options">"Linker"选项卡  

                                       $PROJ_DIR$\..\..\Tools\CC2538DB\CC2538-OTA-Image-A.ICF

    3) 3)将 OTA 包含目录添加到包含目录列表中。

                 "Projects">"Options">"C/C++ Compiler"

                                       $PROJ_DIR$\...\OTA\Source



    4) 4)添加了配置 OTA 编译标志

                 "Projects">"Options">"C/C++ Compiler"

                                        ota_client=true
                                       OTA_MMO_sign=true
                                       OTA_HA
                                       OTA_INinitial_image
                                       HAL_IMG_Area=0

    5) 5)为    OTA 任务添加了 OSAL zclOTA_EVENT_LOOP 和 zclOTA_Init 任务函数

                  OSAL_SampleLight.c

                                  #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                         #include "zcl_ota.h"
                                  #endif

     

                  const pTaskEventHandlerFn tasksArr[]

                                  #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                          zclota_event_loop
                                  #endif

                   void osalInitTasks( void )

                                  #if (定义的 OTA_CLIENT)&&(OTA_CLIENT == true)
                                          zclota_Init( taskID );
                                  #endif

    之后、我只清理了项目、然后重新构建所有项目。

           生成 结果是

                     错误总数:     0  
                    警告总数:  0

    但是、当我尝试使用 SmartRF06 EB 将代码闪存到 CC2638时。 我遇到了一些错误,比如...

             致命错误:无法执行 GO:(错误-1268 @ 0x90001)器件锁定在硬件故障或 NMI 中。

             重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。

            (仿真包8.0.27.9) 会话中止!  

     

    如果我 尝试刷写任何其他示例代码,则会成功刷写...

    所以我想知道这一点…

    1.为什么在刷写代码时会生成此错误? 如何解决此错误?...

    2.我是否在配置中做了任何错误的事情?...

    请建议在示例 Light 示例项目上实现 OTA 是否需要任何其他配置...

    谢谢、尊重

    Shiv Patil。

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

    另请参阅以下部分:
    -3.2.1.2用于 CC2538的映像引导管理器
    -3.2.2 CC2538的 OTA 客户端应用示例
    -3.2.2.1为 CC2538构建初始样片应用

    确保您已构建引导项目(可在 projects/Zstack/ota/Boot/CC2538中找到)。


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

    如上所述、

    我正在尝试"SampleSwirtch_Router_OtaClient_ImageA_withBootloader"示例以测试 CC2538的 OTA 升级。
    还验证了"Z-stack OTA 升级用户指南.pdf"第3节中提到的所有配置
    然后我清理了项目并重新编译代码并开始调试该应用。

    向 sample_app_ota.cfg 文件添加了以下行
    /out/misc/ota_sample_images/5678-1234-0000BBBB.zigbee 1 00:12:4B:00:XX:XX:XX:XX

    我还在 Beagle Bone 上启动了./zigbeeHAgw bbb 和./start_application。

    通过按 O 键、OTA 升级已启动。
    代码成功运行直到最后一帧被传输。

    之后、它卡在 uint8 HalOtaChkDL (uint32 dlImagePreambleOffset)函数中。

    验证此情况后、它将返回故障状态。

    if ((crcControl.programSize > HalOtaAvail ())||(crcControl.programSize ==0)||
    (crcControl.crc[0]=0)||(crcControl.crc[0]==0xFFFFFFFF)

    退货失败;


    我还检查了 crcControl.CRC[0]不等于0或0xFFFFFF.

    CRC 控制的程序大小将是出现故障的原因。

    如何纠正此错误。 或增加闪存的 HalOtavail 大小。

    您能帮我解决这个问题吗?

    谢谢、尊重

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

    据我所知、有用于解锁 CC2538的 ARM 工具、我将在不久的将来找到它并发布。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您似乎已经解决了此问题、并且能够完成 OTA 下载过程: e2e.ti.com/.../782307