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:如何查找 FAULT_ISR()原因

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

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/570357/cc2538-how-to-find-fault_isr-reason

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

您好!

我有一个 CC2538、使用 Z-Stack Home 1.2.1。 代码在应用层中有 soma 变化、但在较低的层中、标准是完整的。 几天前、我的电路板复位 、复位原因是看门狗复位。 之后 、设备从网络中退出、几分钟后 、设备就会阻塞。 我使用除法器分析代码,禁用 TimerWatchdog,当出现问题时,代码会在 FaultISR()上出现。

有人能不能解释我如何找到 FaultISR 原因?

是否存在报告 IRS 故障的寄存器?

"Call Stack"n´t 有任何可用信息、只有以下信息:

FAULTISR

[PC = 0x20003000]

此致

Nalgenes

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

    我对上一个帖子进行了新更新。 我再次调试了相同的代码、同样的问题再次出现、但在调用堆栈中、我具有以下序列:

    FaultISR

    OSAL_RUN_SYSTEM
    OSAL_Start_SYSTEM
    主程序
    [_call_main + 0x9]

    在 osal_run_system 内部、序列指针位于例程"hal_ProcessPoll()"中、但在该例程中、我不执行任何操作。

    此致

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

    您好、Nalves、

    请查看 IAR 的此技术手册23721、其中介绍了如何调试来自某些微控制器寄存器的中断源。

    https://www.iar.com/support/tech-notes/debugger/debugging-a-hardfault-on-cortex-m/

    但愿这对您有所帮助。

    此致、

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

    您好、Nalves、  

    我还在 CC2538上使用 Z-Stack、但它具有智能能源功能。

    根据我的经验,由于内存问题,通常会调用 FaultISR()。 我不确定到底是哪种原因,但它将是以下原因之一:堆内存溢出、不使用 osal_mem_free ()释放动态内存或超出范围的数组索引。  

    仔细检查您最近的更改、并确保这些更改都不是原因。

    很难跟踪此故障的原因,因为内存管理器往往会在导致此故障的实际代码行之后的一段时间内调用 faultISR()。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦,如果您使用的是 MT_TransportAlloc()或 MT_TransportSend(),请确保您不使用 osal_mem_free (),osal 系统稍后会执行此操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dan 和 Jos é Maria、您好!

    搜索几个小时后、我找到了最好的方法来调试故障 ISR 原因、 但更重要的是、这种情况发生的原因是、问题仅发生在一个 PCB 原型中、原因是缺少32MHz 晶体上的一个相关电容器。 我不知道原因、但在工作了几个小时后、器件开始运行异常、在上电复位后、代码损坏。 通过 FAULTSTAT 寄存器分析故障 ISR 问题的原因、原因总是比较缓和、在某些情况下、原因是 IERR 造成的、而在其他情况下、原因是 IMPRE 造成的、依此类推。

    此致

    Nalgenes