Operating system ARM Cortex CPU的内存保护策略应该是什么?
我需要为ARM Cortex M3/M4处理器实现一个带有MPU的多任务系统 在该系统中,将有一个内核,它以特权模式管理资源,以非特权模式管理用户应用程序。我想将用户应用程序与其他it和系统资源分开 所以,当我切换到一个新任务时,我释放了用户应用程序的堆栈和全局内存区域。 使用ARM Cortex MPU寄存器可以轻松完成 但问题是,当发生上下文切换时,我还需要使用内核的一些全局变量 例如,在上下文切换期间,我调用一个函数来获取PendSV处理程序中的下一个TCB,但任务池不在用户应用程序区域内,它受到用户应用程序的保护 所以,似乎应该有平衡,对吗?什么是安全有效的记忆保护策略 当调用Yield函数时,Privilieged模式可以在上下文切换之前提出,但这似乎不是一个好的解决方案Operating system ARM Cortex CPU的内存保护策略应该是什么?,operating-system,rtos,context-switching,mpu,Operating System,Rtos,Context Switching,Mpu,我需要为ARM Cortex M3/M4处理器实现一个带有MPU的多任务系统 在该系统中,将有一个内核,它以特权模式管理资源,以非特权模式管理用户应用程序。我想将用户应用程序与其他it和系统资源分开 所以,当我切换到一个新任务时,我释放了用户应用程序的堆栈和全局内存区域。 使用ARM Cortex MPU寄存器可以轻松完成 但问题是,当发生上下文切换时,我还需要使用内核的一些全局变量 例如,在上下文切换期间,我调用一个函数来获取PendSV处理程序中的下一个TCB,但任务池不在用户应用程序区域内
在这一问题上的总体战略是什么 也许您可以看看现有的开源实现,看看在那里做出了哪些设计决策。例如,FreeRTOS具有Cortex-M MPU支持;它可能无法直接回答您的确切问题,您可能需要检查源代码以获得完整的详细信息
可能将数据内存划分为三个区域:用户、内核和共享 也许您可以看看现有的开源实现,看看在那里做出了哪些设计决策。例如,FreeRTOS具有Cortex-M MPU支持;它可能无法直接回答您的确切问题,您可能需要检查源代码以获得完整的详细信息
可能将数据内存划分为三个区域:用户、内核和共享 似乎任何可能导致上下文切换的操作系统功能都需要进入特权模式,只有在“返回”以完成上下文切换后才返回到非特权模式。这就是我处理上下文切换的内核。在特权模式下,受保护的内存区域可以根据需要作为上下文切换的一部分进行更改。任何可能导致上下文切换的操作系统功能似乎都需要进入特权模式,只有在“返回”以完成上下文切换后才恢复为非特权。这就是我处理上下文切换的内核。在特权模式下,受保护的内存区域可以根据需要作为上下文切换的一部分进行更改。