Arm cortex-m4自定义os设计

时间:2016-07-04 21:50:37

标签: arm kernel rtos cortex-m

我正在为ARM Cortex-M4核心编写一个小操作系统,并有一些疑问。我决定通过Supervisor Call(SVC)放置os功能,我保留并维护所有内核对象和内核函数。

但是,这是一个好主意,因为所有内核代码都会执行并占用用户任务堆栈吗?

我唯一想到的是,在执行内核代码时,通过supervisor调用跳转到内核堆栈并锁定调度程序。这种方法是好的吗?

1 个答案:

答案 0 :(得分:1)

在Cortex-M上,您有一个进程堆栈指针(PSP)和一个主堆栈指针(MSP)。中断使用主堆栈指针,任务应使用进程堆栈指针。因此,在SVC中完成的任何内核工作都使用MSP,因此不应干扰使用PSP的任务堆栈。切换任务时,将PSP设置为新堆栈。我会阅读Cortex-M4通用用户指南的异常处理部分。另外,我建议阅读并阅读ARM Cortex M3 / M4的权威指南,因为它有一个关于RTOS的很好的部分。 Cortex的设计采用RTOS,并提供了许多有用的功能。

注意:除非您将此作为学习练习,或者只是想要编写自己的操作系统,否则您最好使用FreeRTOS之类的东西,它经过了很好的测试并提供了您可能使用的所有功能