1嵌入式系统设计与实例开发——ARM与C/OS-Ⅱ第六讲基于ARM的硬件系统结构设计北京航空航天大学嵌入式机电控制研究室王田苗魏洪兴2本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O接口设计人机交互接口设计其它通讯接口设计3基于ARM的硬件设计主要介绍基于ARM7的嵌入式硬件开发平台的设计方法,包括结构、主要接口、存储器选用方案以及外设、显示等方面的内容。嵌入式硬件开发平台的体系结构外围存储器接口设计方法键盘、LCD等人机交互接口的设计触摸屏的设计以太网设计CAN总线设计4SamsungS3C44B0XSamsungS3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,它使用ARM7TDMI核,工作在66MHZ。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:8KBCache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1个多主I2C总线控制器、1个IIS总线控制器,5通道PWM定时器及一个内部定时器、71个通用I/O口、8个外部中断源、实时时钟、8通道10位ADC等。5基于ARM的嵌入式硬件平台体系结构基于ARM架构的32位微处理器SamsungS3C44B0X2MBNORFlash(BIOS)8MBSDRM(系统内存)16MBNANDFlash(硬盘)USB接口PDIUSBD12两个RS-232串行通信接口JTAG调试端口LCD显示键盘输入TCP/IP协议CANBUS6芯片体系结构7S3C44B0X存储系统的特征支持数据存储的大/小端选择(通过外部引脚和程序进行选择)地址空间:具有8个存储体,每个存储体可达32Mb,总共可达256MB。对所有存储体的访问大小均可进行改变(8位/16位/32位)8个存储体中,Bank0-Bank5可支持ROM、SRAM;Bank6、Bank7可支持ROM、SRAM和FP/EDO/SDRAM等。8复位后的S3C44B0X的存储器映射表32MB32MB32MB32MB32MB28MB256MBSA[27:0]可存取区域特殊功能寄存器(4MB)SROM(nGCS0)SROM(nGCS1)SROM(nGCS2)SROM(nGCS3)SROM(nGCS4)SROM(nGCS5)SROM/DRAM/SDRAM(nGCS6)SROM/DRAM/SDRAM(nGCS7)0x1000_00000x0e00_00000x0c00_00000x0e00_00000x0800_00000x0600_00000x0400_00000x0200_00000x01c0_00000x0000_00002MB/4MB/8MB/16MB/32MB2MB/4MB/8MB/16MB/32MB9系统的存储空间分配Bank0:1片2MBNORFlash,放置系统引导程序,系统上电复位后,PC指针自动指向Bank0的第一个单元,进行系统自举。。Bank1:K9F2808(三星16MbyteFlash),非线性寻址。具体的时序可以参考K9F2808的datasheetBank2:PDIUSBD12。USB设备端接口芯片,占用系统外部中断0。8位数据总线。Bank3、Bank4未接设备。可以供扩展使用Bank5:RTL8019AS,ISA总线兼容的10M以太网(PHY+MAC层)控制芯片。占用系统外部中断1,16位数据总线;扩展IO口10Bank6:SDRAM,起始地址为0xC000000。在SDRAM中,前512Kbyte的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数据,就可以更新LCD的显示)。系统的程序存储空间从0xC080000开始。也就是,引导系统的时候,需要把system.bin文件复制到0xC080000开始的地址空间,把PC指针指向0xC080000。Bank7:未使用。可以扩展另一片SDRAM,或者其他的外设。系统的同步串行口(SIO),连接着触摸屏控制芯片FM7843(与ADS7843完全兼容);CAN总线控制芯片MCP2510;Max504(D/A);键盘和LED扫描芯片ZLG7289。在同步串行口上,还可以扩展其他的芯片。通过IO口控制设备的片选信号(CS)来防止设备的冲突。注:系统的外部总线主要有16位和8位。原理图设计的时候需要注意16总线和8位总线的区别。在连接不同总线宽度的外设,地址是否需要依次向后错位。11本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O接口设计人机交互接口设计其它通讯接口设计12S3C44B0X与FLASH的连接(HalfWord方式)13使用Bank0上的1片2MBflash来放置系统BIOS,系统上电以后,PC指针自动指向Bank0的第一个单元,开始进行系统自举。系统自举完成以后,便从硬盘中将系统文件和用户应用程序复制到SDRAM内存中执行。Bank1上接16MNANDFlash,当做系统硬盘使用,可以构造文件系统,存放海量数据。用SDRAM当作系统内存,只有Bank6/Bank7能支持SDRAM,所以将SDRAM接在Bank6上。如果同时使用Bank6/Bank7,则要求连接相同容量的存储器,而且其地址空间在物理上是连续的。存储器接口设计14NAND和NOR——性能比较NOR和NAND是现在市场上两种主要的非易失闪存技术NOR的读速度比NAND稍快一些NAND的写入速度比NOR快很多NAND的擦除速度远比NOR的快大多数写入操作需要先进行擦除操作NAND的擦除单元更小,相应的擦除电路更少15接口差别NORflash带有SRAM接口,线性寻址,可以很容易地存取其内部的每一个字节NANDflash使用复用接口和控制IO多次寻址存取数据NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作易于取代硬盘等类似的块设备16容量和成本NANDflash生产过程更为简单,成本低常见的NORflash为128KB~16MB,而NANDflash通常有8~128MBNOR主要应用在代码存储介质中,NAND适合于数据存储NAND在CompactFlash、SecureDigital、PCCards和MMC存储卡市场上所占份额最大17可靠性和耐用性在NAND中每块的最大擦写次数是100万次,而NOR的擦写次数是10万次位交换的问题NANDflash中更突出,需要ECC纠错NANDflash中坏块随机分布,需要通过软件标定——产品量产的问题18关于BOOTROMBank0:系统的启动ROM(FlashRom)。在系统复位的时候,处理器的PC(程序计数器)指针指向0x0地址。在Bank0的起始地址的程序,就是系统的初始化程序。此程序的主要任务是:1、管理处理器的中断服务程序处理器的中断是从0x0地址开始,引导ROM负责把这一部分的中断映射到另一个区域,以便系统处理。具体的做法,可以参考44binit.s里面的代码。(这部分代码是三星主页可以提供,它把系统的中断,映射到了不同的指针所指向的地址空间(主要就是系统RAM的空间))。192、初始化硬件平台,配置其他的BankS3C44B0X的Bank0是通过外部的一个管脚提供的上拉、下拉电阻来配置的。主要包括:数据位数(8位、16位、32位),数据格式(大端、小端)。而其他的Bank的配置,以及读写周期等信息是靠Bank0内部的代码配置相应的寄存器来实现的。同时,系统的引导Rom也负责配置系统的其他的一些寄存器,比如,系统的PLL(锁频环)配置,系统的IO口等一些端口功能的配置等等。203、系统自动检测引导Rom负责检测系统的启动所必须的外设是否正常。主要是系统的SDRAM的检测。4、系统的软件设置,更新系统(system.bin)用户可以在系统启动的时候,按任意键,进入系统的软件设置状态。通过引导Rom设置或者查看系统的一些软件信息。包括:通过开启USB端口;更新系统文件system.bin;LCD显示测试;演示程序的装载测试;键盘测试;触摸屏的坐标校准;触摸屏测试;以太网地址的设置等21本节提要132546基于ARM的硬件系统体系结构存储器接口设计网络接口设计I/O系统设计人机交互接口设计其它通讯接口设计22I/O子系统的层次模型I/O子系统:I/O设备、相关的设备驱动程序和I/O子系统组成嵌入式I/O子系统。I/O子系统的目标是对RTOS和应用程序员隐藏设备特定的信息,并且对系统的外围I/O设备提供一个统一的访问方法。设备驱动程序I/O设备硬件RTOSI/O子系统应用程序中断处理程序23从不同角度看I/O系统从系统软件开发者角度看,I/O操作意味着与设备的通信、对设备编程初始化和请示执行设备与系统之间的实际数据传输以及操作完成后通知请求者。系统软件工程师必须理解设备的物理特性,如寄存器的定义和设备的访问方法。从RTOS的角度看,I/O操作意味着对I/O请求定位正确的设备,对设备定位正确的设备驱动程序,并解决对设备驱动程序的请求。有时要求RTOS保证对设备的同步访问。RTOS必须进行抽象,对应用程序员隐含设备的特性。从应用程序员角度看,目标是找到一个简单、统一和精练的方法与系统中出现的所有类型的设备。24I/O接口的编址方式——端口映射1)I/O接口独立编址——端口映射方式这种编址方式是将存储器地址空间和I/O接口地址空间分开设置,互不影响。设有专门的输入指令(IN)和输出指令(OUT)来完成I/O操作。I/O设备10X00000XFFFFI/O设备2I/O地址空间I/O设备1I/O设备硬件0X0000系统地址空间0XFFFF主要优点:内存地址空间与I/O接口地址空间分开,互不影响,译码电路较简单,并设有专门的I/O指令,所以编程序易于区分,且执行时间短,快速性好。缺点:只用I/O指令访问I/O端口,功能有限且要采用专用I/O周期和专用I/O控制线,使微处理器复杂化。25I/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操作。26DMAI/ODMAI/ODMA允许设备直接访问内存而不用包含处理器,在数据传输操作开始之前,处理器设置DMA控制器,在数据传输期间,读写操作均不通过处理器。DMA传输速度取决于I/O设备的传输速度、内存设备的速度和DMA控制器的速度。通过指定源地址、目的内存地址和传输到DMA控制器长度,处理器建立传输操作。CPUDMA控制器主存储器I/O设备27I/O接口设计I/O接口电路也简称接口电路。它是主机和外围设备之间交换信息的连接部件(电路)。它在主机和外围设备之间的信息交换中起着桥梁和纽带作用。设置接口电路的必要性:a)解决CPU和外围设备之间的时序配合和通信联络问题。b)解决CPU和外围设备之间的数据格式转换和匹配问题。c)解决CPU的负载能力和外围设备端口选择问题。28S3C44B0X的I/O接口ARM系统完成I/O功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器地址。当从这些地址加载或向这些地址存储时,它们提供I/O功能。典型情况下,从存储器映射I/O地址加载用于输入,而向存储器映射I/O地址存储用于输出。S3C44B0X有71个多功