原创 ARM7TDMI处理器相关

2009-8-16 21:00 1976 2 2 分类: MCU/ 嵌入式

1、 
ARM7TDMI处理器内核



   内核采用ARM v4 T结构实现,具有ARMThumb两种操作状态,支持7种处理器模式:



用户(usr):程序正常工作模式



快中断(fiq):



中断(irq):用于通用中断



管理(svc):



中止(abt):



未定义(und):



系统(sys:用于支持操作系统的特权任务等



初用户和系统模式外,其他5种称为异常模式,除可通过程序切换进入外,还可有特定异常进入。每种模式都有附加的寄存器,下有说明。



2、   
内部寄存器



37个,包括31个通用32位寄存器:R0R15R13_svcR14_svcR13_abtR14_abtR13_undR14_undR13_irqR14_irqR8_fiqR14_fiq。还包括6个状态寄存器:CPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq



这些寄存器的访问权有处理器状态和工作模式决定。



重点介绍:



R13:用作堆栈指针SP,用于异常保护,每个异常模式对应不同的R13分组。



R14:链接寄存器,R14对应的异常模式用于保存子程序返回地址或异常返回地址。



R15:程序计数器。



CPSR:程序状态寄存器,为个模式共享,但每种异常有自己的SPSR,用于异常保护。格式为NZCV_IFTM4M3M2M1M0



3、    ARM指令



BL:跳转



ADDS:相加,会影响标志位



LDR/STR:加载存储



例:STR     R1,[R0,#0x0C]   ;将R1的数据保存到R0+0x0C的单元,R0不变。



DCD 分配一片连续的字存储单元并用指定的数据初始化



LDM/STM:多寄存器加载/存储



SWP:寄存器和存储器数据交换



例:SWP     R1,R1,[R0]              ; R1内容与R0指向的存储单元的内容进行



交换。



 BX:带状态切换的分支指令



例:ADR     R0,THUMB_CODE+1



    BX      R0                  ; 跳转到R0指向的地址并切换处理器状态



4、   
复位和异常



复位ARM7TDMI内核将执行下列操作:



1)、强制进入管理模式



 2)、置位CPSRIF



3)、清零CPSRT



4)强制PC从地址0x00取址



 5)返回到ARM状态并恢复执行



进入异常ARM7TDMI内核将:



1)、在适当的LR中保存下一条指令地址



2)、复制CPSRSPSR



3)、根据异常将CPSR模式强制设为某一值



4)、强制PC从异常向量出取值



退出异常时:



1)、将LR减去偏移量后移入PC



2)、将SPSR复制到CPSR



3)、清零入口置位的中断禁止标志。



异常分类:



(1)      
快速中断请求,快中断有8个专用寄存器



(2)      
中断请求



(3)      
中止,指对存储器的访问不能完成



(4)      
软件中断,SWI



(5)      
未定义的指令



(6)      
复位



     各异常的优先级由高到低依次为:复位、数据中止、FIQIRQ、预取中止、未定义指令、SWIARM提供功能强大的向量中断控制器处理不同中断,分为:FIQ、向量IRQ和非向量IRQ,优先级依次降低。其中,每一种外围设备都有一条中断线连接到向量控制器,各中断源与VIC有一一对应的连接关系。中断源有:

看门狗定时器、定时器0、定时器1UART0UART1PWMIIC0SPI0RTCGPIO、管脚连接模块、ADC0IIC1ADC1SSPDACUSB和系统控制模块(包括PLL、功率等)。

5、 ARM7启动过程



   芯片复位后,系统进入管理模式、ARM状态、PC(15)寄存器值为0,向量表代码必须位于或者映射到0x00000000处。之后开始初始化程序,包括各模式下的堆栈初始化、目标板的初始化(包括不同的存储器映射方式、PLL和系统时钟cclk和外设VPB时钟pclk等、存储器加速模快、向量中断初始化等),完了之后就跳转到main()运行。



PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /3 下一条