其他分享
首页 > 其他分享> > 【ARM裸板】ARM模式、异常与状态

【ARM裸板】ARM模式、异常与状态

作者:互联网

文章目录

1.两种流程处理


2.中断处理过程

2.1 硬件初始化

2.2 执行程序

2.3 产生中断

中断信号按下按键中断控制器CPU

2.4 执行中断

3.ARM的7种模式(Mode)


在这里插入图片描述

banker register 为备份寄存器,可以成为专属寄存器,R13(SP栈指针)、R14(LR返回地址)
SPSR(保存程序状态寄存器):用来保存“被中断模式的CPSR”,相当于CPSR的备份寄存器,eg:当正处于User Mode,发生中断,进入IRQ Mode,SPSR_irq就保存了User Mode那一时刻的CPSR

3.1 异常向量表

在这里插入图片描述

4.ARM的2种状态(State)

在这里插入图片描述
在这里插入图片描述

5.异常的处理流程

5.1 进入异常

在这里插入图片描述

5.2 退出异常

在这里插入图片描述
在这里插入图片描述

6.程序以thumb指令集运行

6.1 gcc以thumb编译

6.2 如何从arm切换至thumb

.code 32
/*..............*/

	/* 从ARM State 切换到Thumb State*/
	adr r0,thumb_func
	add r0,r0,#1 /*bit0 = 1时,bx就会切换CPU状态至thumb state*/
	bx r0

.code 16
thumb_func:

 /*..............*/

6.3 注意

gcc disable built-in memcpy

淹死的大白鲨 发布了33 篇原创文章 · 获赞 173 · 访问量 4万+ 私信 关注

标签:thumb,中断,模式,裸板,异常,ARM,CPSR
来源: https://blog.csdn.net/qq_39492932/article/details/104089224