||
摘 要:本文介绍了基于ARM 处理器的 PCI/1O4总线嵌入式计算机的构成,对 ARM 实现 PIC/1O4总线嵌入式计算机技术进行了研究。最后,描述了用删处理器替代X86在.z-_,Ik控制领域应用的方法和具体设计。
1 引言
嵌入式系统设计正在向着软硬件相结合的方向发展, 嵌入式操作系统应用越来越广泛,而基于删处理器和Linux操作系统的嵌入式计算机以其设计灵活、软硬件可裁剪、性能优越、成本低等优势,倍受设计者和使用者的青睐。本文对ARM处理器和嵌入式 Linux的应用进行了研究探索,介绍了相关设计思路 ,并且结合基于ARM处理器的PC/104总线嵌入式计算机的开发过程,对嵌入式系统研究中的关键技术进行了研究。通过对传统的X86嵌入式设备的弊端的分析以及针对 ARM处理器迅猛发展的势 头,提出了用 ARM 处理器替代 X86在工业控制领域应用的思路,并在此思路指导下完成了基本研究和具体设计。
2 嵌入式系统
“嵌入式系统”是以应用为中心,以计算机技术为基础, 软、硬件可裁减,适合应用于对功能、可靠性、成本、体积、功 耗等要求较高的专用计算机系统。“嵌入性”、“专用性”与 “计算机系统”是嵌入式系统的三个基本要素。
嵌入式系统由硬件和软件两大部分组成。
嵌入式系统的核心部件是各种类 型的嵌 入式处理器[1]。根据其现状,嵌入式计算机可以分成几类 :嵌入式微处理器(MP U)、嵌入式微控制器(MCU)、嵌入式 DSP处理器(DSP)、嵌入式片上系统( )。其中,微处理器与微控制器在嵌入式领域应用最为广泛。
微处理器表示的芯片内只包括 CPU本身,而不包括存储器、I/O接口等其他功能模块;嵌入式系统的 CPU不一定需要像通用 CPU那么强的处理能力 ,但对体积和功耗等指标要求较高。其中,ARM 处理器是微处理器中的典型代表。AR M处理器是一种高性能、低功耗的 RISC器件。SAMSUNG公司的 $3C2410芯片基于 王M920T内核,采用五级流水线,提供 1.1MIPS/MHz的性能 ,是高性能和低功耗的宏单元。ARM920T具有全性能的 MMU指令和数据 Cache以及高速 AMBA总线接 口。S3C2410提供了比较完整的通用系统的外围设备,并且使整个系统消耗降到最低。
由S3C2410上述特点可以看出,这种芯片功能很强大,集成了各种常用的重要接口,如 UAR T、SPI、IIC、SD卡、USB接口和触摸屏接口等。接口应用范围很广,适用于工业控制等领域。
在嵌入式软件方面,Linux为嵌入式操作系统提供一个极有吸引力的选择,它是一个和 Unix相似、以核心基础的、完全内存保护、多任务和多进程的操作系统[Linux系统因其卓越的性能、开放的源代码、模块化设计支持多种硬件平台以及函数接 口符合国际和工业标准等点,在操作系统中尤其是嵌入式系统中得到了广泛的应用相对于其他嵌入式操作系统,Linux在很多方面独具特色与目前其他流行的专用嵌入式操作系统相 比,嵌入Linux操作系统具有以下优势:模块化设计的操作系统;以用于嵌入式系统;具有小巧的功能完善的内核;强大的程管理、内存管理;符合 POSIX标准;强大的网络支持能;高适应性和可靠性;可移植性;支持大量的外围硬件备;软件开发者的广泛支持。Linux的 自由精神吸引了千上万的程序员投入到其开发和测试中来 ,这使得 Linnxu在短时间内就成为一个功能强大的操作系统。
3 PC/104计算机
PC/104是一种优化的、小型的、堆栈式结构的嵌入控制系统,包括特定的结构和总线接口。PC/104总线共104根引脚,其中绝大多数与 ISA总线信号特性完全一致具体如下:
(1)dx尺寸结构:标准模块的机械尺寸是 3.6×3.8寸 ,即 96×90mm。
(2)堆栈式连接:去掉总线背板和插板滑道,总线“针”和“孔”形式层叠连接,即 PC/104总线模块之间总的连接是通过上层的针和下层的孔相互连接,这种层叠封装有极好的抗震性。
(3)轻松总线驱动:减少元件数量和电源消耗,4mA线驱动即可使模块正常工作,每个模块 1~2瓦能耗。
4 硬件设计
4.1 总线接口部分
ARM和 PC/1O4总线接口原理如图 1所示。
在电路设计上 ,㈣ 采用了XIL Ⅸ的 XC95l44) 。ARM的数据、地址总线,以及读写等需要使用的控制信号全部连接到 CPLD上作为ARM处理器访问 CPLD的信号线,并将CPLD的部分I/O引出,通过BUFFER后,全部连接到Pc/104的总线接口上。这样,ARM处理器直接访问CPLD,CPLD则根据信号线上的变化完成相应的PC/1O4 总线上的操作。
对于接口设计来说,最主要的就是时序设计。时序设计关系到系统能否正确地工作。同时,CPLD的标准输入 输出为L I,电平,输人电平则可以兼容 rL电平。因此,虽然 CPLD可以直接与1vrL电平的 PC104总线相连, 但可能因为一些电气特性、信号完整性方面的问题导致系 统的可靠性下降。所以,使用了BUFFER来进行两个电平 间的转换,确保系统的稳定性和可靠性。
4.2 时序分析
PC/104总线的 I/0读写时序如图 2和图3所示;Mem 空间的访问和 I/O空间基本类似,只是把信号由IOW、IOR换成了MEMW、MEMR。
设计 Pc/104总线的访问时序,只需使用以下总线信号 :
(1)DATA[IS..O]:PC/104数据总线;
(2)ADDR[23..O]:PC/1O4地址总线 ;
(3)IOW:I/O空间写控制,低电平有效 ;
(4)IOR:I/O空间读控制,低电平有效;
(5)MEMW:Mem空间写控制 ,低电平有效;
(6)MEMR:Mere空问读控制,低电平有效;
(7)SYSCLK;PC/104总线时钟;
(8) :地址锁存信号,在此不用作地址锁存,而是用作总线周期的开始同步,它的下降沿表示总线周期开始;
(9)IOCHRDY:I/O设备就绪信号,当该电平为低(无效状态)时,表示 I/O设备要延长总线周期 ,信号 由三态门或集电极开路门驱动 ;
(10)IRQ:中断请求信号 ,当处理器收到中断请求后,完成相应操作。
PC/104总线速度比较慢,ARM 处理器的总线速度要明显高于 Pc/104。为了保证通信的正确性,需要降低ARM处理器的总线速度。因此,在进行 PC/104总线访问 时,采用变延迟 IO(Variable Latency IO)的访问模式,总线速度受 nWAIT信号控制。其读时序如图 4所示,写时序和读时序基本类似。
根据 ARM总线的访问时序,实际参与操作控制的信号包括 :
(1)DATA[15..o3:ARM数据总线;
(2)ADDR[23..o3:ARM地址总线;
(3)a :访问有效,低电平有效;
(4)nOE:读控制信号,低电平有效;
(5)nWE:写控制信号,低电平有效。
在 PC/1O4总线控制器的设计上,需要完成 ARM 访问时序和 PC/1O4访问时序之间的转换。在本系统中是通过可编程逻辑 CPLD完成的,其连接示意图如图 5所示。
在可编程逻辑中,删 处理器的每次访问通过对关 键访问信号 NCS、NEW 和 NRE的解码,识别出相对应的ISA IO读写或内存读写,通过处理器的 RDY信号将访问 逻辑配合产生 ISA访问时序,并且降低访问速度。在 ISA信号这边 ,通过 ISA的 IOCHRDY信号指示本次读写操作完成。具体的操作流程如图 6所示。
S3C2410内部集成了 MMU协处理器,在应用程序或驱动中对它的地址访问只能采用虚地址访 问的方式。因此,需要在 Linux系统中,把用于 Pc/1O4的地址从实地址映射到虚地址,才能在系统中对这块空间进行操作(为了保证系统的安全性,用户态函数通常是不允许访问地址空间的,应用程序只有进入内核状态才由操作系统完成相关的访问,并获取返回值);还需要在内核中设置这片空间的总线模式为变延迟 IO,这样才能通过 CPLD进行总线转换。Linux内核提供了很方便的地址映射方式,在初始启动的映射表内将需要映射的地址对应设置好,系统就可以自动进行地址映射了。通过设置用户可读写属性,在应用程序也可以通过内存操作操作 PC/1O4总线 ,大大方便了用户程序的编写。
5 软件设计
5.1 开发环境的建立与交叉编译
交叉编译环境是指编译、链接和调试嵌入式应用软件 的环境,它与运行嵌入式应用软件的环境有所不同,通常采 用宿主机/目标机模式。在主机中安装 RedHat9.0嵌入式 Linux操作系统[3],并装入 arm-linux-gcc编译器 和 Linux 的 2.4.19版本内核。其中,arm-linux-gcc就是交叉编译工 具。目标机就是自行开发的基于 ARM 的 CPU模块。
5.2 配置、编译内核
在开发环境建立后 ,针对具体的应用对 Linux内核进行裁减、配置和编译。可以分为以下几个具体操作步骤:
(1)make mrproper:用于清除所有的临时文件、中间文件、配置文件。
(2)make menuconfig:进行核心配置,在其中每个选项都有两种选择 Y和 N,分别表示支持和不支持相应的特性或驱动程序,个别选项有 M选择,表示把相应的特性或驱动程序编译成可加载模块的方式。根据不同的应用,对内核进行裁减 系统将新的配置保存成.config文件。
(3)make dep:用于生成依赖性。
(4)make zImage:产生压缩的核心映像。内核压缩映像被系统保留在/arch/arm/boot/目录中。
(5)make modules:组织内核中各个子目录已经配置的模块。
(6)make modules install:在/lib/modules/2.4.19/目录中组—织模块。
经过以上的裁减与编译,生成的内核映像减小到1M以内,大小在 600~700kb左右。
5.3 系统安装
Bootloader引导程序是嵌入式 开发很重要的组成部 分。它是系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。Bootloader引导程序最基本的功能是对硬件系统 的初始化、内核启动参数设置和内核启动。采用 VⅣI作为 内核 的启动加载程序,其主要功能有:
(1)初始化 CPU的主频、SDRAM、中断、串口等硬件;
(2)通过串口下载内核或文件系统到 目标板上 ;
(3)对 FLASH进行格式化,并完成分区;
(4)将修改过的内核或文件系统写入到 FLASH内;
(5)为用户提供一个命令接口。
下面介绍安装的完整过程:
(1)在宿主机上安装 VIⅥ 源文件 ,并利用编译器对源代码进行配置、编译 ,得到原始二进制可执行映像 vivi。生成 的vivi映像 通过 JTAG模式烧录到 FLASH中。
(2)在 vivi安装完成后,需要对 FLASH进行格式化和分区。 需要根据实际的应用情况,对分区的起始位置和大小进行设计。 在 FLASH上至少建立三个分区,第一个分 区一定要从 0地址开始,这是由处理器的硬件结构决定的,同时 vivi默认前三个分区分别是 vivi、内核、文件系统。当然,可以进行更多的分区,但这三个分区是必不可少的。
(3)利用 vivi的下载功能,并借助于 minicom、超级终端这样的系统工具,通过串口把内核和文件系统移植到目标板。
(4)设置内核启动参数,譬如内核在内存中的运行位置、根文 件系统路径等。Linux已经可以在目标系统板上运行了。
为了方便使用,确保系统的稳定性和可维护性 ,在建立 FLASH分区和内核代码中进行独特设计。FLASH分区结构示意图如图 7所示。
在内核代码中,将 48M 64M 这 16M 空间的地址映射从 MMU中去掉,因此在应用程序中不可能访 问到这16M空间的地址 当应用程序出现异常,程序指针产生混乱的时候,通过这种软件和硬件相结合的设计方法保证其依然不可能访问到维护态下的数据。因此 ,如果系统崩溃,还可以进入维护态系统,并在维护态系统 中对默认系统进行恢复。它避免系统崩溃后,又要重新进行 FLASH分区、内核下载这样一些繁琐的过程。
6 实验测试比较
为了对ARM和 X86两种架构进行更加直观的比较我们对两款嵌入式平台进行 了测试比较。其 中,ARM 平台使用的是 S3C2440 400MHz处理器,X86平台使用的是威盛 65Mhz的嵌入式 X86处理器。各项 比较指标如表所示
测试表明,X86平台的计算机更适合于完成处理、运算功能要求比较强大的应用环境。在嵌入式这样以控制为主的应用场合中,选择 ARM 处理器更加合适。
7 结束语
嵌入式系统设计正在向着软硬件相结合的方向发展嵌入式操作系统的应用越来越广泛,而基于 ARM 处理器和 Linux操作系统的嵌入式计算机以其设计灵活、软硬件可裁剪、性能优越、成本低等优势,倍受设计者和使用者的青睐。本文对 ARM处理器和嵌入式 Linux的应用进行了研究探索,介绍了相关设计思路,并结合基于 ARM处理器的PC/1O4总线嵌入式计算机的开发过程,对嵌入式系统中的关键技术进行了研究。通过对传统的 X86嵌入式设备弊端的分析以及针对 ARM 处理器的迅猛发展的势头,提出了用ARM处理器替代 X86在工业控制领域应用的思路,并在此思路指导下完成了基本研究和具体设计。
更多内容请登陆:javascript:;