/注/ 作者,刘忠凯,内容摘录自作者发表的期刊文章,已获作者授权发布,内容供学习参考。
Memory Protection功能安全监控机制Functional safety monitoring mechanism of Memory Protection在AUTOSAR中为了保证数据访问过程中不能相互篡改,减少低功能安全等级或者QM的数据影响到功能安全的数据,需要增加内存隔离和内存保护。在AUTOSAR提供了基于APPLICATION级别的功能安全内存保护机制,通过将不同的软件组件分配到不同的APPLICATION中实现内存访问的隔离和内存保护。在上图中根据功能安全的目标,将模块划分为QM、ASIL-B、ASIL-D。对于每个等级的模块组件按照功能安全等级进行划分。需要在内存中定义QM、ASIL-B、ASIL-D的三个等级的RAM和ROM空间,并按照图7的模块将模块内的变量和代码分别映射到QM、ASIL-B、ASIL-D的三个等级的RAM和ROM空间,同时结合图7中灰色的图框(硬件MPU(Memory Protection Unit)功能)实现对内存的保护。一旦出现低ASIL等级或者QM的函数或者变量操作到高功能安全等级的,将回触发硬件MPU保护错误并根据实际应用进行错误处理。基于硬件MPU保护的实现的逻辑如下图所示。基于硬件MPU的内存保护实现机制如图8所示,内存保护机制是基于OS进行管理的,因此在实现内存保护机制中必须依赖于OS的运行。在集成OS操作系统中程序运行中在初始化阶段会根据需要将内存保护的地址设置成默认值,或者将芯片全部内存设置为都可以访问[9]。在OS使用的嵌入式软件中会存在多个Application,每个Application含有多个Task,OS在运行的时候可以通过调度可以切换Application和Task的执行,因此OS执行过程中会实时对Application和Task进行判断,当检测到正在运行的Application或者Task存在存在内存保护机制后后根据设计中定义好的地址范围操作MPU硬件的RAM和ROM地址,将该Application或者Task访问的范围写入到MPU的寄存器,一旦程序接下来运行的地址超过了定义的范围,MPU硬件单元便会触发硬件错误,软件集成者便可以捕获该错误,并设计错误回调函数进行错误处理。