基于ARM9 的嵌入式多串口服务器设计
摘要:以ARM920T 为内核的S3C2440A 作为主控制器和以太网控制芯片DM9000AEP 设计硬件平台; 构建并移植适合嵌入式串口服务器系统的嵌入式Linux 操作系统,利用Linux 完善的TCP/IP 协议设计ARM 端的多线程网络服务器程序。设计实现RS-232C 串口与以太网口数据的双向传输,使现有的智能仪器设备成功接入以太网。
随着计算机网络的发展和物联网的兴起,将智能仪器接入网络已成为一种趋势,以实现数据的共享与远程管理。但是目前大多智能仪器使用的是异步串行通信接口RS-232C /485 /422,因此迫切需要一种能将异步串行通信协议转换为以太网TCP /IP 协议的协议转换器,使现有的串行通信设备方便地接入以太网,而不需要改变原有仪器设备的硬件。为此,笔者研究设计了基于ARM9微处理器和Linux 操作系统的嵌入式多串口服务器。
1 系统总体思路
采用以ARM920T 为内核的S3C2440A 微处理器运行Linux 操作系统,使用100MBase-T 网络在串行设备与远端主机之间有效地进行传输数据,这样通过串口服务器使串行设备快速接入以太网,利用以太网的TCP /IP 协议进行串口数据包的传输。嵌入式串口服务器作为以太网数据与串口数据之间交互的中间桥梁,负责数据的双向透明传送。服务器端的主要任务是在ARM 处理器中实现RS-232C /485 /422 转TCP /IP 协议网关,完成对各端口的监听和数据的双向传输,当端口有数据产生或客户端有数据请求时启动独立线程,保证实时而又不丢失地进行数据传输。基于上述要求系统必须具备: 一套对网络支持良好的嵌入式操作系统,并且可根据专用的硬件平台进行裁剪; 微处理器的运行速度与处理数据的能力优秀,外围芯片接口友好。
笔者选用Linux 作为实时操作系统,并进行移植与配置使其可以运行在以ARM9 为核心的硬件平台上。S3C2440A 自带三路串行通信口,完全能够满足多串口服务器的设计要求,但考虑到网络数据传输与串口数据传输速率不匹配,需要在硬件板卡上扩展SDRAM 和NORFLASH,另外系统还需扩展以太网控制器芯片。系统的总体设计框架如图1 所示。
2 硬件电路
系统可同时独立地与两路串行端口通信,当数据由以太网传送给串口服务器时完成数据的存储与数据格式的转换与处理,为数据传向指定的串行口做准备。当系统解包处理完成后,根据TCP /IP 协议的数据帧的帧头信息就能获得该数据包的发送目标串口,这样就完成了从以太网到串行口数据的传输; 当数据由串口设备传送到串口服务器时完成数据的分析、处理与格式转换,为数据传向以太网口做准备,当数据打包结束后将其从以太网口发送出去,这样就完成了串行口到以太网数据的传输。
2.1 S3C2440A 扩展以太网模块电路
DM9000AEP 是一款高集成度且成本较低的单片快速以太网媒体介质访问层MAC 控制器,上有通用处理器接口,10M/100M 物理层和16KbyteSRAM,低功耗、高性能IO 管脚兼容3. 3 /5. 0V 电压。DM9000AEP 合成了以太网MAC、物理层PHY 和MMU,内置AUTOMDI2X 功能10 /100MPHY,芯片可以根据处理器提供8 /16 /32bit 3 种连接方式实现以太网MAC 层和PHY 层) 的功能。
在如图2 所示的电路中, IOR#管脚接处理器的LnOE 读信号端, IOW#接处理器的LnWE 写信号端,CS#片选信号端接处理器的nGCS4 片选信号,SD0 ~ SD15 分别接处理器的数据总线,中断信号INT 接处理器的EINT18 管脚,RX +、RX -、TX + 和TX – 分别是两对差分收发信号线接带有隔离变压器的HR911105A 的RJ45 座连接,如图3 所示。访问网卡以总线形式实现,网卡的IO 基址为300H,片选信号接在了NGCS4 上,所以网卡IO 的基址为0x20000300H.由“DM9000 地址端口= 高位片选地址+ 300H + 0; DM9000 数据端口= 高位片选地址+ 300H + 4”可知,DM9000 端口的端口地址为0×20000300,DM9000 数据的端口地址为0×20000304.S3C2440 通过数据端口与地址端口并结合读/写信号线就可以对DM9000 进行读、写操作了。图2 中只用了一根地址线LADDR2,这是由DM9000AEP 的特性决定的,DM9000AEP 的地址信号和数据信号复用,使用CMD 引脚来区分它们( CMD 为低时数据总线上传输的是地址信号,CMD 为高电平时传输的是数据信号) .访问DM9000AEP 内部寄存器时,需要将CMD 置为低电平,发出地址信号; 然后将CMD置为高电平,读/写数据。另外,总数位宽16 位,两对差分接收与发送信号线,特别要注意的是:
在PCB 布线时这两对线必须走差分线,否则接收和发送数据将不稳定,模拟地与数字地也要处理好。
图2 网卡接口电路
2.2 S3C2440 串口模块电路
- linux客户端访问samba服务器的指令(03-25)
- Linux操作系统下中文字体的安装(04-10)
- 如何优化Linux服务器硬盘性能实用技巧(07-10)
- 基于开源软件的嵌入式网络打印服务器(11-05)
- 大型商用服务器的三大系统架构(03-02)
- 嵌入式Web服务器移植与测试(03-03)