第三章ARM9芯片S3C2410片上资源2019/8/17嵌入式系统2主要内容3.0ARM9处理器简介3.1S3C2410处理器介绍3.2S3C2410处理器片上资源的定义和使用3.3参考软件项2410test.mcp2019/8/17嵌入式系统33.0ARM9处理器简介2019/8/17嵌入式系统4标志含义补充说明T16位Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6T(支持16位Thumb压缩指令集)D片上调试支持片上Debug,允许处理器响应调试请求暂停M支持增强型乘法器32位乘32位得到64位I嵌入式ICE部件提供片上断点和调试点的支持EDSP指令增加了DSP算法处理器指令:16位乘加指令,饱和的带符号数的加减法,双字数据操作,Cache预取指令JJava加速器Jazelle提高Java代码的运行速度;与无加速器相比,最高可达到8倍S可综合提供VHDL或VerilogHDL硬件描述语言设计文件表2.1ARM系列微处理器扩展命名符号的含义2019/8/17嵌入式系统5ARM9通过增加时钟频率和减少指令执行周期提高性能。(1)时钟频率的提高ARM9采用了五级流水线,提高了时钟频率和并行处理能力。ARM9TDMI处理器的时钟频率是ARM7TDMI的2倍左右。(2)指令周期的改进:性能提高的幅度依赖于代码执行时指令的重叠。①load指令和store指令:指令执行时间缩短30%②互锁(interlock)技术③分支指令:ARM9和ARM7的分支指令周期相同,没有采用分支预测。2019/8/17嵌入式系统62.ARM9体系结构的五级流水线(1)取指:从存储器中取出指令放入指令流水线(fetch)。(2)译码:对指令进行译码(dec)。(3)执行:执行运算ALU(exe)(4)访存(缓冲/数据):如果需要,则访问数据存储器(5)回写:将指令产生的结果回写到寄存器(wtbkres),包括任何从存储器中读取的数据。2019/8/17嵌入式系统73.0.1ARM9工作模式ARM9TDMI处理器核共支持7种工作模式:●用户模式(usr):正常执行程序时的处理。●快速中断模式(fiq):用于高速数据传输或通道处理。●外部中断模式(irq):用于通用的中断处理。●管理模式(svc):操作系统使用的保护模式。●指令/数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。●系统模式(sys):运行具有特权的操作系统任务时的模式。●未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。2019/8/17嵌入式系统83.0.1ARM9工作模式ARM9TDMI处理器核的运行(工作)模式可以通过软件的控制改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的所有6种模式特权模式。每种工作模式下均有其附加的某些寄存器,因此,即使有异常情况发生,异常模式下的处理程序也不至于破坏用户模式的数据及状态。ARM9处理器有两种工作状态:ARM状态和Thumb状态。2019/8/17嵌入式系统93.0.2ARM9存储器组织结构ARM9体系结构采用32位长度地址,地址范围:x00000000~0xffffffff,存储容量:2^32=4GB字节)。因此,ARM9体系结构允许使用现有的存储器和I/O器件进行各种存储器系统设计。2019/8/17嵌入式系统10大端存储和小端存储ARM9体系结构可以有两种格式存储字数据,分别称为大端格式(big-endian)和小端格式(low-endian),见图2.4(a)和(b)所示。图2.4大端和小端存储格式2019/8/17嵌入式系统11小端存储格式是ARM9默认的格式。ARM9汇编指令集中,没有相应的指令来选择是采用大端存储格式还是小端存储格式,但可以通过硬件输入引脚来配置它。若要求ARM9目标系统支持小端存储格式,则将引脚BIGEND接低电平,否则接高电平。ARM9体系结构对于存储器单元的访问需要适当地对齐,即访问字存储单元时,字地址应该是字对齐(地址能被4整除);访问半字存储单元时,半字地址应该半字对齐(地址能被2整除)。如果不按对齐的方式访问存储单元,称作非对齐的存储器访问。非对齐的存储器访问可能会导致不可预知的状态。2019/8/17嵌入式系统123.0.3I/O端口的访问方式I/O端口的访问有两种方式,一种是端口地址和存储器统一编址,即存储器映射方式;另一种是I/O端口地址与存储器分开独立编址,即I/O映射方式(独立编址)。ARM9体系结构使用存储器映射方式实现I/O端口的访问。由于存储器映射方式是为每个I/O端口分配特定的存储器地址,当从这些地址读出或向这些地址写入时,实际上就完成了I/O功能。即从存储器映射的I/O加载即是输入,而向存储器映射的I/O地址存储即是输出。2019/8/17嵌入式系统133.0.4内部寄存器ARM9处理器内部共有37个32位寄存器分成通用寄存器和状态寄存器两大类通用寄存器用于保存数据或地址;状态寄存器用来标识或设置存储器的工作模式或工作状态等功能。ARM9处理器的37个寄存器中,31个用作通用寄存器,6个用作状态寄存器,每个状态寄存器只使用了其中的12位。这37个寄存器根据处理器的工作状态及工作模式的不同而被分成不同的组。程序代码运行时涉及的工作寄存器组是由ARM9处理器的工作模式确定的。2019/8/17嵌入式系统142019/8/17嵌入式系统151.通用寄存器通用寄存器用于保存数据或地址,用字母R前缀加该寄存器的序号来标识。通用寄存器包括R0~R15寄存器,可分成未分组寄存器、分组寄存器及程序计数器三种。(1)未分组寄存器R0~R7未分组寄存器包括R0~R7,在所有工作模式下,它们在物理上是同一个寄存器。也就是说,不管在哪种工作模式下,若访问R0寄存器,访问到的是同一个32位的物理寄存器R0;若访问R1寄存器,访问到的是同一个32位的物理寄存器R1;依次类推。由于不同的处理器工作模式均使用相同的未分组寄存器,可能会造成寄存器中数据的破坏。(2)分组寄存器R8~R14分组寄存器包括R8~R14。对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的工作模式有关,如图2.5所示。对于R8~R12寄存器,每个寄存器对应两个不同的物理寄存器。当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。2019/8/17嵌入式系统16对于R13、R14寄存器而言,每个寄存器对应6个不同的物理寄存器,其中的1个是用户模式与系统模式共用;另外5个物理寄存器对应于其他5种不同的工作模式,采用R13_mode或R14_mode记号来区分不同的物理寄存器,其中,mode为usr、fiq、irq、svc、abt、und这6种模式之一。R13寄存器在ARM指令中常用作堆栈指针,又称为SP(StackPointer)。R14寄存器可用作子程序链接寄存器(SubroutineLinkRegister)或链接寄存器LR(LinkRegister)。当ARM9处理器执行带链接的分支指令BL时,R14中保存R15(程序计数器PC)的备份。当发生中断或异常时,对应的分组寄存器R14_fiq、R14_irq、R14_svc、R14_abt、R14_und用于保存R15的返回值。其他情况下,R14用作通用寄存器。即,R14有两种特殊功能:一是每种工作模式下所对应的那个R14可用于保存子程序的返回地址;二是当异常发生时,该异常模式下的那个R14被设置成异常返回地址。2019/8/17嵌入式系统17LR寄存器作用示意图2019/8/17嵌入式系统18(3)程序计数器R15R15寄存器的用途是程序计算器(PC),用于控制程序中指令的执行顺序。在ARM状态下,R15的位[1:0]是0,位[31:2]保存PC的值;在Thumb状态下,位[0]为0,位[31:1]保存PC的值。读R15寄存器的结果是读到的值为该指令地址加8(ARM状态)或加4(Thumb状态)。读R15的主要作用是快速地对临近的指令和数据进行位置无关寻址,包括程序中的位置无关转移。写R15的通常结果是将写到R15中的值作为指令地址,并以此地址发生转移。由于ARM指令要求字对齐,通常希望写到R15中值的位[1:0]=0b00。2019/8/17嵌入式系统192.程序状态寄存器ARM9体系结构包含1个当前程序状态寄存器CPSR(CurrentProgramStatusRegister)和5个备份的程序状态寄存器SPSR(SavedProgramStatusRegister),CPSR又称为R16。在任何工作模式下,CPSR都是同一个物理寄存器,它保存了程序运行的当前状态,如条件码标志、控制允许和禁止中断、设置处理器的工作模式以及其他状态和控制信息等。每种异常模式都有一个备份的程序状态寄存器SPSR;当异常发生时,SPSR用于保留CPSR的状态。2019/8/17嵌入式系统203.1S3C2410处理器介绍S3C2410微处理器是一款由Samsung公司为手持设备设计的低功耗、高度集成的基于ARM920T核的微处理器。16KB指令Cache、16KB数据Cache、MMU、外部存储器控制器、LCD控制器(STN和TFT)、NANDFlash控制器、4个DMA通道、3个UART通道、1个I2C总线控制器、1个I2S总线控制器,以及U4个PWM定时器和一个内部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、SB主、USB从、SD/MMC卡接口等。2019/8/17嵌入式系统21ARM9TDMICPU核(InternalEmbeddedICE)AMBA总线I/FCP15写缓冲C13指令Cache(16KB)处理协处理器接口指令Cache(16KB)WriteBackPATagRAMC13指令MMU数据MMULCDDMAExtMasterUSB主控制NAND控制总线控制中断控制电源管理MemoryCONT.SRAM/NOR/SDRAMAHB总线LCD控制系统总线桥&DMA时钟发生器(MPLL)UART0,1,2USB设备SDI/MMC看门狗总线控制SPI0,1I²CI²SGPIORTCADCTimer/PWM0~3,4APB总线JTAGARM920TIPA[31:0]IV²A[31:1]DV²A[31:0]ID[31:0]DD[31:0]DPI[31:0]WBPA[31:0]DVA[31:0]2019/8/17嵌入式系统223.1.1AMBA、AHB、APB总线特点AMBA规范主要包括AHB系统总线和APB外围总线。AMBA2.0规范包括四个部分:AHB、ASB、APB和TestMethodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。2019/8/17嵌入式系统233.1.3S3C2410处理器管理系统支持大端(BigEndian)/小端(LittleEndian)模式;地址空间为每个内存块128MB(一共1CB),每个内存块支持8/16/32位数据总线编程;8个内存块,6个用于ROM、SRAM和其它,2个用于ROM/SRAM/SDRAM;1个起始地址和大小可编程的内存块(Bank7);7个起始地址固定的内存块(Bank0~Bank6);所有内存块可编程寻址周期;支持SDRAM自动刷新模式;支持多种类型ROM启动,包括NOR/NANDFlash、E