RTOS 技术:用户管理、电源管理与看门狗监控
1. 用户管理与 SVC 异常
在某些项目中,可能需要将 RTOS 配置为使线程以非特权模式运行。当 RTOS 运行且进入 main() 函数时,线程代码将无法写入 NVIC(嵌套向量中断控制器),因为处于非特权线程模式,无法启用任何中断源。为了让线程代码访问 NVIC,需要将执行模式提升到处理程序模式,以获得对所有 Cortex - M 处理器寄存器的完全特权访问,这可以通过执行 SVC(系统服务调用)指令来实现。
练习 11.2:RTOS 和用户 SVC 异常
以下是具体操作步骤:
1. 打开 Pack 安装程序。
2. 选择 Boards::Designers Guide Tutorial。
3. 选择示例选项卡,将 “Ex 11.2 RTOS USER SVC” 复制到教程目录。
4. 检查 RTX_Conf_CM.c 文件,在 Thread Configuration 部分,将线程执行的操作模式设置为 “Unprivileged mode”。
5. 项目中添加了一个名为 svc_user.c 的新文件,可从 “Add New Item” 对话框中作为 “User Code Template”(CMSIS - RTOS User SVC)获取。
6. 打开 SVC_Tables.c 文件,这是 SVC 中断的查找表。示例中仅需 __SVC_1,需要添加导入名称和表项:
#define USER_SVC_COUNT 1
// Number of user SVC functions
exter
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



