1、2022-12-301嵌入式系统设计嵌入式系统设计 天津大学计算机学院天津大学计算机学院 车明车明 第二章第二章:嵌入式处理器嵌入式处理器2022-12-302计算机体系结构回顾计算机体系结构回顾2022-12-3032022-12-304计算机指令集回顾计算机指令集回顾2022-12-3052022-12-3062.1 嵌入式处理器介绍嵌入式处理器介绍2.1.1 MPUn嵌入式系统中直接利用嵌入式系统中直接利用 MPU(MPU(接近通用计算接近通用计算机机 CPU)CPU)的情况已经很少的情况已经很少n8 8位位 MPU MPU 已经淘汰已经淘汰n1616、3232位位 MPU MPU 仍有
2、少量应用仍有少量应用u 16 16位位 MPU MPU 的例子:的例子:INTEL 80C186ECINTEL 80C186ECu 32 32位位 MPU MPU 的例子:的例子:INTEL 80386EXINTEL 80386EXnARM ARM 是是3232位位 MPUMPU,但不作为独立芯片使用,但不作为独立芯片使用2022-12-3072.1.2 MCUn嵌入式系统中大量利用嵌入式系统中大量利用MCUMCU作为其核心部件作为其核心部件n8 8位位 MCU MCU 在微、小型应用中仍有很大市场,在微、小型应用中仍有很大市场,MCS-51MCS-51系列的单片机是低端嵌入式系统中用系列的单
3、片机是低端嵌入式系统中用得最多的微处理器。得最多的微处理器。n1616位位 MCU MCU 成为鸡肋成为鸡肋n3232位位 MCU MCU 在中、大型应用中较多,但目前在中、大型应用中较多,但目前也面临更新嵌入式技术(如也面临更新嵌入式技术(如SOCSOC)的替代,)的替代,ARM ARM 系列是应用较广泛的系列是应用较广泛的3232位微处理器,实位微处理器,实际上该系列的际上该系列的MCUMCU芯片很多,但都是以芯片很多,但都是以 ARM ARM 微内核为核心的。微内核为核心的。2022-12-3081)8位位MCU:MCS-51系列系列n8 8位位MCUMCU的典型是的典型是MCS-51M
4、CS-51系列单片机系列单片机n哈佛结构、哈佛结构、CISCCISC指令指令nMCS-51MCS-51系列是系列是INTELINTEL公司的产品公司的产品,包括包括5151、5252两个子系列。两个子系列。5151子系列主要型号有子系列主要型号有80318031、80518051、87518751等,等,5252子系列比子系列比5151子系列增加了子系列增加了少量内部资源。少量内部资源。n许多公司购买了许多公司购买了MCS-51MCS-51的内核,并增加了片的内核,并增加了片内资源,生产出各具特色的与内资源,生产出各具特色的与MCS-51MCS-51兼容的兼容的单片机产品。例如单片机产品。例如
5、ATMELATMEL公司的公司的AT89CAT89C系列,系列,主要型号有主要型号有AT89C51AT89C51、AT89C52AT89C52、AT89C2051AT89C2051、T89C51RD2T89C51RD2等。这些产品比等。这些产品比INTELINTEL的更实用。的更实用。2022-12-309MCS-51系列芯片举例系列芯片举例型 号 片内ROM片内RAMI/O口线封 装8031无128B+SFR84DIP 40脚8051掩膜4KB128B+SFR84DIP 40脚8751EPROM 4KB128B+SFR84DIP 40脚AT89C2051FLASH 2KB128B+SFR15
6、DIP 20脚SOIC 20脚AT89C51FLASH 4KB128B+SFR84DIP 40脚PLCC 44脚AT89C52FLASH 8KB256B+SFR84DIP 40脚PLCC 44脚T89C51RD2FLASH 64KBEEPROM 2KB1024B+SFR86DIP 40脚PLCC 68脚2022-12-3010本课程实验用的单片机本课程实验用的单片机P89LV51RD2 的主要性能和特点的主要性能和特点 INTEL 8052 CPU 内核内核 内部程序存储器内部程序存储器ROM:64KB(FLASH)内部数据存储器内部数据存储器RAM:256B+1024B RAM 寄存器区:有
7、寄存器区:有4个寄存器区,每个区有个寄存器区,每个区有R0-R7八个工作寄存器八个工作寄存器 8位并行输入输出端口:位并行输入输出端口:P0、P1、P2、P3 定时定时/计数器:计数器:2个个16位的定时位的定时/计数器计数器 串型口:全双工的端口(串型口:全双工的端口(RXD:接收端,:接收端,TXD发送端)发送端)硬件硬件SPI:支持程序下载:支持程序下载 中断系统:设有中断系统:设有5个中断源个中断源 堆栈:设在内堆栈:设在内RAM单元中,通过堆栈指针单元中,通过堆栈指针SP确定堆栈位置确定堆栈位置 指令系统:指令系统:111条指令。按功能分为数据传送、算术运算、条指令。按功能分为数据传
8、送、算术运算、逻辑运算、控制转移和布尔操作逻辑运算、控制转移和布尔操作5大类。大类。2022-12-3011MCS-51 单片机内部方框图单片机内部方框图时钟电路64KROM程序存储器1024BRAM数据存储器2X16位定时/计数器CPU处理器64KB总线扩展控制器可编程I/O端口P0-3可编程串行口2022-12-3012VCCRSTXTAL1 P0口XTAL2/EA/PSENALE P1口P3口RXDTXD/INT0/INT1 P2口T0T1/WR/RDGND87C51EPROM型AT89C51ATMELFLASH型2022-12-3013程序存储器六个特殊的单元程序存储器六个特殊的单元在
9、程序存储器中,有六个单元是具有特定功能。在程序存储器中,有六个单元是具有特定功能。编程者是不能随便使用的。编程者是不能随便使用的。0000H单元:上电时,程序计数器单元:上电时,程序计数器PC所指向的单元所指向的单元0003H单元:外部中断单元:外部中断/INT0的入口地址;的入口地址;000BH单元:定时器单元:定时器T0的溢出中断入口地址;的溢出中断入口地址;0013H单元:外部中断单元:外部中断/INT1的入口地址;的入口地址;001BH单元:定时器单元:定时器T1的溢出中断入口地址;的溢出中断入口地址;0023H单元:串行口接收、传送的中断入口地址。单元:串行口接收、传送的中断入口地址
10、。2022-12-3014 数据存储器示意图数据存储器示意图 特殊功能寄存器SFR通用数据存储器80H7FH00HFFH独立存储区 数据存储区 256B个字节 1024B个字节数据存储器1024B0000H03FFH1,访问独立RAM的20H单元MOV A,20H2,访问全部RAM的20H单元MOV R0,#20hMOVX A,R03,尽管独立与全部存储区 的00H-FFH地址相重叠,但由于指令的不同可以 保证不会发生地址混乱。00FFH0100H2022-12-3015片内片内RAMRAM低低 128B 128B 字节功能分配图字节功能分配图 位寻址区3区2区1区0区通用区08H07H00H
11、7FH30H2FH20H1FH18H17H10H0FH工作寄存器区:4个每个区中有R0-R7八个工作寄存器位寻址区16个单元 20H-2FH,共有128 可寻址位个位。位地址:00H-7FH注意:位地址与字节地址的区别通用的RAM区地址:30H-7FH2022-12-3016片内片内 RAMRAM(20H-2FH20H-2FH)中的位寻址区结构图)中的位寻址区结构图7F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A49484746
12、4544434241403F3E3D3C3B3A393837262524232221202F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002FH20H字节地址2022-12-3017特殊功能寄存器特殊功能寄存器SFRn特殊功能寄存器SFR(Special Function Register)特殊用途寄存器的集合。用来设定单片机内部各个部件的工作方式,存放相关部件的状态,定时器初值,并行端口的锁存器等等。尽管特殊功能寄存器与RAM在同一个单元中,但不能作为
13、普通的RAM存储单元来使用。只有在编程中根据需要,进行一些特定功能的设定,或者是从中查寻相关部件的状态时,才能进行读、写操作。SFR高128B低128B0FFH80H7FH00H特殊功能寄存器SFR在片内RAM中的位置2022-12-3018ACCBPSWSPDPTRP0P1P2P3IPIETMODTCON累加器B寄存器程序状态字堆栈指针数据指针(包括DPH,DPL)口0口1口2口3中断优先级控制寄存器中断允许控制寄存器定时/计数器方式控制寄存器定时/计数器控制寄存器0E0H0F0H0D0H81H83H,82H80H90H0A0H0B0H0B8H0A8H89H88H特殊功能寄存器 SFR(表一
14、)2022-12-3019特殊功能寄存器 SFR(表二)标识符名 称地 址TH0TL0TH1TL1SCONSBUFPCON定时/计数器0初值寄存器高8位定时/计数器0初值寄存器低8位定时/计数器1初值寄存器高8位定时/计数器1初值寄存器低8位串行口控制寄存器串行口数据缓冲器(接收,发送)电源控制寄存器8CH8AH8DH8BH98H99H97H注:表中红色的单元为可按位寻址的字节2022-12-3020端口举例:端口举例:P3 通用通用I/OI/O端口端口、多用途端口、多用途端口n在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,
15、锁存器Q端为“1”电平以保证与门是打开的。n在通用I/O模式下,“替代输出功能”端为“1”电平,以保证与门打开。D Q 锁存器CL /QP3.x引脚替代输出功能读锁存器读引脚内部总线写锁存器MUX (数据=0)Vcc2022-12-30212)32位位MCU:ARM系列系列n3232位位MCUMCU的典型是基于的典型是基于AMRAMR的单片机的单片机nARMARM(Advanced RISC MachinesAdvanced RISC Machines)系列微处理系列微处理器,采用的都是由器,采用的都是由 ARM ARM 公司提供的公司提供的ARM IPARM IP。nARM ARM 公司本身
16、不生产芯片,只转让设计许可,公司本身不生产芯片,只转让设计许可,由合作公司生产各具特色的芯片。由合作公司生产各具特色的芯片。nARM ARM 使用使用 RISCRISC指令,支持指令,支持 ARM ARM 指令集和指令集和Thumb Thumb 指令集指令集u ARMARM指令为指令为3232位长度位长度 u ThumbThumb指令为指令为1616位长度,是位长度,是ARMARM指令集的功指令集的功能子集,但节省能子集,但节省4040以上的存储空间。以上的存储空间。2022-12-3022ARM处理器系列处理器系列 ARM7 ARM9 ARM9E ARM10E ARM11 SecurCore
17、 (专为安全需要而设计)(专为安全需要而设计)OptimoDE (最新的(最新的DSP核)核)Inter Strong ARM (融合了(融合了Inter的技术)的技术)Inter Xscale (Intel曾主推的一款曾主推的一款ARM)ARM CPU ISA的发展的发展 nARM CPU 的指令集体系 ISA 发展到现在,先后有 V1,V2,V3,V4,V4T,V5TE,V5TEJ,V6,V7等主要的版本。nARM V1V3版本的处理器未得到大量应用,ARM处理器的大量泛应用是从其V4版本开始的n到目前V7是最新的版本,它也被称作CoreTex系列。ARM处理器的分类处理器的分类n结构体系
18、版本(Architecture)uARM v4TuARM v5TE uARM v6uARM Cortex(v7)Processor FamilyProcessor Family ARM7 ARM9 ARM10 ARM11 ARM CortexARM FamilyARM7 FamilyARM9 FamilyARM10 FamilyARM11 Family150DMIPS300 DMIPS500 DMIPS1000 DMIPSARM Cortex FamilyARM720TARM1136J ARM1176JZARM1026EARM920T/ARM922T ARM926EJCortex AAppli
19、cation ProcessorARM7TDMIARM1156T2ARM1026EARM946ECortex REmbedded RT ControllerARM7TDMIARM966E ARM968ECortex MMicro-controllerARM Architecture 按应用特征分类按应用特征分类 应用处理器应用处理器 Application Processor 实时控制处理器实时控制处理器 Real-time Controller 微控制器微控制器 Micro-controller特征:特征:MMU,Cache 最快频率、最高性能、合理功耗最快频率、最高性能、合理功耗 特征:特
20、征:MPU,Cache 实时响应、合理性能、较低功耗实时响应、合理性能、较低功耗 特征:特征:no sub-memory system 一般性能、最低成本、极低功耗一般性能、最低成本、极低功耗 ARM11 芯片芯片nARM11u300-700+MHzuSIMD 指令扩展支持更丰富的多媒体应用指令扩展支持更丰富的多媒体应用FOMA N902iFirst ARM11 based phoneOMAP2420i.MX31/i.MX31L高性能的高性能的ARM嵌入式处理器嵌入式处理器n最快的处理器提供超过2000 DMIPS 的性能u运行于运行于 1GHz 频率频率(90nm or 65nm 制造工艺制
21、造工艺)n功耗小于 300mWARM Cortex A8 Application ProcessorCortex-M3 实现实现$1 ARM芯片芯片 ARM Cortex Architecture Thumb-2 ISA 3 Stage Pipeline Luminary Micro Luminary Micro 的的 Stellaris Stellaris 系列系列 MCU MCU 产品售价仅产品售价仅1 1美元美元ARM Cortex-M3 微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。ARM7TDMI指令流水线指令流水线n为增加处理器指令流的速度,ARM7 系列
22、使用3级流水线。u允许多个操作同时处理,而非顺序执行。u PC指向正被取指的指令,而非正在执行的指令。FetchDecodeExecute从存储器中读取指令从存储器中读取指令解码指令中用到的寄存器解码指令中用到的寄存器寄存器读(从寄存器寄存器读(从寄存器Bank)移位及移位及ALU操作操作寄存器写(到寄存器寄存器写(到寄存器Bank)PCPCPC-4PC-2PC-8PC-4ARMThumbARM9TDMI指令流水线指令流水线InstructionFetch Shift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORY
23、WRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI 理想的理想的3级流水线级流水线(ARM7TDMI:无访存操作)无访存操作)ARM的的LDR流水线流水线 数据宽度(类型)数据宽度(类型)n数据类型 u 字节型数据(字节型数据(ByteByte):):数据宽度为8bits u 半字数据类型(半字数据类型(HalfWordHalfWord):):数据宽度为16bits,存
24、取式必须以2字节对齐的方式u 字数据类型(字数据类型(WordWord):):数据宽度为32bits,存取式必须以4字节对齐的方式 工作状态和工作模式工作状态和工作模式 n处理器有两种工作状态:uARM:32位,执行字对准的ARM指令uThumb:16位,执行半字对准的Thumb指令nARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容工作状态和工作模式工作状态和工作模式 n进入Thumb状态:u执行BX指令,并设置操作数寄存器的状态(位0)为1。u在Thumb状态进入异常(IRQ,FIQ,UNDEF,ABORT,SWI etc.),当异常处理返回时自动转换到Thumb状态n进入A
25、RM状态:u执行BX指令,并设置操作数寄存器的状态(位0)为0。u进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态工作状态和工作模式工作状态和工作模式 nThumb-2:增加了混合模式能力u定义了一个新的定义了一个新的32-bit指令集能在传统的指令集能在传统的 16bit指令运行的指令运行的Thumb状态下同时运行。状态下同时运行。u这样能在一个系统中更好地平衡这样能在一个系统中更好地平衡ARM和和Thumb代码的能力,使系统能更好地利用代码的能力,使系统能更好地利用ARM级别的性能和级别的性能和Thumb代码的密度的优势。代码的密度的优势。工作状态和工作
26、模式工作状态和工作模式 处理器模式处理器模式说明说明用户模式(User)正常程序执行模式,用于应用程序异常模式(FIQ)快速中断处理,用于支持高速数据传送或通道处理异常模式(IRQ)用于一般中断处理异常模式(Supervisor)特权模式,用于系统初始化或操作系统功能异常模式(Abort)存储器保护异常处理异常模式(Undefined)未定义指令异常处理系统模式(System)运行特权操作系统任务(ARM V4以上版本)工作状态和工作模式工作状态和工作模式 User模式模式程序不能访问有些受保护的资源程序不能访问有些受保护的资源只能通过异常的形式来改变只能通过异常的形式来改变CPU的当前运行模
27、式的当前运行模式特权模式特权模式可以存取可以存取系统中的系统中的任何资源任何资源System模式模式与与User模式的运行环境一样模式的运行环境一样但是它可以不受任何限制的访问任何资源但是它可以不受任何限制的访问任何资源该模式主要用于运行系统中的一些特权任务该模式主要用于运行系统中的一些特权任务FIQ模式模式IRQ模式模式Supervisor模式模式Abort模式模式Undefined模式模式异常模式:主要是在外部中异常模式:主要是在外部中断或者程序执行非法操作时断或者程序执行非法操作时会触发会触发寄存器寄存器 ARM寄存器概述寄存器概述nARM处理器有37个寄存器u 31个通用寄存器:程序计
28、数器、个通用寄存器:程序计数器、堆栈及其他通用寄存器堆栈及其他通用寄存器u 6个状态寄存器个状态寄存器n这些寄存器不能同时看到n不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的ARM微处理器:微处理器:ARM State寄存器寄存器ARM微处理器微处理器:Thumb State寄存器寄存器ARM State 与与Thumb State寄存器关系寄存器关系处理器模式与寄存器的关系处理器模式与寄存器的关系n异常发生时伴随的模式切换意味着,被调用的异常处理程序会访问:u它自己的堆栈指针(SP_)u它自己的链接寄存器(LR_)u它自己的备份程序状态寄存器(SPSR_)u如果是FIQ异常处理,
29、5个其它的通用状态寄存器(r8_FIQ to r12_FIQ)u其它寄存器和原来模式下的寄存器是相同的不同模式下堆栈指针的初始化不同模式下堆栈指针的初始化n各模式分组的堆栈指针寄存器是需要在系统初始化(即系统复位)时被设置好的,这样才能在进入不同的模式时自动切换使用不同的堆栈空间。初始化时需注意堆栈指针必须保持8字节对齐。;中断模式堆栈的设置MSR CPSR_c,#0 x000000D2 ;切换到中断模式LDR R1,=IrqStackMOV SP,R1 ;设置中断模式堆栈指针;快速中断模式堆栈的设置MSR CPSR_c,#0 x000000D1 ;切换到快速中断模式LDR R1,=FiqSt
30、ackMOV SP,R1 ;设置快速中断模式堆栈指针;中止模式堆栈的设置.寄存器寄存器 通用寄存器通用寄存器n通用寄存器是R0-R15的寄存器,分为三类 u 没有对应影子寄存器的寄存器没有对应影子寄存器的寄存器R0-R7 u 有对应影子寄存器的寄存器有对应影子寄存器的寄存器R8-R14u 程序计数器程序计数器R15(或者或者PC)n影子寄存器是指该寄存器在不同的模式下对应的物理寄存器寄存器寄存器 通用寄存器通用寄存器nR0-R7u所有模式下,所有模式下,R0-R7所对应的所对应的物理物理寄存器寄存器都是相同的都是相同的 u这八个寄存器是真正意义上的通用这八个寄存器是真正意义上的通用寄存器,寄存
31、器,ARM体系结构中对它们没体系结构中对它们没有作任何特殊的假设,它们的功能有作任何特殊的假设,它们的功能都是等同的。都是等同的。u在中断或者异常处理程序中一般都在中断或者异常处理程序中一般都需要对这几个寄存器进行保存。需要对这几个寄存器进行保存。寄存器寄存器 通用寄存器通用寄存器nR8-R14u访问的物理寄存器取决于当前的处理器模式,若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。uR8-R12各有两组物理寄存器:一组为FIQ模式,另一组是除FIQ以外的其他模式。uR13-R14各有6个分组的物理寄存器,一个用于用户模式和系统模式,其他5个分别用于5种异常模式。uR13
32、(也被称为SP指针)被用作栈指针栈指针,通常在系统初始化时需要对所有模式下的SP指针赋值,当CPU在不同的模式时栈指针会被自动切换成相应模式下的值。uR14有两个用途,一是在调用子程序时用于保存调用返调用子程序时用于保存调用返回地址回地址,二是在发生异常时用于保存异常返回地址发生异常时用于保存异常返回地址。寄存器寄存器 通用寄存器通用寄存器nR15u用作程序计数器用作程序计数器(PC),可以被读写,可以被读写uARM state:bits 1:0为为0,bits31:2即为即为 PC.uTHUMB state:bit 0为为0,bits31:1即为即为 PC寄存器寄存器 程序状态寄存器程序状态
33、寄存器nCPSR(当前程序状态寄存器)在所有的模式下都是可以读写的,它主要包含:u条件标志条件标志u中断使能标志中断使能标志u当前处理器的模式当前处理器的模式u其它的一些状态和控制标志其它的一些状态和控制标志寄存器寄存器 程序状态寄存器程序状态寄存器n置0表示执行32bit的ARM指令n置1表示执行16bit的Thumb指令 NegativeZeroCarryOverflowIRQ中断的响应中断的响应:置置1:禁止响应:禁止响应置置0:允许响应:允许响应FIQ中断的响应中断的响应:置置1:禁止响应:禁止响应置置0:允许响应:允许响应条件标志条件标志模式控制位模式控制位ARM/Thumb控制标志
34、控制标志中断标志中断标志寄存器寄存器 程序状态寄存器程序状态寄存器n模式控制位M0-M4M4:0模式模式Thumb状态可见寄存器状态可见寄存器ARM状态可见寄存器状态可见寄存器10000UserR7R0LR、SPPC、CPSRR14R0PC、CPSR10001FIQR7R0LR_fiq、SP_fiqPC、CPSR、SPSR_fiqR7R0R14_fiqR8_fiqPC、CPSR、SPSR_fiq10010IRQR7R0LR_irq、SP_irqPC、CPSR、SPSR_irqR12R0R14_irqR13_irqPC、CPSR、SPSR_irq10011SupervisorR7R0LR_svc
35、,SP_svcPC、CPSR、SPSR_svcR12R0R14_svc、R13_svcPC、CPSR、SPSR_svc10111AbortR7R0LR_abt、SP_abtPC、CPSR、SPSR_abtR12R0R14_abt、R13_abrPC、CPSR、SPSR_abt11011UndefinedR7R0LR_und、SP_undPC、CPSR、SPSR_undR12R0R14_und、R13_undPC、CPSR、SPSR_und11111SystemR7R0LR、SPPC、CPSRR14R0PC、CPSR寄存器寄存器 程序状态寄存器程序状态寄存器n 条件标志位uN=ALU产生负数结果
36、uZ=ALU产生结果是0uC=ALU操作产生进位或借位uV=ALU结果溢出n溢出标志 Q标志u只在5TE架构及以后被定义u表示饱和是否产生nJ位u只在5TEJ架构及以后被定义uJ=1:处理器处于Jazelle态n中断关闭位uI =1:关闭IRQuF=1:关闭FIQnT位uT=0:处理器处于ARM态uT=1:处理器处于Thumb态u在4T架构被引入n模式位u指定了处理器当前模式fsxc2731N Z C V Q2867I F T mode1623 15 54024 U n d e f i n e dJV6V6新引入的新引入的GE3:0 被一些SIMD指令使用 E 位控制读取/存储的大小端A 位关
37、闭不准确的数据异常中断IT abcde 用于Thumb2指令组的条件执行1089 19 GE3:0 E A IT cond_abcdeARM寄存器的分配和使用寄存器的分配和使用 n寄存器的使用,在很大程度上与编译器有关系,不同的编译器对于不同体系结构处理器的寄存器的使用有其特定的规则。(比如函数参数传递和返回值)寄存器编号寄存器编号可选寄存器名字可选寄存器名字ATPCS寄存器用法寄存器用法R0r3A1a4参数寄存器,在调用函数时,用来存放前4个函数参数和返回值。在函数内,如果把这些寄存器作为临时过渡寄存器来使用,则会破坏它们的值R4r8V1v5通用变量寄存器,调用函数必须保存被调用函数存放在这
38、些寄存器中的变量值r9v6 sb通用变量寄存器。在与读/写位置无关的编译情况下,r9中保存静态基本地址,这个地址是读/写数据的地址;否则必须保存这个寄存器中被调用函数的变量值r10v7 sl通用变量寄存器。在使用堆栈边界检查的编译情况下,r10保存堆栈边界的地址;否则必须保存这个寄存器中被调用函数的变量值r11v8 fp通用变量寄存器。在使用结构指针的编译情况下,必须保存这个寄存器中调用函数的变量值r12Ip通用临时过渡寄存器,函数调用时会破坏其中的值r13sp堆栈指针,指向满递减堆栈r14lr连接寄存器,在函数调用时用以保存返回地址r15pc程序计数器中断与异常中断与异常-概述概述n当异常发
39、生时CPU自动到指定的向量地址读取指令并且执行,即ARM的向量地址处存放的是一条指令(一般是一条跳转指令)u在X86上,当有异常发生时CPU是到指定的向量地址读取要执行的程序的地址执行的程序的地址2.3.4中断与异常中断与异常-概述概述nARM CPU将引起异常的类型分为7种异常类型模式优先级一般向量地址高向量地址ResetSupervisor10 x000000000 xFFFF0000Undefined InstructionUndefined60 x000000040 xFFFF0004Software InterruptSupervisor60 x000000080 xFFFF0008
40、Prefetch AbortAbort50 x0000000C0 xFFFF000CData AbortAbort20 x000000100 xFFFF0010IRQ(interrupt)IRQ40 x000000180 xFFFF0018FIQ(fast interrupt)FIQ30 x0000001C0 xFFFF001CFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x00异常的优先级异常的优先
41、级n有些异常会同时发生n异常被赋以了优先级,据此决定被响应的顺序:ResetData AbortFIQIRQPrefetch AbortSWIUndefined instruction在所有异常的入口,在所有异常的入口,IRQ IRQ 中断被屏蔽中断被屏蔽 只有重新被使能才可触发内核响应 (如:中断嵌套处理)在在 FIQs FIQs 和和 ResetReset 异常的入口,异常的入口,FIQFIQ中断被屏蔽中断被屏蔽高优先级低优先级中断与异常中断与异常-异常响应过程异常响应过程nARM处理器响应异常的过程如下:u拷贝CPSR寄存器的内容至对应模式下的 SPSR_寄存器中;u将返回地址保存到对应
42、模式下的LR_寄存器中;u对 CPSR 寄存器的一些控制位进行设置:F无论发生异常时处理器处于Thumb 状态还是ARM状态,响应异常后处理器都会切换到 ARM 状态,即CPSR5=0;F将模式位 CPSR4:0设置为被响应异常的模式编码;F设置中断屏蔽位:如果异常模式为Reset 或 FIQ 则 CPSR6=1 /*禁止快速中断*/CPSR7=1 /*禁止正常中断*/u将程序计数器(PC)设置为异常向量的地址ARM CPU进入异常模式的过程示例进入异常模式的过程示例异常返回过程异常返回过程n从异常处理程序返回时(执行特定的异常返回指令,需注意对于复位异常不需要返回),处理器执行下列动作:u将
43、SPSR_中的内容恢复到CPSR中;u将PC设置为LR_ 的值n同异常响应过程一样,上述过程只能在ARM状态下完成。Reset vectorPrefetch abort vectorData abort vectorReservedSWI vectorUndef vectorIRQ vectorB IRQ_HandlerMOV PC,#0 x30000000LDR PC,PC,#+0 xFF0 32 M 4 K0 x10000 x20000000 xFFC0 x300000000 xFFFFFFFF0 x1C0 x180 x140 x100 xC0 x80 x40 x0 未定义指令异常处理被放
44、置到了32MB 跳转范围外Undef Handler0 x30008000IRQ 处理程序在32MB的跳转范围内IRQ HandlerLiteral pool 包含了未定义指令异常处理的地址0 x30008000软中断异常处理被放置在合适的地址上SWI HandlerFIQ vectorFIQ 处理紧跟着异常向量表FIQ Handler异常向量表的内容异常向量表的内容中断响应过程中断响应过程nARM CPU Core能响应两级的外部中断 FIQ 和 IRQ,这提供了非常基本的优先级分级功能。FIQ 中断比IRQ 中断的优先级更高,主要体现在以下几个方面:u当多个中断发生时,FIQ首先被处理u在
45、 响应 FIQ 中断时屏蔽了 IRQ 中断(和 FIQ中断),直到FIQ中断处理程序完成,IRQ中断才会被处理 中断响应过程中断响应过程n以下特性能够让CPU Core能够尽快地响应FIQ中断:uFIQ 向量在异常向量表的最后,这样使FIQ处理程序可以直接从FIQ向量处开始,省去了跳转的时间开销;uFIQ 模式下有五个额外的寄存器(r8_FIQ to r12_FIQ),对于这些寄存器在进入和推迟FIQ时无须保存和恢复,节省了时间;nFIQ 中断源可以有多个,但是为了最好的系统性能应该避免FIQ中断的嵌套,应该避免在 FIQ 中断处理程序内又有另一个异常发生。内存和内存和I/O nARM 的寻址
46、空间是线性的地址空间,为232=4G nBytes 0 to 3 存储第一个word,bytes 4 to 7存储第二个word,nARM支持大端(Big-endian)和小端(Little-endian)的内存数据方式,可以通过硬件的方式设置端模式(不提供软件的方式)内存和内存和I/O 大小端大小端大端的数据存放格式大端的数据存放格式低地址低地址高地址高地址地址地址A地址地址A+1地址地址A+2地址地址A+3最高有效字节的地址最高有效字节的地址就是该就是该word的地址的地址最高有效字节最高有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcd内存和内存
47、和I/O 大小端大小端小端的数据格式小端的数据格式 低地址低地址高地址高地址地址地址A地址地址A+1地址地址A+2地址地址A+3最低有效字节的地址最低有效字节的地址就是该就是该word的地址的地址最低有效字节最低有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcd CPU与与I/O设备之间的接口信息设备之间的接口信息数据信息数据信息状态信息状态信息控制信息控制信息数字量数字量模拟量模拟量开关量开关量连续几位二进制形式表示的数或字符连续几位二进制形式表示的数或字符。如键盘输入的信息以及打印机、显。如键盘输入的信息以及打印机、显示器输出的信息等示器输出的信息
48、等时间上连续变化的量,如温度、压力时间上连续变化的量,如温度、压力、流量等、流量等只有两个状态的量,如阀门的合与断只有两个状态的量,如阀门的合与断、电路的开与关等、电路的开与关等CPUCPU与与I/OI/O设备设备之间的之间的接口信接口信息息反映外设当反映外设当前工作状态前工作状态的信息的信息READY信号:输入设备是否准备好信号:输入设备是否准备好BUSY信号:输出设备是否忙信号:输出设备是否忙CPU向外部向外部设备发送的设备发送的控制命令信控制命令信息息读写控制信号读写控制信号时序控制信号时序控制信号中断信号中断信号片选信号片选信号其它操作信号其它操作信号数据、状态、控制信息都数据、状态、
49、控制信息都是通过是通过CPUCPU的数据总线传的数据总线传送,存在送,存在I/OI/O接口的不同接口的不同端口中:数据、状态、控端口中:数据、状态、控制端口制端口 内存和内存和I/O I/O端口编址方式端口编址方式I/OI/O端口的编址方法,即端口的编址方法,即I/OI/O端口的地址安排方式端口的地址安排方式存储器映射编址存储器映射编址I/O映射编址映射编址I/OI/O端口的地址与内存地址统端口的地址与内存地址统一编址,即一编址,即I/OI/O单元与内存单单元与内存单元在同一地址空间元在同一地址空间I/OI/O端口与内存单元分开编址端口与内存单元分开编址,即,即I/OI/O单元与内存单元都有单
50、元与内存单元都有自己独立的地址空间自己独立的地址空间 内存和内存和I/O I/O端口编址方式端口编址方式存储器映射编址I/O映射方式优点优点可采用丰富的内存操作指令访问I/O单元无需单独的I/O地址译码电路无需专用的I/O指令I/O单元不占用内存空间I/O程序易读缺点缺点外设占用内存空间I/O程序不易读I/O操作指令仅有单一的传送指令,I/O接口需有地址译码电路举例举例ARM中,I/O端口与内存单元统一编址Intel 80X86系列,I/O端口与内存单元分开编址,I/O端口有自己独立的地址空间,其大小为64KB内存和内存和I/O I/O端口编址方式端口编址方式nARM 的I/O端口都是内存映射