ARM9微控制器的软硬件平台设计
嵌入式应用系统设计包括硬件平台和软件平台两部分。前者是以嵌入式微控制器/微处理器为核心的硬件系统;后者则是围绕嵌入式操作系统构建的软件系统。两者在设计上是密不可分的,并且需要在设计之间进行权衡优化,根据实际应用进行外扩和裁剪。
基于ARM926EJS内核的LPC3180内部集成了丰富的外设资源,为嵌入式系统构建提供了很大的设计空间。本文结合笔者开发LPC3180嵌入式平台的实际经验,将具体介绍该系统的实现、结构组成和实验结果。
1 LPC3180芯片特性介绍
LPC3180是Philips公司新推出的一款ARM9微控制器。它采用90nm工艺技术,片内集成ARM9EJS处理器内核,具有高计算性能、低功耗的特性,这使得在很多对功耗敏感的嵌入式应用场合中仍能使用高性能的ARM9微控制器。LPC3180内核正常工作电压为1.2V,在低功耗模式下可降至 0.9 V;同时,LPC3180作为一款新型的32位微控制器,其新特性还包括:
◆ 片内集成向量浮点(VFP)协处理器。LPC3180的浮点运算单元有3条独立的流水线,支持并行单精度或双精度浮点加/减、乘/除以及乘累积运算,完全兼容IEEE754标准,适用于高速浮点运算场合。
◆ 片内集成USB OTG控制模块,同时支持与便携USB主设备或USB外设相连,可用于与PDA、读卡器和打印机等设备直接相连,而无需PC机介入。
◆ LPC3180采用多层的AHB总线系统,为各个主模块提供独立的总线,包括CPU的指令总线和数据总线、2套DMA控制器数据总线以及1套USB控制器数据总线。
LPC3180的内部架构如图1所示。
图1 LPC3180内部架构
LPC3180的其他特性包括: 内部集成MLC/SLCNAND控制器、SDR/DDR SDRAM控制器、SD 卡接口,UART、SPI、I2C外围通信模块,以及高速/毫秒定时器、RTC、看门狗定时器、10位ADC等其他功能模块。
2 硬件平台设计
以LPC3180为核心的硬件平台设计框架如图2所示。
图2 LPC3180硬件平台设计框图
(1) 存储器系统
NAND Flash存储器。通过LPC3180内部集成的MLC/SLC NAND控制器直接外接多级或单级 NAND Flash器件。本系统选用ST NAND256R3A,其32 MB存储空间可满足存放系统引导程序、嵌入式操作系统内核和文件系统的大小要求。
SDRAM存储器。系统选用2片16位MICRON SDRAM,并联构建32位SDRAM存储器系统。 32 MB SDRAM空间,可满足嵌入式操作系统以及上层应用程序的运行要求。
SD卡插槽。系统通过LPC3180内部集成的SD卡接口,提供SD卡插槽,可用于SD存储卡外扩,作为外部存储空间。
(2) 外围通信接口
UART接口。LPC3180内部集成了标准UART模块和高速UART模块,符合550工业标准。系统外扩了UART1/7、UART2和UART5,用于实现基本的串行通信功能;同时,UART5可用于系统启动时的外部程序下载。
USB接口。LPC3180内部集成了USB host、USB device以及 USB OTG控制器,通过外部USB收发模块Philips ISP1301外扩 USB host接口A、USB device接口B以及USB OTG接口 AB。
(3) 其他外围模块
系统通过I2C接口外扩了一个简易的字符型LCD显示模块,用于应用程序运行结果显示;同时,为了简化硬件系统设计,系统的以太网模块通过 USB host接口A以软件方式实现外扩。
3 系统关键模块设计
3.1 NAND Flash存储器模块
LPC3180内部集成了MLC/SLC NAND控制器,通过外部引脚可直接外接多级或单级NAND Flash 器件,如图3所示。需要注意的是MLC和SLC NAND控制器通过引脚复用,使用相同的接口与 NAND Flash相连,且同一时刻只允许开启其中一个控制器,因此在系统上电后必须通过配置FLASH_CTRL寄存器选择要使用的NAND控制器。在闲置状态时,也可通过写寄存器关闭NAND控制器,以降低功耗。NAND Flash存储器模块是整个系统主要的静态数据存储空间,用于存储系统启动过程中的加载程序,因此在LPC3180系统设计中是必不可少的。
图3 NAND Flash接口连接图
3.2 USB接口模块
LPC3180内部集成USB控制模块,但不包括USB物理层,系统通过外接USB收发模块ISP1301实现USB的物理层接口。图4是USB接口连接图。LPC3180内部通过AHB从设备总线配置USB控制器,可工作在全速(12 Mb/s)和低速 (1.5 Mb/s)两种模式下。
图4 USB接口连接图
4 软件系统设计
软件系统组成包括系统引导程序Bootloader,嵌入式操作系统以及上层应用程序。其中Bootloader是运行于操作系统之前的引导程序,主要任务是完成系统启动之前必要的硬件初始化和操作系统加载;操作系统是整个嵌入式平台的核心程序,主要功能是高效地管理和分配底层硬件资源,并为上层应用程序提供与硬件细节无关的系统调用接口。
软件系统设计必须与硬件平台紧密结合。LPC3180采用NAN