"); //-->
MPU(Memory Protection Unit,内存保护单元)在 Cortex-M内核中是可选模块,带MPU的微控制器允许内存映射(包括Flash、RAM和外围设备)细分为若干区域,分别给每个区域分配不同的访问权限。
FreeRTOS-MPU是FreeRTOS针对MPU实现的一个安全版本,支持ARMv7-M(Cortex-M3, Cortex-M4 和 Cortex-M7)和ARMv8-M (Cortex-M23和Cortex-M33) 内核的微控制器。
针对ARMv7-M的FreeRTOS移植存在两个版本,一个支持MPU,一个不支持。针对ARMv8-M只有一个移植版本,通过编译开关控制是否支持MPU。
FreeRTOS通过将任务分为特权和非特权运行模式和限制对RAM、外设、可执行代码、任务堆栈内存的访问,使得应用更健壮和安全。例如,防止代码从RAM中执行可以获得巨大的好处,因为这样做可以防止许多攻击向量,如缓冲区溢出漏洞或加载到RAM中的恶意代码的执行。
使用MPU必然会使应用程序设计更加复杂,首先必须确定MPU的内存区域限制并向RTOS进行描述,其次MPU限制应用程序任务可以做什么和不能做什么。
MPU的策略
创建一个将每个任务限制在其自己的内存区域的应用程序可能是最安全的,但它也是设计和实现最复杂的。通常最好使用一个MPU来创建一个伪进程和线程模型——允许线程组共享内存空间。例如,创建一个可被可信的第一方代码访问的内存空间,以及一个仅可被不可信的第三方代码访问的内存空间。
FreeRTOS-MPU特性
兼容ARM Cortex-M3和Cortex-M4F标准移植。
可以创建以特权模式或非特权模式运行的任务。非特权任务只能访问它们自己的堆栈和最多三个用户可定义的内存区域(每个任务三个)。用户可定义内存区域是在创建任务时分配给任务的,如果需要,可以在运行时重新配置。
用户可定义的内存区域可以单独参数化。例如,一些区域可能被设置为只读,而另一些区域可能被设置为不可执行(在ARM术语中简称为XN),等等。
非特权任务之间不共享数据内存,但非特权任务可以使用标准队列和信号量机制相互传递消息。可以通过使用用户可定义的内存区域显式地创建共享内存区域,但是不建议这样做。
特权模式任务可以将自己设置为非特权模式,但一旦进入非特权模式,它就不能再将自己设置为特权模式。
FreeRTOS API位于Flash的一个区域,该区域只能在微控制器处于特权模式(调用API函数导致临时切换到特权模式)时访问。
内核维护的数据位于RAM的一个区域,只有在微控制器处于特权模式时才能访问。
系统外设只能在微控制器处于特权模式时访问。任何代码都可以访问标准外设(UART等),但是可以使用可定义的内存区域显式地对其进行保护。
FreeRTOS-MPU可以创建两种类型的任务:
特权任务:特权任务可以访问整个内存映射。特权任务可以使用xTaskCreate()或xTaskCreateRestricted() API函数来创建。
非特权任务:非特权任务只能访问它的堆栈。此外,可以授予它最多三个用户可定义内存区域的访问权限(每个任务三个)。非特权任务只能使用xTaskCreateRestricted()创建。注意,xTaskCreate()不能用于创建非特权任务。
如果一个任务想要使用MPU,那么必须提供以下附加信息:
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
瑞萨电子推出RZ/A3M,面向经济型高性能HMI解决方案扩展RZ/A MPU产品线
嵌入式操作系统FreeRTOS的原理与实现
谷歌正与Marvell洽谈开发两款AI推理芯片,有望于2027年试产
PIC64GX 64位四核MPU
600MHz高速 MPU:三大特点助力实现实时工业控制
基于STC89C51出租计费器设计方案
嵌入式操作系统FreeRTOS的原理与实现
STM32 MPU是什么产品?了解嵌入式系统中微处理器的新变化
MPC850中复位逻辑和CPM协议切换的CPLD实现
瑞萨面向具备视觉AI和实时控制功能的下一代机器人推出功能强大的单芯片RZ/V2H MPU
移植 FreeRTOS 環境下實現Web Server
简单看懂CPU、MCU、MPU、SOC和MCM的区别
Microchip推出SAMA7D65系列微处理器,集成先进图形与连接功能的SiP/SoC解决方案
分享STM32F103上移植UCOSII和FreeRTOS
日立 HD6303 8位单片机
FreeRTOS,xSemaphoreTake 请问FreeRTOS中xSemaphoreTake()函数是干什么用的
MPU图形开发方案培训教程
System Initialization for the OMAP5910 Device
MPU-6050模块,三轴陀螺仪+三轴加速度
英飞凌AURIX™ TC3x新增支持FreeRTOS
Microchip推出车规级系统封装(SiP)混合型单片机SAM9X75 专为汽车及电动出行人机界面(HMI)应用而打造
移植 FreeRTOS 環境下實現Web Server
一种嵌入式的太阳能干燥实时监控系统的设计方案
瑞萨面向具备视觉AI和实时控制功能的下一代机器人 推出功能强大的单芯片RZ/V2H MPU
MPU GUI开发工具Ensemble Graphics Toolkit(EGT)
用Harmony 3玩转MPU培训教程
移植 FreeRTOS 環境下實現Web Server电路图
单片机技术的发展与单片机应用的广泛选择
意法半导体发布STM32MP23高性价比MPU,并延长对OpenSTLinux版本的支持期限
Microchip MPU Bare Metal开发培训教程