在特殊情况下,我遇到硬件故障异常。 ICSR表明这是从systick升级(等待例外= 15)。FreeRTOS ARM皮质从systick硬件故障升级
- 任何想法如何会发生这种情况?
我的猜测是,它的某种死锁的。
- 任何建议如何追踪此(无Atmel工作室)?
我使用FreeRTOS的7.5.2。
UPDATE:
我增加了一些故障寄存器的输出转储。因此,这的确是一个系统定时器总线故障中断标志:
EXCEPTION HANDLER
- ICSR active exception: 3
- ICSR pending exception: 15
- ICSR pending interrupt: 0
- Hardfault status: 0x40000000
- Memory fault status: 0x00
- Bus fault status: 0x04
- Usage fault status: 0x0000
我能够追查例外,一个FreeRTOS的电话:
vTaskDelay(10/portTICK_RATE_MS);
应用程序有2项任务:
- 优先级为2的任务(xTaskCreate的参数)
- 优先级为1的任务
任务1进入一个被信号量锁定的区域,并触及上面提到的行。任务2应该醒来并运行,直到它也想进入锁定区域。
只是因为总线故障与systick挂起,并不意味着它与systick有任何关系。硬故障状态为强制,错误为IMPRECISERR(不准确的数据错误)。我强烈建议您阅读下面的Richard链接,特别是处理不精确的错误。当调用vTaskDelay时,操作系统会在其他地方出现。我怀疑问题发生在与你想象的完全不同的地方! –