FreeRTOS学习笔记——(1)ARM架构调用标准AAPCS、现场的保存与恢复

系列文章目录

FreeRTOS学习笔记—— 系列文章目录


前言

FreeRTOS 是一种实时操作系统相比于裸机编程有诸多优势,网络上有很多对比的文章,本专栏内容主要记录本人学习FreeRTOS 的笔记以便后续复盘。


一、ARM架构调用标准AAPCS

1、寄存器介绍

CPU中共有 17 个寄存器:

寄存器备注
R0 - - -R34个寄存器用来传参
R4 - - -R118个寄存器保存局部变量
R12内部调用暂时寄存器;别名: IP
R13栈;别名:SP
R14用来保存函数的返回地址;别名:LR
R15用来跳转到下一个执行的命令;别名:PC
R16程序状态寄存器;别名:PSR

2、寄存器使用规则

  1. 参数个数不超过4个时,用 R0 至 R3 ,这 4 个寄存器来传递参数,其中 R0 可传递返回值。当参数个数超过 4 个时,用栈传递。

  2. R0 至 R3 ,这 4 个寄存器无需保护它们;即发送中断无需恢复寄存器R0 至 R3 的值。

  3. R4 至 R11 ,这 8 个寄存器要保证用完后不会被修改;即寄存器保护,这些寄存器可以使用,使用前先保存内容,用完后原内容要恢复。

二、现场的保存与恢复

在发生中断时先保存现场,再去处理中断,最后恢复现场。
1、保存现场:就是保存所有寄存器的值;当发生中断的瞬间,栈会自动保存无需保护的寄存器,如图:
在这里插入图片描述
将这些寄存器保存在栈中。

2、调用处理函数:发生中断,C函数会保证不会破坏 R4 至 R11
3、恢复现场:硬件恢复上图保存的寄存器值。

注:图中的返回地址中断的返回地址,即从哪里发生中断,中断处理完后,就从哪里继续执行。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值