繁体   English   中英

什么是ARM Cortex CPU的内存保护策略?

[英]What should be Memory Protection Strategy for ARM Cortex CPU?

我需要用MPU为ARM Cortex M3 / M4处理器实现多任务系统。

在该系统中,将存在一个内核,该内核以特权模式管理资源,而以非特权模式管理用户应用程序。 我想将User Application与其他应用程序和系统资源分开。

因此,当我切换到新任务时,我将释放用户应用程序的堆栈和全局内存区域。 使用ARM Cortex MPU寄存器可以轻松完成此操作。

但是问题是,当发生上下文切换时,我还需要使用一些内核的全局变量。

例如,我正在调用一个函数来在上下文切换期间在PendSV Handler中获取下一个TCB,但是任务池超出了用户应用程序区域,并且受到了用户应用程序的保护。

因此,似乎应该保持平衡,对吗? 有哪些安全有效的内存保护策略?

当调用Yield函数时,可以在上下文切换之前提升特权模式,但这似乎不是一个好的解决方案。

在这个问题上的一般策略是什么?

也许您可以看一下现有的开源实现,并查看在那里做出了哪些设计决策。 例如,FreeRTOS 在这里具有Cortex-M MPU支持。 它可能无法直接回答您的确切问题,并且您可能必须检查源代码以获取完整的详细信息。

可能将数据存储器分为三个区域-用户,内核和共享。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM