六、mini2440_bsp_int(中断)

一、ARM状态寄存器

1、ARM架构工作模式

(1)用户模式(usr):ARM处理器正常的程序执行状态

(2)快速中断模式(fiq):用于高速数据传输或通道处理

(3)中断模式(irq):用于通用的中断处理

(4)管理模式(svc):操作系统使用的保护模式

(5)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储集存储保护

(6)系统模式(sys):运行具有特权的操作系统任务

(7)未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真

2、寄存器

(1)通用寄存器分类:

        不分组寄存器(r0-r7)

        分组寄存器(r8-r14):r13为堆栈指针sp,指向栈顶;r14为子程序链接寄存器lr,指向函数返回地址(调用返回和中断返回)

        程序计数器(r15):pc

 (2)程序状态寄存器(6个)

        CPSR(32位):

                N(31):cmp比较结果:A<B -> N=1;A>=B -> N=0

                Z(30):cmp比较结果:A=B -> Z=1

                I(7):当I=1 不可被中断

                F(6):当F=1 不可被快速中断

                M(0-4):工作模式

                        0b10000:usr

                        0b10001:fiq

                        0b10010:irq

                        0b10011:svc

                        0b10111:abt

                        0b11011:und

                        0b11111:sys

        CPSR_svc(32位):拷贝CPSR

        CPSR_abt(32位):拷贝CPSR

        CPSR_und(32位):拷贝CPSR

        CPSR_fiq(32位):拷贝CPSR

        CPSR_irq(32位):拷贝CPSR

3、异常向量表(uboot -> start.S)

        当发生中断时,程序会跳转至中断向量表的中断函数,当中断执行结束之后返回之前的程序上下文。

.globl _start
_start:	b	start_code
	ldr	pc, _undefined_instruction
	ldr	pc, _software_interrupt
	ldr	pc, _prefetch_abort
	ldr	pc, _data_abort
	ldr	pc, _not_used
	ldr	pc, _irq
	ldr	pc, _fiq

_undefined_instruction:	.word undefined_instruction
_software_interrupt:	.word software_interrupt
_prefetch_abort:	.word prefetch_abort
_data_abort:		.word data_abort
_not_used:		.word not_used
_irq:			.word irq
_fiq:			.word fiq

二、中断实现

1、实现过程

(1)使能中断

(2)判断中断源

(3)中断方式(引脚):高电平/低电平/上升沿/下降沿

(4)引脚工作模式设置:设置位中断模式

三、实现

1、伪代码

1、设置异常向量表
2、设置栈指针
3、关闭看门狗
4、进入中断模式,设置中断模式栈指针
5、进入管理模式,设置管理模式栈指针
6、初始化LED引脚
7、调用中断初始化函数
8、设置cpsr_c,开启IRQ中断 I=0
9、设置返回地址,调用main函数

2、参考程序

参考程序:https://download.youkuaiyun.com/download/liutit/86764983

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值