用户中心

资讯 > 工业PC

基于ARM的PC/104处理器模块设计

作者:赵捷 肖珂 张兴会2010.08.27阅读 3883

        1.引言
        PC/104 是一种专门为嵌入式控制而定义的工业控制总线,1992 年被IEEE 协会定义为 IEEE-P996.1,其信号定义和ISA 总线一致,但电气规范和机械规范却完全不同, 是一种 优化的小型、堆栈式结构的嵌入式总线标准。与ISA 相比,PC/104 具有小尺寸结构(96 mm ×90 mm)、堆栈式连接、较低的总线驱动电流一些独特的功能。
        PC/104 凭借紧凑的外形,成熟的标准体系结构,高可靠性,大量应用于工业设备、仪 器、医疗设备、通信设备等嵌入式应用场合,而这些应用场合既需要软硬件环境,又要求模 块化、标准化、小型化和低功耗,而本文设计的以ARM 处理器和Linux 操作系统相结合 的嵌入式系统恰恰具有这些特点,与传统X86 系列处理器模块相比,硬件方面采用ARM 处 理器,具有低成本、低功耗、散热小等特点。软件方面采用嵌入式Linux 操作系统,具有开 发周期短、通用性强等特点。
        2.PC/104 处理器模块设计
        2.1 ARM 处理器的特点
        ARM(Advanced RISC Machines)处理器是一种低功耗高性能32 位RISC 处理器,本设计 的处理器就是采用ARM9 系列处理器。该系列处理器是目前主流的嵌入式处理器,主要包 括ARM9TDMI 和ARM9E-S 等系列。采用5 级流水线,指令执行效率较ARM7 有较大提高, 而且带有MMU 功能,这也是与ARM7 的重要区别。同时,该系列的处理器支持指令Cache 和数据Cache,因而具有更高的数据处理能力。
        2.2 系统设计
        目前典型的 ARM9 处理器中,AT91RM9200 具有更高性价比的特点,可以为智能控制 领域嵌入式系统提供优秀的解决方案。而PC/104 的小尺寸结构,需要根据应用场合对处理 器模块上的AT91RM9200 处理器资源进行取舍,也可以通过PC/104 总线进行扩展模块的设 计。鉴于对通常的工业现场需求的考虑,系统结构框图如图1 所示。

        其中,SDRAM 采用两片HY57V561620T、NorFlash 采用一片AM29LV320DB,NAND FLASH 采用一片K9F1208。其余的外设接口有:1 个10/100M 以太网接口,1 个USB Host, 2 个RS232 接口、实时时钟、1 个JTAG 调试接口。
        2.3 PC/104 总线信号
        PC/104 总线按其引脚功能可分为四类信号:
        (1)地址和数据信号:20 位地址总线A[19:0],16 位数据总线D[15:0],地址使能信号AEN。
        (2)周期控制信号:存储器读信号MEMR#,存储器写信号MEMW#,系统存储器读信号 SMEMR#,系统存储器写信号SMEMW#,IO 读信号IOR#,IO 写信号IOW#,IO 通道就绪 信号IOCHRDY。
        (3)总线控制信号:复位信号RESET,系统总线时钟信号BCLK,时钟信号OSC。
        (4)中断信号:中断信号IRQ2~7,IRQ10~15。
        2.4 PC/104 总线接口电路设计
        分析上述信号和AT91RM9200 处理器的特点后,选用CPLD 来实现PC/104 总线和 AT91RM9200 之间的逻辑电路。系统的结构框图如图2 所示。

        (1) 存储器和IO 读写信号的产生
        将 AT91RM9200 的NCS6、NCS7 分别划分为PC/104 总线上的存储器空间和IO 空间, 通过CPLD 实现片选信号和AT91RM9200 读写信号(NRD、NWR0)的或逻辑来分别产生存储 器读写信号(MEMR#、MEMW#)和IO 的读写信号(IOR#、IOW#)。当寻址空间大于1MB 时, 系统存储器读写信号有效,将AT91RM9200 的高位地址线A20 与上述存储器读写信号相或 即可产生SMEMR#、SMEMW#。
        (2) 地址使能信号AEN 的产生
        对于 AT91RM9200 来说,访问PC/104 存储器空间和IO 空间时,片选信号NCS6、NCS7 有效,所以通过CPLD 对NCS6 和NCS7 两个片选信号的进行相与逻辑后产生的信号即能达 到地址使能信号AEN 的功能。
        (3) 复位信号RESET 的产生
        PC/104 总线的复位信号RESET 是高电平有效,所以需要将AT91RM9200 的复位信号 取反后得到控制工程网版权所有,该取反逻辑在CPLD 中实现。
        (4) 系统总线时钟信号BCLK 和时钟信号OSC 的产生
        PC/104 总线时钟信号BCLK 的频率6MHz-8MHz,而AT91RM9200 有四个可编程时钟 输出PCK0-PCK3,每个输出信号可由1 到64 间2 的幂次进行分频,这完全可以满足频率的 要求。对于频率为14.31818MHz 的时钟信号OSC 可使用有源晶体振荡器产生,也可使用 CPLD 分频得到。
        (5) 中断信号的产生
        AT91RM9200 具有32 个独立可屏蔽向量中断源,其中中断源0 定义为FIQ,中断源1 定义为系统中断,中断源2 到31 可与内置的用户外设或外部中断线连接,所以将PC/104 总线的中断信号分配到中断源2 到31 上,当有中断产生时,最终通过GPIO 的状态来判断 中断源的位置。
        (6) 3.3V 和5V 的电平转换电路
        PC/104 总线信号的逻辑高、低电平都与对应的ISA 信号一致,即5V 电平标准,而 AT91RM9200 正常工作电压是3.3V,为了使其完全兼容PC/104 总线电平标准,必须进行电 平转换。系统采用3.3V/5V 转换芯片74LVC164245,该芯片为16 位总线宽度www.cechina.cn,可正常工作 在3.3V 和5V 两种电压下,这样地址总线、数据总线和控制总线经过转换电路后即可满足 PC/104 总线的电平标准。
        3.LINUX 操作系统的移植
        嵌入式 linux 系统包含引导程序(Bootloader)、内核(由内存管理、进程管理和事务处理 构成)以及初始化进程。作为本系统的应用场合还应该包括根文件系统,TCP/IP 网络支持, 必要的工具和驱动程序等。下面从嵌入式linux 系统的各个组成部分出发,分别讲述移植过 程。
        3.1 U-Boot 构建系统的引导装载程序
        U-Boot 作为通用的Bootloader 可以方便移植到其它硬件平台上,最新版的源代码可以 在Sourcefoge 网站上下载。由于U-Boot 支持AT91RM9200 处理器,只需对相应的文件修改 使U-Boot 支持本系统即可。下面简要介绍一下U-Boot 1.1.4 修改过程:
        (1) flash.h 文件定义了所有的flash 的属性,如果没有系统使用的flash 型号,需要在此 文件中添加flash 的属性。
        (2) 修改编译入口地址TEXT_BASE 使其在系统RAM 寻址空间中。
        (3) 修改at91rm9200dk.h 文件中FLASH 和SDRAM 大小为系统存储空间大小。
        (4) 修改flash.c 文件中读写flash 的函数使其能烧写系统使用的flash 型号。
        3.2 Linux 2.6 内核配置和编译
        Linux 2.6 相对以前的Linux 内核在很多方面有重大的改进CONTROL ENGINEERING China版权所有,尤其是在内核的可配置性 和实时性方面的改进,支持更多的微处理器,更好的内核互动性以及响应性,驱动模式的改 变,sys 文件系统的引入等。所以本设计选用稳定的Linux 2.6.15 内核版本。
        内核配置过程如下:首先在系统类型(system type)下选择处理器的类型,文件系统(File system)配置选中要用到的文件类型以及自动加载选项,在块设备(Block devices)中支持随后 建立的RAM disk 文件系统,设置initrd 参数为文件系统映像的起始地址,以便在启动的时 候内核通过此参数可以正确地加载RAM disk 文件系统。在字符设备(Character devices)中选 中支持AT91RM9200 串口和虚拟终端选项。建立交叉编译环境建立好之后,修改内核主目 录下Makefile 文件中ARCH 和CROSS_COMPILE,在PATH 环境变量中添加交叉编译器路 径,运行make bzImage 命令编译内核为压缩方式,并将内核的镜像下载到nor flash 中就可 以通过U-Boot 引导。
        3.3 驱动程序的开发
        驱动程序作为系统内核的一部分,它工作在内核态,而应用程序工作在用户态。也就是 不能直接通过指针,把用户空间的数据地址传递给内核。限于篇幅有限,只介绍在应用程序 完成对PC/104 总线空间的访问方法:可以通过copy_from_user,copy_to_user 等函数完成应 用程序与驱动程序之间的传递数据;也可以通过remap_page_range 函数将物理地址直接映 射到用户空间,应用程序对该用户空间的地址访问相当于直接对物理地址的访问。相比较而 言,后者比前者的读写速度快,本系统的PC/104 总线的驱动程序就是采用这种方法。
        3.4 用BusyBox 建立RAMdisk 根文件系统
        BusyBox 是一个很成功的开源软件,它集成了一百多个最常用的Linux(如cp, sh, ls, init, gzip 等)和工具软件,甚至集成了一个http 服务器和一个telnet 服务器,并且支持Glibc 和 uGlibc,用户可以非常方便地在BusyBox 中定制所需的应用程序。几乎所有的嵌入式Linux 都使用BusyBox 作为工具。
        RAM disk 是存在于RAM 中并且功能犹如块设备,由于其上的内容断电不保护,所以 RAM disk 通常会从经压缩的磁盘文件系统(例如ext2)加载其内容。具体的创建过程如下: 为根文件系统建立一个空的文件系统映像并对其初始化,建立文件系统并且安装它,将根文 件系统复制到RAM disk 后卸载它,使用gzip 命令压缩文件系统产生一个经压缩的RAM disk。
        4.结束语
        本文给出了一种基于 ARM9 处理器的PC/104 总线解决方案,硬件采用以ATMEL 公司 的AT91RM9200 为核心的处理器模块很好地实现了PC/104 总线接口,软件上完成了Linux 操作系统的移植。该方案完全符合PC/104 规范,充分体现了模块化、标准化、小型化和低 功耗等特性,与传统X86 为核心的PC/104 模块相比,突出的特点是低成本、散热小和灵活 性好。目前该模块在智能控制预测工程应用中运行稳定,可以完全取代传统的PC/104 处理
        器模块,并且经过进一步的模块扩展即可以完成特殊场合的定制需要。
        本文作者创新点:本文给出了一种以ARM9 为核心的PC/104 处理器模块完整解决方案, 为其他的应用PC104 处理器的场合提供了可选方案。
        参考文献:
        [1] PC/104 Specification [M]. Version 2.5. PC/104 Embedded Consortium, November 2003
        [2] AT91RM9200 datasheet[M ]. Atmel Corporation, 2005.
        [3] Alessandro Rubini. Linux 设备驱动程序[M ]. 第2 版. 北京:中国电力出版社,2003.
        [4] 喻强www.cechina.cn,戴晓明,徐峥.基于Intel815E 芯片组的PCI-104CPU 模块设计[J].微计算机信 息,2006CONTROL ENGINEERING China版权所有,14: 35-36
版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688