S3C44B0X处理器体系结构分析SA06011130张纪胜SC06011063王钟SC06011013蔡虹主要内容➲S3C44B0X简介➲S3C44B0X处理器工作模式➲各片上资源接口功能S3C44B0X概述➲16/32-bitRISC架构➲适用于对功耗和成本敏感的嵌入式应用➲ARM7TDMIT处理器核,0.25um工艺➲Thumbde-compressor➲片上ICE断点调试➲32位乘法器➲SAMBAIIA总线架构最高66MHZS3C44B0X片上功能➲2.5vARM7TDMI内核,带有8k的cache➲外部存储器控制器➲LCD控制器,支持最大256色STN,lcd具有专用DMA➲2通道通用dma,2通道外设dma➲2通道UART➲1通道多主I2C总线控制器➲1通道I2S总线控制器S3C44B0X片上功能(续)➲5PWM定时器和1个内部定时器➲看门狗➲71个通用IO端口,8个外部中断源➲功耗控制:Normal,Slow,Idle,andStopmode➲8ch10bitADC➲RTC➲带PLL的片上时钟发生器S3C44B0X内部结构ARM处理器工作模式➲ARM:此时执行32位对齐的ARM指令➲Thumb:16位对齐的Thumb指令,PC的第一位来选择一个字中的哪个半字➲可通过BX指令在这两种状态之间切换➲支持字节、半字、字数据类型➲可选大端或小端➲支持7种操作模式:用户模式usr\系统模式sys\快速中断模式fiq\中断模式irq\管理员模式svc\数据访问终止模式abt\未定义模式und➲外部中断、处理异常和软件故意为之都可以改变处理器操作模式➲应用程序在usermode运行,其它模式用来处理中断、异常或访问系统保护资源寄存器➲37个32位寄存器:31个通用寄存器和6个状态寄存器➲ARM状态时16个通用寄存器r0-r15和程序状态寄存器cpsr.其中r13通常用做堆栈指针,r14用做子程序链接状态寄存器,r15用做程序计数器(PC)➲Thumb状态时可以访问8个通用寄存器r0-r7、pc、sp、lr和cpsr➲在每种特权模式下都有对应的sp、LR和备份的程序状态寄存器spsr异常➲异常处理之前当前的处理器状态需保留➲允许多个异常同时发生,会按照固定的优先级来处理➲异常类型:FIQ、IRQ、未定义指令、预取中止、数据中止、复位、软中断➲异常优先级:resetdataabortfiqirqprefetchabort未定义指令,swi异常(续)➲复位:处理器复位电平有效,产生复位异常➲IRQ:处理器外部中断,且cpsr的I位为0时产生IRQ异常➲FIQ:处理器快速中断,且cpsr的F位为0时产生FIQ异常➲SWI:执行swi指令时产生,一般用来实现系统调用➲指令预取中止:预取指令的地址不存在或该地址不允许当前指令访问➲数据中止:数据访问指令的地址不存在或该地址不允许当前指令访问➲未定义指令:arm处理器或协处理器遇到不能处理指令异常的处理➲将原来执行的程序的下一条指令地址送lr➲拷贝cpsr到spsr➲根据异常类型改变cpsr的模式位的值➲令pc的值指向异常处理向量所指的下一条指令➲这时也可能关中断,以防止不可估计的异常嵌套发生异常的处理(续)➲处理器处于thumb状态时发生异常,当pc载入异常向量所在地址时自动切换到arm状态➲异常处理结束必须移出lr减去响应的偏移赋值给pc➲拷贝spsr到cpsr➲开中断(如果开始关中断的话)FIQ➲FIQ通常用来支持数据传输和通道操作。在arm状态下有足够的影子寄存器用来减少对寄存器存取的需要➲FIQ由外部设备拉低nFIQ引脚触发的。通过对ISYNC输入引脚的控制可以排除同步或异步的情况➲FIQ离开中断处理时,通过pc=r14_fiq-4完成➲FIQ可以通过设置cpsr中的F标志来禁止。➲处理器将在每条指令的最后检测FIQ是否发生IRQ➲IRQ优先级比FIQ低,并且在系统进入FIQ处理时IRQ将被屏蔽➲IRQ可以通过设置cpsr寄存器中断的I标志位来禁止➲退出IRQ处理时通过pc=r14_irq-4来完成ABORT➲有两种类型的abort:数据中止、预取指令中止➲在存储器操作周期中检测abort异常是否发生➲当一个地址上的数据不可用,mmu将产生一个abort信号。abort处理必须辨认abort的原因使得要求的额数据可用并重新运行那条被abort的指令➲完成了abort的处理后通过pc=r14_abt-4(预取指)或pc=r14_abt-8(数据)软中断和未定义指令➲swi用来进入超级用户模式通常用来实现系统调用➲swi处理程序通过pc=r14_svc退出异常处理返回到swi后面的指令上➲遇到一个不能执行的指令时则调用未定义指令陷井处理程序通常用来使用软件仿真器扩展thumb或arm指令用的➲处理后期通过pc=r14_und来退出该异常处理返回到未定义指令的下一条指令的地址复位➲当nRESET信号为低,处理器会放弃指令的执行并从下一个字地址取指➲当nRESET信号再次变高后,处理器执行下面操作➲将当前pc和cpsr值写入r14_svc和spsr_svc➲强制M[4:0]为1011,cpsr中I和F置1,T清零➲强制pc从0x00地址取得下一条指令,进入arm状态存储器管理器(一)➲支持大小端方式➲每bank32M字节总共256M➲支持8/16/32位数据总线宽度➲7个bank具有固定的bank始址和可编程的bank大小➲1个bank可编程始址和bank大小➲所有bank操作周期都可编程➲支持异步和同步DRAM存储器管理器(二)➲Bank0总线宽度:bootrom在地址上位于arm处理器的bank0区,它的数据总线宽度通过om[1:0]引脚上的电平设定➲BWSCON寄存器主要用来设置存储器的总线宽度和等待状态➲BANKCONn寄存器对操作时序进行设置➲REFRESH寄存器刷新控制器➲BANKSIZE寄存器定义了bank的大小时钟和电源管理➲lowpower➲片上PLL可以使MCU达到66MHZ➲时钟可以通过软件设置成各种功能模块➲Powermode:Normal,Slow,IdleandStopmode➲可以通过EINT[7:0]或RTCalarm中断唤醒电源管理五种模式➲Normalmode:CPU和所有的外设都正常工作➲Slowmode:PLL不工作,使用外部时钟作为主时钟.电源消耗依赖于外部时钟的频率➲Idlemode:CPUCORE的时钟供应,仅对所有外设提供时钟.中断请求能从该模式唤醒cpu➲SLIdlemode:除了LCD控制器冻结所有的时钟➲Stopmode:冻结所有的时钟供应,PLL也停止,外部中断能使CPU从该模式唤醒CPUwrapper和总线优先级➲CPUwrapper由一个cache、写入buffer和CPU内核组成。总线仲裁逻辑决定每个总线占用者的优先权➲有一个8k的internalMEM可以有如下三种方式使用:➲作为8k字节的统一指令或数据的cache➲用作一个4k字节的统一指令或数据cache和一个4k字节的内部SRAM➲整个地用作8k字节的内部SRAMCPUwrapper和总线优先级(续)➲4路组相连架构➲LRU更新cache➲直写策略保持数据的一致性➲cachemiss发生时4个字的内容从外部存储器循序取得➲指令和数据分开(哈佛架构)➲internalSRAM主要用来减少ISR的执行时间CPUwrapper和总线优先级(续)➲总线仲裁逻辑可以决定总线占用者的优先级➲总线仲裁逻辑使用一种round-robin模式和一种固定的优先级模式➲LCD_DMA,BDMA,ZDMA,nBREQ(外部总线控制器)之间的优先级可以通过s/w来修改CPUwrapper和总线优先级(续)➲S3C44B0X有4个写缓冲区寄存器来提高存储器的写性能➲当写缓冲器模式使能,CPU不再将数据直接写入外部存储器而是将数据写入writebuffer➲即便是外部总线已经有其它master占用,例如DMA操作的情况下也如此➲写缓冲区模块在系统总线没有被别的更高优先级的master占用时,将数据写入外部存储器DMA(一)➲2chZDMA(通用DMA)连接在SSB(三星系统总线)上和2chBDMA(桥DMA)连接于SSB和SPB(三星外设总线)之间的接口层➲连接于SSB上的ZDMA控制器可以用于从IOtoMEM,MEMtoIO,MEMtoIO➲BDMA支持IOtoMEM,MEMtoIO,➲DMA优先级可编程➲突发式传输模式DMA(二)➲ZDMA和BDMA操作都可以通过软件,内部外设的请求或者外部请求引脚(nXDREQ0,1)来启动➲ZDMA中最重要的特性是on-the-fly模式,减少了在外部存储器和固定外设(固定的源或者目标地址设备)之间的DMA操作中的周期数➲通常,DMA传输包括两个分开的周期➲一个是从源存储器或者I/O“”设备的读,另一个是向存储器或者目标I/O“”设备写入DMA(三)➲存储器控制器必须首先从数据总线读数据,然后再将这个数据写入数据➲总线on-the-fly模式则具有合并的读/写周期,就是存储器控制器对源或者目标设备在总线上的读或写都会产生响应信号,与此同时,存储器控制器也为存储器的操作提供读或者写对应的控制信号➲on-the-fly模式可以减小DMA请求周期的数目➲为了完成on-the-fly模式,源的总线尺宽度应该与目标总线宽度相同DMA(四)➲连接于SSB(三星系统总线)的ZDMA通道可以完成从外部存储器到外部存储器之间的数据传输。这一点不同与BDMA(桥DMA➲ZDMA中具有一个允许多重传输的缓冲器(4字的FIFO)支持DMA操作中的4字猝发传输,这提高了总线利用率和传输速度。DMA(五)➲BDMA连接在SSB(三星系统总线)和SPB(三星外设总线)的接口(桥)上。主要是用来在内存和内部外设(UART\I2S\I2C\SIO)之间传输数据➲BDMA无暂存缓冲器不支持4字的猝发传输.➲BDMA也可以从内存到内存传输数据,但效率不高,这时应该用ZDMA来做可以获得更快的速度和总线利用率DMA(六)➲4种外部DMA请求应答协议。每种类型定义了DMA请求和应答的方式➲ZDMA和BDMA都支持外部触发,但这些协议只对应于ZDMA➲HandshakeMode➲SingleStepMode➲WholeServiceMode➲DemandModeDMA(七)➲总共有三种DMA传输模式(Unittransfermode,BlocktransfermodeandOntheflytransfermode).➲这个和上面协议不同,它是定义每次传输的单位➲Unittransfer1unitread,then1unitwrite➲Blocktransfer4unitburstread,then4unitburstwrite➲On-the-flytransfer1unitreador1unitwriteexclusively中断控制器(一)➲30个中断源(看门狗、6个定时器、6个UART、8个外部中断、4个dma、2个rtc、adc\i2c\i2s\sio各一个➲可选电平触发或边沿触发➲触发中断的电平或上升沿还是下降沿触发中断可编程➲2种类型的中断模式,FIQ(快速中断请求)或IRQ(普通中断请求)中断控制器(二)➲CPSR指ARM7TDMI处理器的程序状态寄存器。➲如果CPSR的F位被设置为1,处理器将不接受来自中断控制器的FIQ。如果CPSR的I位被设置为1,处理器将不接受来自中断控制器的IRQ。➲因此,为了使能中断相应机制,CPSR的F位或I位必须被清0,同时INTMASK的相应位必须被清0中断控制器(三)如果将所有的中断源定义为IRQ中断,同一时刻发生了10个中断请求,可以通过读取中断登记寄存器来了解哪些中断发生了,并对产生的中断依次进行处理,这也就是通过软件的方式决定了中断服务的优先级。中断控制器(四)如果该寄存器的某一个位被置1,则该位对应的中断响应被禁止了。