(2)被终止的违规任务(或进程)可能拥有内核对象、缓冲区、I/O等资源。这些资源需要被释放,以避免影响其他任务/进程。
(3)导致故障的任务可能会控制制动器或其他类型的输出,需将任务置于安全状态,以避免对人员或资产造成伤害。嵌入式系统设计者应提供用户定义的回调函数,以处理系统特定的操作。
在任务创建过程中,将回调函数存储在任务的控制块(TCB)中。为提高系统安全性,只能在系统启动时创建任务,此时CPU处于特权模式;运行时只能在故障时删除任务。由于TCB位于RTOS空间中,因此无法从用户代码访问回调函数,从而防止潜在的不安全和不可靠的代码无意中或恶意地调用回调函数。
(4)如果嵌入式系统具有数据存储功能,则可以记录故障相关的信息,如违规任务的性质、CPU寄存器的值、所采取的操作等。
(5)根据导致故障的任务,可以重新启动,使系统可以错误中恢复。
(6)如果系统能够恢复,并且如果系统包含显示,则警告提示非常有用。此外,如果系统具有网络连接,则通知服务部门和开发团队可以在将来的版本中避免此问题。
(7)如果系统无法恢复,除了重置系统之外,可能没有其他选择。
可以更改MPU进程表,使其包含每个任务的回调函数,以便检测到故障时从RTOS上下文切换代码调用。
如果所有的任务都需要对故障执行相同的操作,那么可以不使用此功能,或者让所有MPU进程表都指向相同的回调函数。后一种选择更最灵活,因为它为未来的版本提供了更大的灵活性。但你可能需要咨询RTOS供应商,以确定此功能是否可用。