ARM汇编必知必会
时间:11-21
来源:互联网
点击:
ARM 异常处理
如果您阅读ARM手册,您会发现,在ARM中,经常强调Exception(异常)这个概念,在ARM里,Interrupt(中断)也是一种形式的异常。ARM的Exception同其所定义的5种异常模式是密切相关的,CPU在捕获到任何一个Exception后,必定会进入某个异常模式,异常类型及捕获到该异常后CPU所进入的异常模式之间的对应关系是ARM所预先定义好的。如果您对X86比较熟悉,您会发现,不象X86,系统定义了不同的中断,比如键盘中断,鼠标中断等等,并且系统也定义了这些中断所对应的中断向量。ARM没有定义这些,ARM只会告诉你,有外部中断产生,并切换到IRQ或FIQ模式,然后执行IRQ或FIQ所对应的中断向量。至于到底是键盘中断,还是鼠标中断,这得由操作系统提供的中断函数自己去判断,比如通过查询中断控制器的某个或某些寄存器。ARM这样做的原因是:ARM只是一个CORE,它并不定义也不去假想其外部环境,这样可以使得ARM CORE更加紧凑和简洁,同时也给SOC设计者提供了更多的灵活性和发挥空间。您一定要相信,ARM被如此广泛使用不是“盖”的,从系统开发者角度看,ARM是一种最简单、最灵活的CPU,它的优雅和简洁性就像C语言一样。呵呵,C语言是我最喜欢的语言。
好了,“臭屁”了这么多,我们言归正传。对ARM异常处理的研究务必要弄清楚以下几个方面:
(1) 异常类型
(2) 异常类型及处理该异常时CPU的执行模式
(3) 异常向量地址
(4) 异常处理过程
异常类型
ARM定义了如下类型的异常(江南七怪,这样好记):
(1)
(2)
(3)
(4)
(5)
(6)
(7)
执行模式
当产生异常后,CPU会进入相应的异常模式并处理该异常:
向量地址
ARM的异常向量地址可以处于4G物理空间的低端(0x00000000起),也可以处于高端(0xffff0000起),具体是哪种情况,根据具体的CPU及其配置而定。下面是7种异常的向量地址(挎弧内为高端情形):
(1)
(2)
(3)
(4)
(5)
(6)
(7)
每个中断向量为4字节,一般的操作系统在该地址处放置一条跳转指令“LDR PC,终端处理函数地址”。另外要注意的是,在IRQ异常和Data Abort异常之间空了4个字节,这4个字节是保留的。
处理过程
Linux BOOTLOADER全程详解
网上关于Linux的BOOTLOADER文章不少了,但是大都是vivi,blob等比较庞大的程序,读起来不太方便,编译出的文件也比较大,而且更多的是面向开发用的引导代码,做成产品时还要裁减,这一定程度影响了开发速度,对初学者学习开销也比较大,在此分析一种简单的BOOTLOADER,是在三星公司提供的2410BOOTL
ARM汇 相关文章:
- STM32 arm汇编(thumb-2指令集)启动代码分析(12-02)
- ARM汇编程序基本知识(11-28)
- ARM汇编中伪指令的介绍(11-28)
- ARM汇编伪指令介绍(11-28)
- ARM汇编指令的一些总结(11-28)
- 常用ARM汇编指令(11-28)