通过SWI异常中断指令,在用户模式下应用程序可以调用系统模式下的代码,在操作系统中表现为系统调用,
那这个过程又是如何实现的呢?带着疑问让我们来学习吧!
在SWI指令中包括一个24位的立即数(中断调用号),该立即数指示了用户要请求的特定的调用功能,所以在SWI的异常中断中要读取这个中断调用号,然后根据中断号,来调用相应的处理程序。这个过程可以分两个步骤:
1.SWI异常中断处理程序
由于是在底层操作所以这个异常中断处理程序得用汇编语言编写,描述如下:
area top_swi code readonly
export swi_headler
swi_headler
stmfd sp!, {r0-r12, lr} ; 保存r0至r12,lr的寄存器值
ldr r0, [lr, #-4]; 从存储器中取得SWI指令的所在地址
bic r0, r0, #FF000000; 读取24位中断调用号
mov r1, sp
;================================================
bl swi_service_func; 调用功能服务函数,见下面
; 中断调用号通过r0寄存器传入
; 参数通过r1寄存器传入
;================================================
ldmfd sp!, {r0-r12, pc}^ ;恢复调用前的r0至r12,离开中断处理程序
end
2.功能服务程序
编写利用从中断处理函数获得的中断调用号我们可以写出如下服务函数(为了简单我们用C语言)
void swi_service_func(unsigned int number, unsigned int *reg)
{
unsigned int reg1, reg2, reg3, reg4;
//获取SWI前传入的参数
reg1 = reg[0];
reg2 = reg[1];
reg3 = reg[2];
reg4 = reg[3];
switch (number) {
case 0:
// do something
break;
case 1:
// do something
break;
.
.
.
case n:
// do something
break;
default:
// do something
}
}
// 更新结果存入r0-r3
reg[0] = updata_reg1;
reg[1] = updata_reg2;
reg[2] = updata_reg3;
reg[3] = updata_reg4;
}
这样一来只要中调用断号不同就可以实现不同的功能调用了,是不是很简单?
分享到:
相关推荐
在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。
作者:华清远见嵌入式学院。几乎每种处理器都支持特定异常处理,中断也是异常的一种。了解处理器的异常处理相关...ARM的SWI异常中断处理程序设计;FIQ和IRQ异常中断程序设计;基于 ARM9芯片 S3C2410X异常中断程序设计。
ARM处理器中断响应设计 S5PC100集成了3个向量中断控制器(后文用VIC来表示),采用的是ARM基于PrimeCell技术下的PL192核心,另外还包括了3个TZIC,即针对于TrustZone技术所涉及的中断控制器(后文都用TZIC表示),其...
处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。当一个异常出现以后,ARM微处理器会执行以下几步操作
ARM处理器中断处理过程详细解析,附代码
ARM处理器2-中断
ARM处理器的编程模型和arm处理器结构详解. ARM处理器的编程模型和arm处理器结构详解.
ARM处理器系统初始化过程
ARM汇编实现软中断,用ADS编写。先调用Init装中断,再跳转到SWIhandler,SWIhandler为中断服务程序
1、ARM中异常中断的类型 2、ARM对异常中断的响应过程 3、详细:各个异常状态发生后,ARM处理器硬件响应过程
ARM SWI 软中断介绍,模式切换,可以学习一下
ARM处理器软中断处理。a_swi.s文件是最开始处理的SWI句柄,用ARM汇编指令编写。c_swi.c文件是在执行a_swi.s文件之后调用执行的C语言SWI句柄。
ARM处理器内核介绍 ARM7TDMI 处理器内核系列 ARM9TDMI 处理器内核系列 ARM10E处理器内核系列
ARM中异常中断处理概述 ARM体系中异常中断种类
一种基于ARM处理器的异常处理设计与实现.pdf
ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都...
ARm 处理器 U-boot启动过程详解 ,包含源代码好
ARM处理器裸机开发实战—机制而非策略_书和光盘,打包在一起的,欢迎需要的小伙伴们下载!
嵌入式的定时计时系统,中断触发器, 延时触发器等等。