Thread 中讨论的其他器件:EK-TM4C1294XL、 SYSBIOS
工具/软件:TI-RTOS
尊敬的所有人:
我有一个简单的配置、在所有三个 SPI ADC (连接到三个不同的 SSI)都准备好数据时、就会发生一个 GPIO 中断。 GPIO 中断由 Hwi 处理、Hwi 从 ADC 读取数据、然后布置 Swi。 还有一个每50ms 调用一次的小时钟函数(3us)。 该项目基于 TI-RTOS 示例>> EK-TM4C1294XL 评估套件>>驱动程序示例>> TI 驱动程序示例>>空示例>>空项目。
Swi 每次被正确布置和执行几秒钟、然后它停止执行、而 ROV 一直显示它被布置(在故障后从不显示空闲)。 这是一种情况。 另一个是、它运行几秒钟、然后崩溃:
TI.SYSBIOS.family.ARM.m3/Hwi:第1095行:E_hardFault:Forced
TI.SYSBIOS.family.ARM.m3/Hwi:第1207行:E_usageFault:INVPC:无效 PC
在 PC = 0x00000000的后台线程中发生异常。
内核0:ThreadType_Task 中发生异常。
任务名称:{unknown-instance-name}、句柄:0x20002bf4。
任务堆栈基地址:0x20003000。
任务堆栈大小:0x800。
如果我不使用时钟函数、则第一种情况永远不会发生、只有第二种情况(换句话说、每次都崩溃)。
系统堆栈为1024、因此我认为没有溢出。
空闲堆栈为2048、远高于峰值堆栈使用量(我在 ROV 的 Hwi 部分中检查)。
LoggerStopMode 报告没有地址(地址 N/A)。 也许这告诉我一些事情...
一个有趣的事情是、当我从时钟函数布置 Swi 时(这是一个半错误的)、一切都正常。 Swi 仅在从 Hwi 中发布时才被阻止、但 Hwi 继续照常运行。
如果有任何帮助、我将不胜感激。
提前感谢、
米兰