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.

[参考译文] RTOS/TM4C129XNCZAD:TI-RTOS 调试

Guru**** 2394305 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/689779/rtos-tm4c129xnczad-ti-rtos-debugging

器件型号:TM4C129XNCZAD
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

我正在寻求一种通用方法来确定 TI-RTOS 项目为何达到下面屏幕截图中所示的 abort()。 我有几个任务、我不确定是什么触发了我的错误。

打印到控制台的六个值是什么? 我假设 FSR 是"故障状态寄存器"、但在这种情况下、存储器浏览器告诉我 FAULT_STAT 被设置为0x00000400 (不精确的数据总线错误)。  BFARV 位未置位、因此我无法在 FAULTADDR 寄存器中看到导致故障的地址

根据 下面的屏幕截图、在诊断 StellarisRegistered微控制器中的软件故障 AN01286中描述的异常堆栈框表示 PC 值为0x20000548。 此 SRAM 位置似乎没有操作码。 其他值似乎与内核寄存器不匹配。 LR 值还指示 PC 正在从 SRAM 运行。 我不知道 SRAM 中包含什么代码或如何对其进行调试。



该指南说:"如果您的故障处理程序函数除了简单的无穷大循环之外还有任何代码、则可能会使用一些堆栈空间。 您必须将堆栈指针的值调整为此数量、才能找到异常堆栈帧的起始位置。" abort()是否取代 FaultISR()? pem4f.c 文件似乎将 ti_sysbios_family_arm_m3_Hwi_excHandlerAsm__i 放置在故障向量处。 故障处理程序函数的大小是多少? 我是否查看了实际的异常堆栈帧?

我不确定如何根据此输出在我的代码中查找故障。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    数据表指出、如果分配了浮点状态、则堆栈框具有额外的值。 我如何判断情况是否如此?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CPAC 显示 FPU 已启用、但额外的堆栈帧值从开头开始;AN01286 (调试文档)中的序列不会受到影响(相对于堆栈顶部)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Peter:

    您看过以下内容了: training.ti.com/debugging-common-application-issues-ti-rtos

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这看起来很有希望。 我会观看并报告。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的问题不一致

    大多数视频都侧重于内存问题。 我的堆栈设置得非常高、我在 ROV 中看不到红色数字的任务。

    当 m3Hwi.enableException = true 时、我在 ROV HWI 窗口中看到异常 IMPRECISERR。 ROV 还显示 PC = 0x2660、根据分解、它位于 IPTxPacket()中。 TCPWorker 被抢占。 任何堆栈峰值都不超过包括 HWI 堆栈在内的堆栈大小。

    将 Hwi 异常 PC、SP 和 LR 值复制回寄存器会将调试器放置在一个名为 ipout.c 的 NDK_2_25_00_09文件中、单步执行代码会导致向控制台打印错误"器件在硬故障或 NMI 中锁定"

    是什么导致 NDK 以这种方式运行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我遇到了另一个异常、称为 INVSTATE。 此时、PC 位于0x20002de8、但 LR 位于0xA1C1、这是从 ti_ndk_config_ip_init ()调用的 CfgAddEntry()
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Todd、

    您是否会碰巧知道如何将异常与硬件故障相关联? 我的问题可能与硬件有关。

    我运行了一个测试、在该测试中、被测器件(DUT)连接到其他两个器件并放置了30秒。 DUT 有一个例外5次、或者50%的时间。

    然后、我在 EK-TM4C124XL 上运行了相同的代码。 LaunchPad 从未有过例外。

    DUT 使用 TM4C1294K、Launchpad 使用 TM4C1294N。 ICDI 和 XDS110也不同。 这些差异似乎微不足道。

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

    您能否从 ROV->Hwi 模块视图中共享"异常"选项卡?

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

    Ashish、您好!

    下面是"例外"选项卡的视图。电路板设计人员将 VDDC 引脚连接到3.3V 网络。 为了解决他的问题、他提起了销钉。 我怀疑没有电容、位会翻转、芯片会进入某种通态。 这听起来是否合理?

    例外情况似乎不一致。 例如,这一例外与我上面提到的两个例外不符。

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

    [引用 user="Peter Borenstein"]我正在寻求一种通用方法来确定 TI-RTOS 项目为何会达到以下屏幕截图中所示的 abort()

    因为内核发布了异常并停止了 IOS 执行。  似乎 是硬件故障处理程序、如果它退出、则应进入 while (1)循环以获得总线错误不精确。  也许  一个进入数组缓冲器的缓冲器或指针被硬件丢失或损坏、并且在 AHB 上引起了数据冲突、所以 CPU 说不在我的手表上并且布置了 INT 0x3?

    检查 ROV 异常回调 跟踪以查看停止 执行的位置和(模块)。

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

    [引用 user="Peter Borenstein"] DUT 使用 TM4C1294K、Launchpad 使用 TM4C1294N[/quot]

    那么、您是否更改了 CCS 中的目标以使用 KCPDT 并调整了闪存存储器边界? 回想 一下在  从 NCPDT 转换 到 KCPDT 512KB 闪存大小后、RTOS 矢量表查找 Tivaware 驱动程序库的奇怪问题。