基于ARM的最小应用系统设计与开发桑兴民1王晓明姚新文许丽(兰州交通大学光电技术与智能控制教育部重点实验室,甘肃兰州730070)摘要:采用RISC(ReducedInstructionSetComputer,精简指令集计算机)架构的32位ARM(AdvancedRISCMachines)微控制器,具有低功耗(内核工作电压一般在1.8V)、高性能、执行速度快(一般以MIPS为单位)、执行效率高等特点。本文采用Atmel公司的ARM920T内核的32位ARM微控制器AT91RM9200,实现其最小应用系统的硬件设计及软件开发;并且完成该系统的调试和仿真。关键词:嵌入式系统;增强型精简指令集计算机;片上系统;AT91RM9200ADesignandDevelopmentoftheLeastApplicationSystemaboutARMSANGxing-min,WANGxiao-ming(KeyLaboratoryofOpto-electronicTechnologyandIntelligentControl(LanzhouJiaotongUniversity),MinistryofEducation;730070;LanzhouGansu,China)Abstract:ByusingRISC(ReducedInstructionSetComputer)construction,ARM(AdvancedRISCMachines)of32bitsMicrocontrollertakesonlow-lossandlow-consume(VDDCOREsupplyvoltageis1.8V),highcapability,highexecutingspeed(theunitisMIPS).Thispaperuse32bitsMicrocontrollerAT91RM9200ofAtmelCompany,achieveadesignoftheleastapplicationsystem,includinghardwaredesignandsoftwareprogram,achievethedebugandassemblyofthissystem.Keywords:EmbeddedSystem;ARM(AdvancedRISCMachines);SOC;AT91RM92000引言嵌入式系统具有可靠性高,实时性强,系统内核小和系统配置要求低等特点,使其在工业过程控制、信息家电、交通管理以及机器人制造等研究生产领域中得到了广泛应用。与8/16位单片机相比,32位ARM微控制器具有更高的性价比,更低的功耗,执行速度更快,性能更高等特点[1,4]。本文采用Atmel公司的ARM920T内核的32位ARM微控制器AT91RM9200,在外围扩展了64MB(32MB*2)32位SDRAM存储器,16MB16位FLASH存储器,并实现其初始化;通过DEBUGUSART和JTAG两个调试口,实现此应用系统的调试与仿真。1AT91RM9200Atmel公司生产的AT91RM9200,是完全围绕ARM920T内核构建的系统。采用RISC架构,支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件[1,3];它有丰富的系统与应用外设的标准接口,包括总线接口(EBI);EBI支持SDRAM、BurstFlash及静态存储器的控制器,并设计了专用的电路以方便与SmartMedia、CompactFlash及NandFlash连接;USB2.0主机和设备端口;UART串口、SPI、调试通道(DBGU)。此外,还有高级中断控制器(AIC)、外设数据控制器(PDC),JTAG-ICE口,支持所有数字引脚实现IEEE1149.1JTAG边界扫描[1];内置的10/100Base-T以太网媒体访问控制器(MAC),可实现系统主机与PHY(OSI参考模型物理层)的数据交换[1]。项目基金号:2GS045-B52-016,甘肃省科技攻关计划项目作者简介:桑兴民1(1981-),男,山东寿光,兰州交通大学硕士研究生,交通信息控制及工程;王晓明(1953-),男,甘肃白银,兰州交通大学教授,博士生导师。姚新文,男,(1979-),河南济源,兰州交通大学硕士研究生,许丽,女,(1980-),湖北天门,兰州交通大学硕士研究生。Authorintroduction:SANGxing-min:male,(1981-),Shandongshouguang,graduatestudentoflanzhoujiaotonguniversity,studyfieldistrafficinformationengineeringandcontrol;WANGxiao-ming:male,(1953-),Gansubaiyin,professoroflanzhoujiaotonguniversity,doctortutor.YAOxin-wen,male,(1979-),Henanjiyuan,graduatestudentoflanzhoujiaotonguniversity;XUli:female(1980-),Hubeitianmen,graduatestudentoflanzhoujiaotonguniversity.2扩展FLASH硬件设计与软件初始化FLASH存储器作为一种非易失性存储器,在系统中通常用于存放程序代码,常量表以及一些在系统掉电后需要保存的用户数据等[3]。本文FLASH存储芯片使用的是INTEL公司的16位FLASH存储器TE28F128J3C150(16MB)。该芯片工作电压仅为3V,通过配置其内部命令寄存器,可对FLASH进行编程(烧写),擦除以及其它操作。2.1硬件设计由于ARM微控制器的系统支持8/16/32位的存储器系统,32位的存储器系统具有较高的性能,而16位的存储器系统则在成本及功耗等方面占有很大优势[3],本设计FLASH存储器的配置系统即采用16位存储器系统。其硬件连线为,DQ0-DQ15接数据线D0-D15;A1-A24接地址线A1-A24,A0接地;输出使能OE,写使能WE分别接ARM控制信号CFOE-NOE-NRD,和CFWE-NEW-NER0;擦除/编程/块时钟使能VPEN和复位/掉电引脚RP#一并接NRST,片选使能信号CE0接BFCS-NCS0。2.2软件实现,初始化FLASH初始化FLASH,要求配置EBI接口的片选任务寄存器EBI_CSA,和EBI配置寄存器EBI_CFGR。使其片选寄存器EBI_CSA配置为CS0=FLASH。配置完成时,还要通过配置SMC(静态存储控制器)的片选寄存器0(SMC_CS0)来启动FLASH。3扩展SDRAM硬件设计与软件初始化与FLASH存储器相比较,SDRAM不具有掉电保持数据的特性,但其存储速度大大的高于FLASH存储器,且具有读写属性,因此SDRAM在系统中主要用作程序的运行空间,数据及堆栈区。同时,系统及用户堆栈,运行数据也都在SDRAM中。3.1硬件设计:本文SDRAM存储器采用的是MICRON公司的16位MT48LC16M16A2(32MB);两片MT48LC16M16A2(32MB*2)并联构建32位的SDRAM存储器系统。其中一片为高16位,另一片为低16位,系统将这两片MT48LC16M16A2作为一个整体配置到片选线NCS1。两片地址复用,A0-A9接地址线A2-A11,A10接SDA10,A11,A12分别接地址线A13,A14,BA0,BA1接A16,A17;SDRAM的时钟CLK和时钟使能CKE接ARM控制线SDCK和SDCKE。DQM的高低控制线DQML和DQMH,用来区分高,低16位;低16位芯片DQML接地址线A0,DQMH接CFIOR-NBS1-NER1;高16位芯片DQML接地址线A1,DQMH接CFIOW-NBS3-NER3;低16位芯片DQ0-15接数据线D0-D15,高16位DQ0-15接数据线D16-D31。3.2软件实现,初始化SDRAM初始化SDRAM,NORFLASH都要求配置EBI接口的片选任务寄存器EBI_CSA,还要配置EBI配置寄存器EBI_CFGR,不同之处是在与SDRAM为动态RAM,而FLASH为静态存储器,配置这两个寄存器的参数是不同的。同时,SDRAM配置模式寄存器MR时,要发送“刷新”命令;而在发送“刷新”命令之前要首先发送“所有组预充电”命令,此后发送“载入模式寄存器命令”;在配置刷新定时寄存器时要根据所选的SDRAM的型号定义刷新频率。程序流程图,如图1所示图1初始化SDRAM程序流程图4最小应用系统的硬件设计与软件实现4.1最小应用系统的硬件设计AT91RM9200支持JTAG-ICE仿真,DEBUGUSART调试,在芯片外部设计了20针的JTAG接口,与USART兼容的一个调试信道DEBUGUSART口。供电电源;内核为1.8V,外围IO为3.3V;提供时钟为慢时钟32.768KHz,和主时钟18.432MHz(由内部PLL倍频至209MHz)。其系统硬件结构图,如图2所示;图2系统硬件结构图4.2,系统的初始化程序1),初始化时钟,包括主时钟,PLLA时钟,PLLB时钟:程序流程为,首先检测主时钟,检查PLLA,PLLB两个时钟是否在正确的范围内。在定义时钟时,配置PMC的时钟发生器PLLA和PLLB寄存器,即CKGR_PLLAR,CKGR_PLLBR,定义PLLA,PLLB两个时钟。通过配置PMC主时钟寄存器PMC_MCKR,定义主时钟。特别注意的是在定义主时钟频率,即在配制主时钟寄存器PMC_MCKR时,要先写一个慢时钟的参数,再在下一步写主时钟的参数。2),初始化程序,包括初始化时钟,初始化SDRAM,FLASH,初始化DEBUGUSART。图3系统主程序流程图5最小应用系统的调试与仿真5.1仿真和调试工具的选择ADS(ARMDeveloperSupport)是ARM公司推出的集成编辑,编译和调试工具,ADS主要包括三个部分组成:Multi-iceServer(配置工具,用于配置ARM内核);CodeWarrior(集成编辑,编译和链接工具)和AXD(调试工具)[2,3]。Magic-ICE是一个硬件仿真器,一端是并口,连接主机;另一端是JTAG接口,连接目标板[2,3]。5.2系统调试与仿真本文在不采用嵌入式操作系统的情况下,利用ADS1.2和Magic-ICE仿真调试该系统。连接好系统的调试信道DEBUGUSART与主机的串口COM1,打开主机的超级终端,设置串口参数如下:波特率设置为115200;位数据位为8;无奇偶校验位;1位停止位;数据流控制选择无,然后点击“确定”。上电目标板,在远程终端输出字符“C”,运行系统初始化程序,在串口程序中输出相应的字符。在ADS环境下,运行系统初始化程序,调试各个扩展芯片,待初始化完毕。此时,基于AT91RM9200的最小应用系统已经实现。6结束语随着信息电子技术的迅猛发展,8位单片机无论是在速度,功能以及功耗上都与32位的ARM微控制器无法比拟。而本文采用Atmel公司的32位ARM微控制器AT91RM9200,核心供电电压为1.8V,工作频率在180MHz时可达200MIPS,比8/16位单片机更具优越性。通过外扩SDRAM,NORFLASH,扩展了ARM芯片的存储单元,实现其最小应用系统的硬件设计及软件开发,对32位微控制器的开发与应用都具有重要的意义。参考文献:[1]ARM920TTMbasedMicrocontrollerAT91RM9200datasheet[2]AndrewSloss.ARM嵌入式系统开发:软件设计与优化[M].沈建华,等译.北京:北京航天航空大学出版社,2005.[3]李驹光.ARM应用系统开发详解——基于S3C4510B的系统设计[M].北京:清