蜂鸟e203处理器对中断上下文的处理

  1. 背景

e203处理器是一款RISC-V架构(RV32I)CPU为核心构建的开源MCU。笔者在e203处理器上开发自己的RTOS。了解RTOS对于中断的处理流程对于理解CPU上程序的运行模型非常重要。e203处理器官方提供的SDK中提供了对于中断处理的系统逻辑,使用SDK进行固件开发,尤其是standalone固件,默认无需关心相关的底层实现。本文对于SDK中提供的中断处理程序进行了分析,本文对相关内容做一记录。

2.相关理论

学习过任何一个操作系统或者阅读分析过任何一个操作系统(哪怕是RTOS)相关逻辑后都会了解中断上下文的大体处理过程。大致上中断发生时,操作系统首先需要保存中断上下文,然后切换到中断栈,执行注册的处理函数,切换回内核栈,恢复中断上下文等等。

不同架构上的实现主要差别在于上下文的内容会略有差异,另外像Linux内核这样的Rich OS实现细节上会复杂一些,RTOS的实现相对简单。

本文提到的SDK中的处理逻辑包含在200行内的汇编代码内,本文主要针对该汇编程序进行解读。

3.代码实现

SDK中对于中断的处理程序在hbird-sdk/SoC/hbirdv2/Common/Source/GCC/intexc_hbirdv2.S文件中。

上层逻辑如下:

首先保存中断上下文,保存一般寄存器的上下文内容。实现在宏定义SAVE_CONTEXT中。

可以看到首先为保存寄存器调整栈指针,留出存储空间。下面寄存器是一定要保存的:

编号

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值