基于ARM9 的嵌入式多串口服务器设计

发布者:清新风华最新更新时间:2021-04-20 来源: 2关键字: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 串口模块电路


S3C2440 本身自带三路独立的UART 接口,在设计嵌入式串口服务器系统时,应用了S3C2440 串口模块的两路UART 接口,另外一路UART 接口做开发时的打印控制台用。这两路串行口用三线通信,采用MAX3232 作为电平转换芯片,分别配置处理器的GPH2、CPH3、CPH4 和CPG5,4 个GPIO 口为TXD0、RXD0、TXD1 和RXD1 串口收发信号线。RS-232C 接口电路如图4 所示。

3 系统软件


系统软件的设计目标: 嵌入式串口服务器能够接收来自以太网的数据流,将以太网数据流转换为串行口数据流发送给指定串口; 实现串口数据流到以太网数据流的逆过程。软件平台采用拥有完备TCP /IP 协议栈和丰富源码资源的Linux作为串口服务器的操作系统,在ARM9 上移植并裁剪Linux 系统,同时移植完善根文件系统,为应用层软件开发提供平台。应用程序软件的主要任务如图5 所示,通过Linux 系统调用接口、调用串口函数读取数据,并将数据通过socket 接口发往以太网口; 接收socket 端数据、调用串口设备函数,将数据发往指定串口。

3.1 在Linux 系统中对串口的操作


UART 的操作主要有: 数据发送、数据接收、产生中断、设置波特率、loopback 模式、红外模式和硬/软流控模式7 部分。在Linux 中,所有设备文件一般都位于“/dev”下,其中串口对应的设备为“/dev /ttySx”,在Linux 下对设备的操作方法与对文件的操作方法一样。下面就是设计中串口应用的开发步骤。


串口设置主要设置struct termios 结构体成员,具体的串口操作函数此处略去,串口操作流程如图6 所示。

3.2 Linux 网络套接字编程步骤


在Linux 中的网络编程通过socket 接口进行。socket 是一种特殊的IO 接口,也是一种文件描述符,它是一种常用的进程之间的通信机制,通过它不仅能实现本地机器上进程间的通信,而且通过网络能够在不同机器上的进程间进行通信。


嵌入式串口服务器系统网络套接字编程步骤如图7 所示。

系统上电后,嵌入式服务器进入Linux 系统并自动运行装载在其内的server 程序。作为服务器, server 程序在开始运行时就为每一个打开的串口创建recvpcwritearm 和readarmsendpc 线程,并在网络连接正常以及客户端没有执行关闭串口的操作时,每一个已打开串口对应的两个线程将不会结束,这样在系统满负荷运行时,系统将同时开启4 个线程。嵌入式串口服务器主程序流程如图8 所示,主函数实现套接字的初始化工作,建立两路监听套接字,分别初始化线程recvpcwritearmsocket[3000 + com]套接字和readarmsendpc socket[4000 + com]套接字com 为串行端口号。一旦接收到客户端的连接请求,判断客户端请求的方式后,启用相应的进程函数进行数据处理。

4 试验


4.1 数据上行测试


数据上行测试指串口设备发送信息到嵌入式串口服务器,通过嵌入式串口服务器将数据从以太网口传输出去。考虑实际使用过程中上行数据量较大,为了模拟工业现场接收大量的数据,以“1234567890abcdefghijklmnopqrstuvwsyz”构成的数据包进行模拟。


测试方法为每秒钟连续不断地发送“1234567890abcdefghijklmnopqrstuvwsyz”,使之构成100KByte 的数据包,观察客户端程序能否正常收到这个数据包。试验测试结果如图9 所示,当从“终端串口设备”向上位机发送100KByte 数据时,在客户端一侧正常收到了这些数据,并且没有丢失现象。

4.2 数据下行测试


数据下行测试指通过工控机上的以太网口发送数据给串口服务器,串口服务器接收以太网数据帧并进行格式转换,同时判断发往指定的串口设备。在实际使用过程中,上位机发送到串行终端设备的数据量较小,这些数据一般都是由操作人员输入的数据,因此可以用单个数据流“1234567890abcDefghijklmnopqrstuvwxyz”进行测试。


测试方法是利用运行在PC 机上的客户端程序每秒钟发送连续数据流,观察另一台PC 机上串口调试助手是否正常接收到数据。试验测试结果如图10 所示,当客户端程序发送数据时,在终端串口设备上得到同样的数据流。

5 结束语


笔者利用完全开源的Linux 操作系统,将其移植、裁剪后设计嵌入式串口服务器系统,选用非常适用于通信产品中的ARM9 内核的S3C2440A 微处理器和DM9000AEP 芯片扩展了100MByte 自适应以太网口,完成了硬件平台设计; 然后用多线程网络套接字编写串口服务器程序,完成多串口服务器的软件设计。最后用试验证实了多串口服务器能够很好地完成串口数据与以太网口数据的双向传输,成功地将现有的串行通信设备接入以太网,利用网络实现数据的远程传输与远程监控功能,实时监控设备的运行状态。降低了设备的维修费用,缩短了开发周期。该产品基于开放标准设计,易于升级与维护,具有广阔的应用前景。


关键字:ARM9  嵌入式  多串口服务器 引用地址:基于ARM9 的嵌入式多串口服务器设计

上一篇:基于ARM9和Linux的液晶驱动终端设计
下一篇:ARM汇编语言中的符号

推荐阅读最新更新时间:2024-11-10 05:02

智能保密柜嵌入式控制系统的设计与实现
0 引言 许多关键部门的涉密介质都集中锁在金属保密柜中,由专人管理,采用密码方式、感应卡方式或指纹识别方式开锁,手工登记重要物品的取用和归还等使用情况。这种管理模式存在人为因素的安全隐患和记录信息不够详细等缺点,若能实现对物品的智能管理,自动记录物品日志,势必能提高保密柜管理的质量和效率。 本文基于工业级AT91SAM9260处理器设计了一个智能保密柜嵌入式控制系统。系统采用指纹比对进行物品权限的管理,拍照系统自动记录物品出入情况,系统具有报警功能。该系统嵌入了高性能、多任务的实时操作系统Linux,该操作系统具备源代码开放,内核体积小,占用系统资源少等优点,保证了系统的可靠性和实时性。 1 系统硬件设计 1.1 智能保密
[单片机]
智能保密柜<font color='red'>嵌入式</font>控制系统的设计与实现
LD3320嵌入式语音识别系统应用电路设计
  语音交互系统是比较人性化的人机操作界面,它需要语音识别系统的支持。LD3320是一款语音识别芯片。本文介绍了LD3320芯片的工作原理及应用,给出了LD3320与微处理器的硬件接口电路及软件程序。随着高档MCU 的不断出现,以 MCU  为核心的嵌入式语音交互系统会有非常好的应用前景。   特定人语音识别( ASR ,Auto Speech RecognitiON)技术是基于“关键词语列表”的识别技术,它是对大量的语音数据(相当于对数千人采集的数万小时的有效声音数据)经语言学家语音模型分析,建立数学模型,并经过反复训练提取基元语音的细节特征,以及提取各基元间的特征差异,得到在统计概率最优化意义上的各个基元语音特征,最后才由资深
[电源管理]
LD3320<font color='red'>嵌入式</font>语音识别系统应用电路设计
基于DSP嵌入式技术的智能刹车控制系统电路设计
  硬件电路设计上采用DSP 芯片和外围电路构成速度捕获电路,电机驱动控制器采用微控制芯片和外围电路构成了电流采样、过流保护、压力调节等电路,利用CPLD实现无刷直流电机的转子位置信号的逻辑换相。赛车刹车控制器是由防滑控制器和电机驱动控制器组成。两个控制器都是以DSP芯片为核心。防滑控制器主要是以滑移率为控制对象,输出给定的刹车压力,以 DSP芯片为CPU,外加赛车和机轮速度信号调理电路等。电机驱动控制器主要是调节刹车压力大小,并且控制电动机电流大小,也是以DSP芯片为CPU,再加外围电路电动机电流反馈调理电路、过流保护电路、刹车压力调理电路、四组三相全桥逆变电路等构成电机驱动控制器。    信号处理电路: 赛车防滑控制器主要是以
[嵌入式]
基于DSP<font color='red'>嵌入式</font>技术的智能刹车控制系统电路设计
嵌入式实时操作系统μC/OS-II下的串口通信编程方法
本文介绍了以LPC2365为核心处理器、嵌入式实时操作系统μC/OS-II下的多串口通信编程方法。对于固定长度的短字节帧数据,通过设置合适的字节触发深度,一次中断完成数据接收任务;对于变长的长字节帧数据,则通过多次中断和等待延时的方法判断数据稳定并完成帧数据的接收;对于大量数据的接收和发送采用建立FIFO数据队列的方法。 通过这些措施较好地完成了多串口较大数据量的通信任务。 国产某掠海恒高硬体拖靶在拖曳飞行时,需要将自身的各种参数通过无线链路实时上传至拖曳母机,同时实时接收拖曳母机的遥控指令完成相应的动作。拖靶自身的参数包括:开关高控状态、 蓄电池 电压 、无线电高度表值、飞行高度装定值、垂向加速度值、舵翼角、温度值、普通
[单片机]
<font color='red'>嵌入式</font>实时操作系统μC/OS-II下的<font color='red'>多</font><font color='red'>串口</font>通信编程方法
新型 tinyAVR® MCU助力嵌入式应用提高系统吞吐量和降低功耗
全球领先的整合单片机、混合信号、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)近日再次扩展旗下AVR® 单片机(MCU)产品线,推出三个新的 tinyAVR® MCU系列。ATtiny1617系列MCU新器件的问世使得带有独立于内核的外设(CIP)的AVR家族进一步壮大,有助于提高系统吞吐量和降低总功耗。作为新一代tinyAVR MCU,新器件进一步扩展存储容量,增加了16 KB闪存新选择,并与近期发布的ATtiny817系列器件的引脚和代码互相兼容。此外,该系列所有器件均由Atmel START提供支持,后者是一款在线工具,专用于嵌入式软件项目的直观化、图形化配置。
[单片机]
新型 tinyAVR® MCU助力<font color='red'>嵌入式</font>应用提高系统吞吐量和降低功耗
嵌入式系统的自适应前照灯系统设计
引言 汽车自适应前照灯系统是汽车安全系统的重要组成部分,它能根据转向角和车速的变化自动调整前照灯光束照射方向,增加了汽车行驶前方的有效照射区域,从而提高驾驶员在夜间或能见度低的环境下的视觉范围。 本设计采用了嵌入式技术来实现,嵌入式技术不仅广泛地应用于汽车行业,而且在工业自动化、监控系统、医疗仪器等领域也有广泛应用。 1 系统原理设计 本文介绍的汽车前照灯转向控制器主要是由FPGA、D/A转换器、CAN总线控制器和电机驱动芯片等器件组成的。它的设计分为CAN总线控制器模块和电机驱动模块两部分,由FPGA来控制并连接这两个模块。CAN总线控制器模块实现接收CAN报文包消息,FPGA通过处理CAN报文包消息来控制电机驱动模块使
[单片机]
<font color='red'>嵌入式</font>系统的自适应前照灯系统设计
嵌入式模拟智能使机器人自主性达到新高度
要实现自主,机器人不仅仅只需要人工智能(AI),还需要很多传感器、传感器融合以及边缘实时推理。由于深度卷积神经网络的优点已得到公认,激光雷达对更为先进的数据处理的需求正在把神经网络推向新的拓扑结构,以实现自主。 第一个机器人在20世纪50年代末、60年代初诞生,但严格意义上它不算机器人,只是一台“可编程的物品传送设备”,它被用于移动通用汽车公司生产线上压铸机周围的产品。1954年专利的第一句话强调了本发明的可编程性和通用性,并且表明可编程性要求传感器确保程序、期望轨迹或功能和实际运动之间的一致性。 时至今日,机器人并没有完全偏离最初的概念:如今的机器人是可以进行编程的。它们需要感知自身的环境,以确保所做的事情和被设定要做的
[物联网]
<font color='red'>嵌入式</font>模拟智能使机器人自主性达到新高度
iTOP-6818嵌入式开发板 win10 下 tf 卡分区
作者使用的 TF 卡是 16GB 的。 2.自行下载 DiskGenius 3.打开程序 删除原来的分区 保存更改 选是 选中根目录,右键,快速分区 在弹出的对话框中,作如下选择 在右边目录多了一个磁盘目录,选中右键,调整分区大小 在弹出的对话框中,对改动如下框中的内容分区前部的内容 64MB,确定 在 ubuntu 下,重新拔插后,使用 df -l 查看, /dev/sdc1 15078984 24 15078960 1% /media/topeet/556D-67FE 在编译过后的 uboot 源码目录下,使用如下命令,注意是 sdc,不是 sd
[单片机]
iTOP-6818<font color='red'>嵌入式</font>开发板 win10 下 tf 卡分区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved