1嵌入式系统设计与实例开发——基于32位微处理器与实时操作系统第七讲基于ARM的硬件系统结构设计2本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O接口设计人机交互接口设计其它通讯接口设计3S3C44B0/S3C2410时钟电源管理S3C44B0的电源管理有五种模式:正常模式,低速模式,空闲模式,停止模式和LCD的SL空闲模式。S3C2410的电源管理模块有四种活动模式:正常模式,低速模式,休眠模式和断电模式。4S3C44B0/S3C2410时钟管理1.时钟结构:S3C44B0的时钟发生器模块52.时钟源的选择:控制模式引脚(OM3和OM2)与S3C44B0/S3C2410时钟源选择的结合关系如表9-18所示。OM[3:2]状态通过查阅OM3和OM2引脚在nRESET上升沿时的值内部锁存的。6S3C44B0模式OM[3:2]时钟源晶体驱动PLL开始状态Fout00晶振时钟使能使能(1)PLL输出(1)01外部时钟禁止使能(1)PLL输出(1)其他(10,11)测试模式S3C2410模式OM[3:2]MPLL状态UPLL状态主时钟源USB时钟源00OnOn晶振晶振01OnOn晶振外部时钟10OnOn外部时钟晶振11OnOn外部时钟外部时钟73.PLL(锁相环)内置时钟发生器的S3C44B0PLL/S3C2410MPLL是一个以频率与相位输入信号的基准的同步输出信号的电路。84.上电复位:晶振开始振荡数毫秒后,当S3C44B0OSC(S3C2410:XTlpll)时钟稳定后nRESET得到释放,PLL开始根据默认的PLL配置进行运作。PLL在上电复位后变得不稳定,所以Fin代替Fpllo(S3C2410:Mpll)在S/W(S3C2410:软件)更新PLLCON的配置前直接反馈到Fout。用户在复位后想使用PLLCON寄存器的默认值,也需要通过S/W(S3C2410:软件)写入相同的值给PLLCON寄存器。9上电复位时钟锁定10在正常模式下的操作,如果用户希望通过写PMS值的方法改变频率,PLL锁定时间会自动写入。在锁定时间里,时钟不支持内部模块。11S3C44B0/S3C2410电源管理S3C44B0/S3C2410电源管理模块通过控制系统时钟,实现减少系统的电源功耗。S3C44B0的方法与PLL,时钟控制逻辑,外设时钟控制以及唤醒信号相关。1213S3C44B0电源管理状态机14本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O接口设计人机交互接口设计其它通讯接口设计15S3C44B0/S3C2410存储控制器存储器是嵌入式系统的重要组成部分,在嵌入式开发中,扩展存储器是重要的一步。S3C44B0和S3C2410的存储器控制器提供访问外部存储器所需要的存储器控制信号,便于扩展外部存储器。ENDIAN输入(nReset为低时)大/小端模式0小端1大端16S3C44B0的存储器配置17Bank6/Bank7地址分布地址2MB4MB8MB16MB32MBBank6(S3C44B0)起始地址0x0c0000000x0c0000000x0c0000000x0c0000000x0c000000终止地址0x0c1fffff0x0c3fffff0x0c7fffff0x0cffffff0x0dffffffBank7(S3C44B0)起始地址0x0c2000000x0c40000000x0c8000000x0d0000000x0e000000终止地址0x0c3fffff0x0c7fffff0x0cffffff0x0dffffff0x0fffffff18ROM接口4片8位ROM存储器接口1916位ROM存储器接口20SDRAM接口单片16位SDRAM存储器接口21与2片16M的SDRAM的连接方法22S3C44B0/S3C2410存储器接口对应S3C44B0/S3C2410地址引脚连接存储器地址引脚8bit数据总线16bit数据总线32bit数据总线A0A0A1A2A1A1A2A3A2A2A3A4…………23NAND和NOR——性能比较NOR和NAND是现在市场上两种主要的非易失闪存技术NOR的读速度比NAND稍快一些NAND的写入速度比NOR快很多NAND的擦除速度远比NOR的快大多数写入操作需要先进行擦除操作NAND的擦除单元更小,相应的擦除电路更少24接口差别NORflash带有SRAM接口,线性寻址,可以很容易地存取其内部的每一个字节NANDflash使用复用接口和控制IO多次寻址存取数据NAND读和写操作采用512字节的块,这一点有点像硬盘管理,此类操作易于取代硬盘等类似的块设备25容量和成本NANDflash生产过程更为简单,成本低常见的NORflash为128KB~16MB,而NANDflash通常有8~128MBNOR主要应用在代码存储介质中,NAND适合于数据存储NAND在CompactFlash、SecureDigital、PCCards和MMC存储卡市场上所占份额最大26可靠性和耐用性在NAND中每块的最大擦写次数是100万次,而NOR的擦写次数是10万次位交换的问题NANDflash中更突出,需要ECC纠错NANDflash中坏块随机分布,需要通过软件标定——产品量产的问题27嵌入式系统中应用RAM的情况28本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O系统设计人机交互接口设计其它通讯接口设计29I/O子系统的层次模型I/O子系统:I/O设备、相关的设备驱动程序和I/O子系统组成嵌入式I/O子系统。I/O子系统的目标是对RTOS和应用程序员隐藏设备特定的信息,并且对系统的外围I/O设备提供一个统一的访问方法。设备驱动程序I/O设备硬件RTOSI/O子系统应用程序中断处理程序30从不同角度看I/O系统从系统软件开发者角度看,I/O操作意味着与设备的通信、对设备编程初始化和请示执行设备与系统之间的实际数据传输以及操作完成后通知请求者。系统软件工程师必须理解设备的物理特性,如寄存器的定义和设备的访问方法。从RTOS的角度看,I/O操作意味着对I/O请求定位正确的设备,对设备定位正确的设备驱动程序,并解决对设备驱动程序的请求。有时要求RTOS保证对设备的同步访问。RTOS必须进行抽象,对应用程序员隐含设备的特性。从应用程序员角度看,目标是找到一个简单、统一和精练的方法与系统中出现的所有类型的设备通信。31I/O接口的编址方式——端口映射1)I/O接口独立编址——端口映射方式这种编址方式是将存储器地址空间和I/O接口地址空间分开设置,互不影响。设有专门的输入指令(IN)和输出指令(OUT)来完成I/O操作。I/O设备10X00000XFFFFI/O设备2I/O地址空间0X0000系统地址空间0XFFFF主要优点:内存地址空间与I/O接口地址空间分开,互不影响,译码电路较简单,并设有专门的I/O指令,所以编程序易于区分,且执行时间短,快速性好。缺点:只用I/O指令访问I/O端口,功能有限且要采用专用I/O周期和专用I/O控制线,使微处理器复杂化。32I/O接口的编址方式——内存映射1)2)I/O接口与存储器统一编址方式——内存映射这种编址方式不区分存储器地址空间和I/O接口地址空间,把所有的I/O接口的端口都当作是存储器的一个单元对待,每个接口芯片都安排一个或几个与存储器统一编号的地址号。也不设专门的输入/输出指令,所有传送和访问存储器的指令都可用来对I/O接口操作。I/O设备10X00000XFFFFI/O设备2保留I/O地址空间I/O设备硬件系统地址空间应用使用地址空间应用使用地址空间主要优点:访问内存的指令都可用于I/O操作,数据处理功能强;同时I/O接口可与存储器部分共用译码和控制电路。缺点:一是I/O接口要占用存储器地址空间的一部分;二是因不用专门的I/O指令,程序中较难区分I/O操作。33DMAI/ODMAI/ODMA允许设备直接访问内存而不用包含处理器,在数据传输操作开始之前,处理器设置DMA控制器,在数据传输期间,读写操作均不通过处理器。DMA传输速度取决于I/O设备的传输速度、内存设备的速度和DMA控制器的速度。通过指定源地址、目的内存地址和传输到DMA控制器长度,处理器建立传输操作。CPUDMA控制器主存储器I/O设备34字符模式设备与块模式设备根据设备如何处理与系统之间的数据传输方法可将设备分为字符模式设备和块模式设备字符模式设备:允许非结构的数据传输。数据传输典型地采用串行的形式,每次一个字节;字符设备通常是简单的设备,如串口、键盘等;当系统到设备的传输速率高于设备的处理速率时,设备驱动程序开设缓冲区,缓存这些数据;块模式设备:每次传输一个数据块。采用硬件方式控制数据块的大小,有时需要采用固定的传输协议,如USB、以太网等设备35建立通用的I/O接口函数Create()Open()Read()Write()Close()Loctl()Destroy()Driver_Create()Driver_Open()Driver_Read()Driver_Write()Driver_Close()Driver_Loctl()Driver_Destroy()I/O操作设备驱动程序应用设备36I/O接口设计I/O接口电路也简称接口电路。它是主机和外围设备之间交换信息的连接部件(电路)。它在主机和外围设备之间的信息交换中起着桥梁和纽带作用。设置接口电路的必要性:a)解决CPU和外围设备之间的时序配合和通信联络问题。b)解决CPU和外围设备之间的数据格式转换和匹配问题。c)解决CPU的负载能力和外围设备端口选择问题。37通用设计原则(I/O设备)I/O接口接口的概念CPU与外部设备的接口(I/O适配器)接口的功能控制缓冲状态转换整理程序中断38I/O接口3种寄存器数据寄存器、控制寄存器和状态寄存器通用设计原则(I/O设备)数据寄存器状态寄存器控制寄存器I/O接口芯片去I/O设备去CPU39通用设计原则(I/O设备)I/O设备寻址I/O寻址定位I/O设备内部的寄存器(或一小块存储器)与存储器共享总线存储器映像法混合编址CPU存储器地址总线数据总线读信号写总线译码I/O接口译码40通用设计原则(I/O设备)I/O设备寻址I/O隔离法独立编址信号线MERQ/IORQ地址空间CPU存储器地址总线数据总线读信号写总线I/O接口MERQ/IORQ41I/O设备的数据输入/输出输入过程CPU把一个地址值放在地址总线上,这一步将选择某一输入设备;CPUCPU从数据总线读入数据,并放在一个相应的寄存器中。输出过程CPU把一个地址值放在地址总线上,选择输出设备;CPU输出设备认为数据有效,从而把数据取走。究竟什么时候数据才成为有效?通用设计原则(I/O设备)42I/O设备的定时方式简单的外围设备机械开关、二极管(无需定时机制,CPU只要接收或发送数据就可以了)慢速或中速的外围设备速度和CPU速度不在一个数量级,或不规则时间间隔操作(键盘)异步定时方式中断方式查询方式高速的外围设备以相等的时间间隔操作,采样同步定时方式时钟脉冲控制DMA通用设计原则(I/O设备)43通用设计原则(I/O设备)I/O控制方式低速设备程序查询方式程序中断方式高速设备DMA通道方式外围处理机(PPU)方式44I/O接口程序查询方式读操作流程1.CPU测试I/O设备状态,等待空闲2.CPU下达读命令,测试状态寄存器3.把数据寄存器中的数据读入到CPU中4.重复执行以上各步写操作流程1.CPU测试I/O设备状态,等待空闲2.把数据传输到I/O接口芯片的数据寄存器中3.CPU下达写命令4.重复执行以上各步通用设计原则(I/O设备)询问状态准备好否?报告状态I/O接口