欢迎光临
我们一直在努力

Cortex-M3:为什么 RTOS 的启动文件需要额外处理 PendSV 和 SVC?

难度:★★★ 本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


前面我们花了大量篇幅讲裸机程序的启动文件。向量表里填好 Reset_Handler、默认中断处理函数,启动代码把 .data 搬好、.bss 清零,然后进入 main。一切都围绕“让 CPU 跑起来”。

但当你把 RTOS 塞进这个环境时,启动文件里有两个异常项突然变得至关重要:PendSV 和 SVC。它们不是普通外设中断,也不是简单的系统异常。它们承载着 RTOS 最核心的两件事:任务切换和系统调用。

如果启动文件没有正确声明它们,或者没有给它们正确的优先级,你的 RTOS 要么跑不起来,要么在某个深夜用 HardFault 把你叫醒。

今天这篇文章,就来拆开 PendSV 和 SVC 在 RTOS 中的真正角色,以及为什么启动文件必须为它们“预留位置”并“排好优先级”。


一、先看启动文件里的两个“钉子户”

打开一个典型的 Cortex‑M3 启动文件,向量表里你会看到这样两项:

DCD SVC_Handler ; 异常号 11
; …

赞(0)
未经允许不得转载:171主机测评 » Cortex-M3:为什么 RTOS 的启动文件需要额外处理 PendSV 和 SVC?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址