PendSV和SVCall都是由软件调用的——SVCall是通过调用svc指令来调用的,PendSV是通过设置Cortex-M的特定寄存器来调用的。PendSV 用于上下文切换,SVCall 用于访问操作系统内核功能和设备驱动程序。
- 是什么决定了PendSV用于上下文切换?为什么 SVCall 不这样做?据我所知,可以将 SVCall 的优先级配置为较低的值。
- 尽管有处理程序,但在线程模式下我们无法访问 SVCall 之外的设备驱动程序是什么?它也适用于 FreeRTOS 吗?我从未使用过 SVC 来与硬件交互。
- PendSV代表Pendable Service,SVCall代表Supervisor Call,为什么它们是这样的名字呢?起源是什么?
我想知道的不仅仅是“PendSV 用于上下文切换,SVCall 用于启用调度程序”。我找不到更多信息。
干杯