LPC22110--ARM7TDMI笔记(一)

来源:互联网 发布:序列化java 编辑:程序博客网 时间:2024/05/17 07:38

1.p0.7 引脚控制蜂鸣,低电平蜂鸣(JP9得导通).

2.ARM是Advance RISC Machines的缩写.

3.所有的异常处理都在ARM状态中执行.如果异常发生在Thumb状态中,处理器会切换到ARM状态.在异常处理返回时,自动切换回Thumb状态.
;从ARM状态转变为Thumb状态
LDR  R0, =Lable+1
BX   R0
;从Thumb状态转变为ARM状态
LDR  R0, =Lable
BX   R0

4.ARM7TDMI完全把持7种模式:
用户(usr)    正常程序工作模式             不能直接切换到其它模式
快中断(fiq)  支持高速数据传输及通道处理   FIQ异常响应时,进入此模式
中断(irq)    用于通道中断处理             IRQ异常响应时,进入此模式
管理(svc)    操作系统保护代码             系统复位和软件中断响应时,进入些模式
中止(abt)    用于支持虚拟内存或存储保护   在ARM7TDMI没多大用处
未定义(und)  支持硬件协处理器的软件仿真   未定义指令异常响应时,进入此模式
系统(sys)    用于支持操作系统的特权任务   与用户类似,但具有可以直接切换到其它模式等特权

除用户模式外,其它都为特权模式(包括系统模式)
有5种称为异常模式(除用户与系统模式).它们除了可以进行程序切换外,也可以由特定的异常进入.当特定的异常出现时,处理器进入相应的模式.每种模式都有某些附加的寄存器,以避免异常退出时,用户模式的状态不可靠.至于系统模式,与用户模式不一样,不能由异常进入,且使用和用户模式完全相同的寄存器.然而它是特权模式,不受用户模式的限制.有这个模式,操作系统要访问用户模式的寄存器就比较方便.同时操作系统的一些特权任务可以使用这个模式,以访问一些受控制的资源,而不必担心异常出现时任务状态变得不可靠.

5.ARM7TDMI有31个通用寄存器R0~R15,R13_svc,R14_svc,R13_abt,R14_abt,R13_und,R14_und,R13_irq,R14_irq,R8_fiq~R14_frq),6个状态寄存器共37个寄存器(CPSR,SPSR_svc,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fir).这些寄存器并不是全部可以在同一时间被访问,处理器状态和操作系统模式判定了程序员可以访问哪些寄存器.

6.堆栈指针R13(SP),每个异常模式都有自己的R13分组版本,它通常指向由异常模式所专用的堆栈.在入口处,异常处理程序通常将其他要使用的寄存器值保存到这个堆栈.通过返回时将这些值重新装到寄存器中,异常处理程序可确保异常发生时的程序状态不会被破坏.链接寄存器R14(LR)在每种模式下,模式自身的R14版本用于保存子程序返回地址.当使用BL指令调用子程序时,R14设置为子程序返回地址.子程序返回通过将R14复制到程序计数器来实现.
MOV PC, LR
BX LR 

原创粉丝点击