PC/104是一种专门为嵌入式应用而定义的总线 ,lEEE会将它定义IEEE—P996 1,信号定义和PC/AT基本一致 ,但气和机械规范却完全不同,是一种优化的、小型、堆栈式结构嵌入式系统 。基于PC/104结构的模块由于开发方便、品种富、结构简单等优势在工业控制领域有着广泛的应用。
ARM(Advanced RISC Machine)公司成立于 1990年月,是苹果电脑,Acorn电脑集团和 VLSI Technology的合资业 。ARM首创了CHlPLESS的模式 ,该公司只设计出高效ARM内核,通过将 ARM内核授权给半导体公司 ,由半导体公根据实际的应用情况加上各种外围的功能比如Flash、串RTC等构成一块完整的芯片。
本文主要介绍基于ARM的 PC/104模块的结构 ,并给出总线模拟 、串行通讯接口以及驱动程序的相关内容。
1 PC/104处理器模块的要求
在工业控制和数据采集中 ,PC/104模块的总线 、串口功是必不可少的,而硬盘接口、并行口、键盘口等 lO 口却很少用 ,因此在选用另外的CPU代替x86作为PC/104模块的处器首先要求能够兼容原有的 PC/104总线 ,使得符合PC/规范的数字量输入/输出模块、模拟量输入/输出模块以及针PC/104系统开发的各个系统能够正常使用;其次该处理器须具有 2个串行接 口,以适应大部分场合的串行通讯需要三 ,必须具有可以满足足够的程序空间和RAM空间为用户的序和数据使用;第四,必须具有 RTC(Real Time Clock),并能断电时保持系统时间不变;第五 ,友好的开发环境 ,以适应现系统开发的需要 。
2 基于 Inte1386SX的 PC/104模块的缺点
首先 ,基于386SX 的 PC/104处理器模块的成本比较386SX/40的控制模块的价格在千元以上 ;第二,功耗较大瓦的功耗给电源供应、散热的设计带来一系列的问题,并且不合某些低功耗要求的环境中应用;第三 :程序烧写繁琐 ,基x86的PC/104的理器模块一般采用 DOC (Disk On Ch或者 DOM(Disk On Module)作为程序存储器,由于DOC用烧写工具比较昂贵 ,所以实际生产时多采用人工烧录方法括格式化、复制多个步骤 ,每烧一块芯片需要断电 、重新启动器数次,效率低下 、操作繁琐 ;第四,系统启动速度慢 ,从上电开始执行用户程序一般需要 2—5秒时间,WDT溢出时恢复时间较长,容易遗漏一些重要的事件。第五 ,开发环境不够友好,基于386SX 的 PC/104处理器模块的程序一般在 DOS环境下开发,开发工具一般为TURBO C或者BORLAND C,开发环境比较落后,编程 、调试非常的不方便。
3 ARM处理器的特点
首先速度快 ,ARM是一种基于 RISC架构的处理器 ,运行在44MHz的ARM的处理器的处理能力可大40MlPS,远大于基于CISC架构 386SX/40的13MIPS;其次 ,功耗非常低 ,例 LPC2129的内核耗电仅为 30mA (供 电电压为 1.8V,时钟为 60MHz),功耗为 54mW,不到 386SX的十分之一 ;第三,集成度高、功能强大 ,很多世界著名的半导体厂家都购买了 ARM的内 核,并根据市场的需要推出了集成丰富外围功能包括 SRAM、 RTC,CAN接口、串行口、以太网接口等等的芯片 ,在很多应用场合,一块ARM芯片可以满足所有的需要;第四,价格低廉,ARM芯片生产厂家很多,在工业控制和民用产品中的应用也非常广泛,芯片价格非常低廉 ,带128KFLASH的PHILIPS LPC2104的市场价格仅为50元人民币。
4 CPU的选择
经过80186、X51、ARM、DSP等多种CPU 比较后最终确定采用ARM作为 PC104处理器模块的替代处理器,为了兼容原 有的基于 PC/104设计的板卡。经过多家 ARM产品的比较,最 终确定采用 PHILIPS LPC2129作为本次开发的 PC/104处理 器模块 的 CPU。LPC2129是基于一个支持实时仿真和跟踪的 16/32位 ARM7TDMl—S CPU,并 内置 256K字节(KB)的高速 Flash存储器。128位宽度的存储器接口和独特的加速结构使 32位代码能够在最大时钟速率(60MHz)下运行。LPC2129采 用很小的 TQFP一64封装 、具有极低的功耗 、2个串口、多个 32 位定时器 、4路10位ADC、2路CAN、PWM通道 、46个 GPlO 以及多达 9个外部中断使它特别适用于工业控制领域CPU模块的开 发 。
5 系统结构
基于ARM的PC/104系统主要由处理器 、总线接口 、 Flash、实时时钟 、复位电路 、通讯接口、调试接口、电源几个部分组成 ,如图 1所示。
6 硬件设计
6 1总线部分
本模块开发的关键之一是 PC/104总线的接口,包括控制总线 、地址总线和数据总线 ,采用专用的 3 3V/5V电平转换芯片74LVC4245以保证不同电平电路的高速互连,74LVC4245是一块A3 8位的总线收发器 ,并可以在5V和3.3V系统之间实现电平的转换。
地址总线 、数据总线 、控制总线可以采用 PHILIPS的LPC2292等带扩展总线ARM处理器的总线 ,也可以采用 LPC2192 ARM 处理器电平转换收发器的P0口、P1口的空闲引脚行模拟。在总线模拟时,由于P0口引脚和扩展功能的复用 ,因地址总线 、数据总线很难选用连续的IO引脚,在编写总线驱程序时只能通过CPU的移位指令灵活的处理:
void outportb(unsigned int portAdd ress,unsigned char value)
{
addr=(portAddress<<1O)://将地址 向右移 1O位
a=(value << 21): //利用两次移位,合成一个 8位数据
b=(value<<23).
a=(a& Ox01eO0000); //屏蔽无关位
b=(b& O×78OOOOOO):
data=(a I b):
}
6_2 串口通讯
串口通讯是工业控制中的一个非常重要的通讯方式 ,原的x86 PC/104处理器模块包含两个带Modem接口的RS23接口,由于在实际应用中很少用到全功能的Modem接口,所在开发中省略RS232接口中的与 Modem通讯握手相关的号 ,包括RTS、DCD、CTS、RI、DTR、DSR六个通讯握手的信号只保留 RXD、T×D、GND三个信号。在接口上仍旧采用双排针的插座 ,引脚排列也按照 DTE(Digital Terminal Equipmen的标准设置,以达到和原有的 386S×/40的PC/104处理器块的充分兼容。
由于省略了 Modem通讯握手的相关信号 ,使得采用 1TTL/RS232的电平转换芯片 MAX3232实现两个串口的接口成为可能 ,并在实际的使用中得到了验证。
6.3 驱动程序
为了兼容已有的系统减少软件移植的工作量 ,因此在编写底层驱动程序时已充分考虑和 DOS开发环境的底层驱动程序兼容 ,伯比侣如仃在编垤写¨总”线驱动程序时编写了 unsigned char in portb(unsigned int portAddress)和void outportb(unsigned int portAddress.unsigned char value)两个函数: void outportb(unsigned int portAddress,unsigned char value)
{
}:
unsigned char inportb(unsigned int portAddress)
{ll_
}
这样原有在Dos下开发的程序源代码不需要修改,只需要在ARM 的开发平台上重新编译一下即可。
7 结束语
采用ARM处理器替代386SX的PC/104处理器模块后, 首先成本大幅降低 ,该模块在某公司的环形线圈车辆检测器中投用后 ,产品的单位生产成本大幅降低 ,同时也最大限度的利用了以前的开发成果。第二 ,功耗大幅降低,CPU模块的功耗从原来8W 降低到现在的1W;第三,程序烧录方便 ,可以通过JTAG口或者串El直接下载程序 ,非常方便。第四,启动速度加快 ,系统启动时间小于0、5秒 ,远小于基于 386SX的 PC/104处理器的 2—4秒 ;第五,执行速度加快 ,全部任务执行完毕的时间从 2ms缩短为 0.5ms,速度提高了约4倍 ;第六 ,开发平台更加友好 ,基于 386SX的PC/104模块的开发在 D0S下进行,开发工具一般用 TURBO C或者 BORLAND C,ARM 开发则采用 WlND0WS 下的 ADS(ARM Developer Suite)进行开发 ,而且可以非常方便地在线跟踪和调试 。
采用LPC2129CPU的PC/104处理器的车辆检测器在国 家“十五”科技攻关lTS专项杭州市智能交通系统示范工程的西湖隧道 、九曜山隧道中成功的投入使用,准确 、及时、可靠的采集了隧道的车速 、流量 、车道占有率等道路交通信息 ,取得了良好的社会效益 。