Cortex - M RTOS内存保护与安全特性详解
1. 空间隔离与MPU保护区域
当Cortex - M处理器配置为特权/非特权访问模式后,可利用内存保护单元(MPU)将该执行模式扩展到微控制器的所有资源上。在实时操作系统(RTOS)中,应用代码由线程和相关驱动组成。FuSa RTX允许创建内存保护区域,为系统内不同软件组件提供空间隔离。
除Cortex - M0外,大多数Cortex - M处理器在硅供应商设计微控制器时可配备MPU。MPU能定义对不同内存区域和外设的访问保护。FuSa RTX可定义内存保护区域,它是由多个具有特定访问权限的内存区域(闪存、RAM和外设)组成的集合。每个RTOS线程会被分配到一个内存保护区域,确保其完全封装在自己的设备资源中,同时也可声明共享内存区域,通常包含支持线程间通信的全局RTOS对象,如邮件队列。任何试图访问其内存保护区域之外的区域都将导致系统故障。
在架构设计阶段,需将微控制器资源逻辑划分为不同区域(RAM和外设),并分配给具有相同完整性级别的不同进程(RTOS线程和驱动),这些内存资源集合称为区域。这意味着在项目中,要在链接脚本文件中定义和管理每个区域,并在源代码中为不同的RTX对象静态分配RAM到合适的区域。运行时,应用代码还需配置MPU区域以隔离活动区域资源。由于可用的MPU区域数量有限,RTOS内核在进行线程切换时也必须重新配置MPU区域,以确保内存保护区域配置正确。虽然可以手动完成这些配置,但容易出错。幸运的是,CMSIS区域规范定义了一种模板标记语言和实用工具,可图形化设计和更新整体内存配置,然后自动生成必要的链接脚本文件和MPU配置代码。为了更好地理解,下面先介绍手动设置配置的方法。
超级会员免费看
订阅专栏 解锁全文
786

被折叠的 条评论
为什么被折叠?



