Thread 中讨论的其他器件: SYSBIOS、 CC2650、 CC1350
工具/软件:TI-RTOS
我们在 CC2640上有一个运行 TI-RTOS 的 BLE 应用。 它运行良好、只是在某些情况下会冻结、唯一的方法是通过取出电池进行循环供电。
我想我已经把问题缩小到 RTC 计时器莫名停止。 下面是我能够收集的信息、主要是从 CCS 寄存器和 POV 视图中收集的信息:
-我有两种“好”和“坏”模式。 在良好模式下、所有器件都运行良好、但 在某些情况 下 CC2640会进入不良模式并冻结。
-在错误模式下、CCS 调试器显示时钟模块中的 tick 字段被卡住、在暂停和恢复调试器后不会移动。 在良好模式下、当我暂停/恢复调试器时、节拍域会正常上升。
-在良好模式下、我始终会看到 ISRPEND1和 VECTPEND010000 (16)
-在不良模式下、我始终会看到 ISRPEND1和 VECTPENDING 000000 (0)
-调试器还显示 tickSource = ti.sysbios.kl.Clock.TickSource_timer
-我很确定我们在中断20处使用 AON_RTC (常开定时器)
-我认为我不使用内置 SysTick 计时器、因为 STCSR 中的 ENABLE 位设置为0、并且 STRVR 和 STCVR 也设置为0。
-在良好模式下、Hwi 显示所有中断都已启用、其中一个中断正暂挂16
-在错误模式中、Hwi 显示所有中断被启用、无挂起
-在坏模式下,我们始终会看到1个或2个 IRP 指向 ROM
在良好模式下,我们很少看到 IRP 指向 ROM
- Hwi 显示所有中断都以相同的优先级255运行
-在正常和模式下、中断20处的定时器在定时器模块中显示为禁用
-我们使用地址0x400092000处的 AON_RTC (始终运行的定时器)
-在良好模式下,定时器模块显示了“前推阈值”字段,但该字段没有变化
-在错误模式下,定时器模块显示前推阈值字段被卡住
问题:
1) 1)为什么计时器模块在良好和不良模式下都显示"禁用"状态? 是因为调试器停止时钟?
2) 2)什么会导致计时器卡住?
3) 3)我们是否有可能获得过多的堆栈式中断、并且我们正在中断堆栈或从 ISR 中获取错误的返回?
非常感谢您的帮助!
P.S.这是我 在 BLE 论坛上发布的一个问题的 DUP、但我认为最好在这里讨论。 我将关闭另一个帖子、抱歉交叉发布。


