【vfp开源代码栏目提醒】:网学会员鉴于大家对vfp开源代码十分关注,论文会员在此为大家搜集整理了“ARM9微控制器LPC3180的软硬件平台设计 - 产品手册”一文,供大家参考学习
ARM9 微控制器 LPC3180 的软硬件平台设计摘要 介绍以 Philips LPC3180 微控制器为核心的嵌入式软硬件平台设计;对系统设计的硬件部分和软件部分进行详细的分析,并针对 LPC3180 芯片特性着重讨论了其软件系统构建以及系统启动流程。
实验结果表明,LPC3180 嵌入式系统平台结合片内硬件浮点运算单元,具有高性能的 浮点运算处理能力,可满足复杂的嵌入式应用场合的要求。
关键词 LPC3180 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 采用 NAND Flash 作为整个系统的程序存储区域,在系统启动时通过片上 ROM 的 bootstrap 程序从NAND Flash 加载并执行外部引导程序来实现整个系统的启动步骤。
因此,整个软件系统采取了图 5 所示的设计结构。
图5 软件系统结构框图(1) 系统引导程序 Bootloader 由于启动过程首先从片内的 bootstrap 程序开始,因此系统采取二级Bootloader 设计,包括第一级 Sibl 和第二级 U boot。
其中 Sibl 是 bootstrap 加载并执行的第一个引导程序,在程序大小上受到bootstrap 加载的限制,因此设计上尽量做到了小型化和 功能专一。
它除了完成最基本的硬件初始化以外,主要功能是实现其他程序包括 U boot从NAND Flash 的加载,完成下一级 Bootloader 运行之前的内存地址空间分布。
第二级 Bootloader 采用功能强大的 sourceforge
开源软件 U boot。
U boot 的主要功能是完成嵌入式操作系统启动前的 底层硬件初始化,并为Linux 内核提供启动参数,最终引导操作系统 Linux 内核启动。
另外为了实现程序镜像文件编程写入 NAND Flash, U boot 嵌入了一个 NAND 子系统,通过U boot 的用户命令行实现对 NAND Flash 的读/写操作,可将程序镜像写入NAND Flash 指 定的地址空间。
(2) 嵌入式操作系统 LPC3180 内部集成了 ARM926EJS 处理器内核,带存储器管理单元 MMU,支持多数主流嵌入式操作系统。
系统通过编写板级支持
代码,移 植了 Linux2.6.10作为平台操作系统,利用稳定的 Linux2.6 内核实现任务调度、进程管理、内存管理等功能,同时,针对 Linux 的可配置 性,对内核进行裁剪和硬件驱动
代码添加,系统实现了一个小型但功能强大的内核程序,适应了嵌入式系统存储资源相对紧缺的状况。
5 系统启动流程分析 由上面的软件结构组成分析可知,整个系统启动流程分为 3 个步骤:① 系统上电后,首先从片上 ROM 固化的 bootstrap 程序执行。
bootstrap 用于完成外部引导程序下载并跳入执行。
bootstrap 运行 过程首先读输入引脚GPIO_01。
如果 GPIO_01 置为高,则从 NAND Flash 下载程序引导系统启动;如果置为低,则依次检测 USB 接口和 UART5 接口,通过外部连接下载引导程序。
系统通过设置 GPIO_IO 跳线来控制 bootstrap 启动过程,本例将 GPIO_01 置为高,从 NAND Flash 下载程序。
② 系统启动的第二阶段是运行 bootstrap 下载的引导程序 Sibl。
Sibl 完成系统必要的初始化后,从 NAND Flash 加载镜像程序到指定的 SDRAM 空间。
镜像程序在起始位置添加了 64 字节的头信息,用于 Sibl 识别和加载,头信息数据结构如下: struct image_header uint32_tih_magic/镜像头信息同步字,Sibl 通过该字识别程序/ uint32_tih_hcrc/镜像头信息 CRC 校验码/ uint32_tih_time/存储镜像创建时间/ uint32_tih_size/镜像数据大小/ uint32_tih_load/镜像加载地址/ uint32_tih_ep/镜像入口地址/ uint32_tih_dcrc/镜像数据 CRC 校验码/ uint8_tih_os/操作系统信息/ uint8_tih_arch/CPU 体系结构类型/ uint8_tih_type/镜像类型/ uint8_tih_comp/压缩类型/ uint8_tih_name32/镜像名称/ Sibl 从 NAND Flash 起始地址开始搜索。
如果读到镜像同步字 ih_magic,则识别镜像程序,并根据偏移地址读取程序大小 ih_size 和加载地址 ih_load,将程序加载到指定的 SDRAM 空间;加载完成后根据 CRC 校验码 ih_dcrc 对 SDRAM数据进行 CRC 检 测;最后根据镜像类型 ih_type 判断镜像是否可执行,若可执行,则跳入镜像入口地址 ih_ep,否则 Sibl 继续搜索 NAND Flash 镜像程序。
镜像程序使用 U-boot 提供的工具 mkimage 添加头信息,命令格式如下:mkimage-A arch-O os-T type-C comp-a addr-e ep-n name-d data_file image 图6 系统启动过程内存空间分布图③ 完成 Sibl 加载后,内存空间分布如图 6 所示,系统进入启动流程的第三阶段 U-boot。
U-boot 完成 Linux 内核镜像的解压缩和操作系统启动前的初始化,最终跳入内核入口地址,完成对 Linux 的引导。
6 系统性能分析 系统构建提供了一个完整的 LPC3180 嵌入式软硬件平台,下面对 LPC3180浮点运算能力进行测试和分析。
测试方法是使用一个浮点运算密集的 算法,用ADS 编译器分别编译使能硬件
VFP 和软浮点运算两个版本的测试程序,并在不同的 CPU 时钟频率下比较运行时间,结果如表 1 所列。
分析实验数据,可以得出结论:
VFP 协处理器在相同时钟频率下,提高了 5倍左右的浮点运算性能。
因此,LPC3180 平台结合
VFP 协处理器,能够 实现复杂的浮点运算密集算法。
在微控制器中集成硬件浮点运算单元,这使得微控制器的数据处理能力大大提高,能够胜任多数的数字信号处理应用。
表1 浮点运算结果结语 本文介绍了以 LPC3180 微控制器为核心的嵌入式软硬件平台,并测试、验证了 LPC3180 的浮点运算性能。
该平台对于 LPC3180 的应用开发具有借鉴意义。
目前 LPC3180 在医疗器械、工业控制、POS 机、数字信号处理等领域有着广泛的应用。
参考文献1 LPC3180 User Manual. http://standardics.philips.com.2 ISP1301 User Manual. http://semiconductors.philips.com.