1、程序本质
什么叫程序?
- ① 指令
- ②运行过程的数据
程序运行的机制:CPU会去flash读取指令,根据汇编指令来操作数据
2、ARM架构过程调用标准AAPCS
C函数:
- 随意使用R0~R3,无需保护
- R4~R11:可用,先保存,用完要恢复
register int sum asm("r4")
3、中断处理流程
- 保存现场:保存R4~R11之外的寄存器(硬件自动保存)
- 处理中断:保证不破坏R4~R11(硬件调用中断)
- 恢复现场:恢复所有的寄存器(硬件恢复)
谁来保存,谁来恢复?
C函数保证R4~R11不变,其他寄存器由硬件保持不变
返回地址:中断的返回地址(特殊值,触发中断返回)
4、RTOS的核心:保存和恢复现场
每个任务有自己的栈,局部变量保存在栈里,不破坏栈即可
切换任务要保存R4~R11
5、切换任务
- 保存任务A的现场
- 取出下一个任务的栈
- 切换到新任务
6、RTOS本质
- 任务切换:任务有栈,栈的保存和恢复
- 任务的休眠和唤醒:状态决定能否运行(链表)
- 优先级:
- 中断大于任务Task
- 任务间有优先级
- 同步与互斥