0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

电子设计 作者:电子设计 2018-11-07 08:30 次阅读

随着数字信息技术和互联网的广泛应用, 以操作系统和Internet为标志的嵌入式系统是后PC时代发展的趋势。工业上广泛应用的232 /485通信接口与Internet相连接, 使得各种传感器控制器及其他设备的数据可以大量的在Internet上传输。

串口服务器由此而生, 通过扩展多串口, 可以在PC端远程监控、管理各种外设, 或对外设进行系统升级。通常串口服务器采用ARM9 微处理器和带TCP / IP协议栈的付费操作系统, 而文中提出的串口服务器是通过移植LW IP协议栈到代码开源的μC /OS - Ⅱ中实现, 这样不但降低成本, 而且代码的编写更加透明、灵活。

1硬件系统的设计

本串口服务器采用Philip s的ARM7 系列芯片LPC2210,网络控制芯片采用RTL8019, 串口采用TL16C554芯片扩展。为得到更广泛的应用, 串口端还扩展485 接口, 通过跳线选择232 /485 方式。系统结构框图, 如图1所示。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图1系统结构框图

2软件系统的实现

串口服务器软件系统包括两部分: TCP / IP协议栈的移植和实时多任务应用程序。μC /OS - Ⅱ在LPC系列ARM中的移植采用周立功公司的方案。

2.1TCP / IP协议栈的移植

LW IP是瑞士人Adma Dumkels等开发的源代码开放的精简TCP / IP 协议栈。目的是在于保证TCP协议完整的情况下减少系统资源的需求, 适合于资源较少的嵌入式系统应用。移植LW IP协议栈主要有两部分代码: (1)编写操作系统模拟层相关代码; (2) LW IP接口初始设置及网卡驱动。

2.1.1操作系统模拟层相关代码

操作系统模拟层存在的目的主要是在μC /OS - Ⅱ和LW IP之间提供一座桥梁, 使LW IP能与μC /OS - Ⅱ能以相同的规范存在于一个系统中并能相互通信。LW IP有信号量和邮箱两种进程通讯方式, 而μC /OS - Ⅱ也提供这两种进程通讯方式。

信号量用来同步任务, 操作函数有sys_new_sem (建立并返回一个新信号量) , sys_ sem _ signal(指定要发送的信号量) , sys_sem_free (指定要释放的信号量) , sys_arch_sem_wait (等待由参数sem指定的信号量并阻塞线程) , 在这些函数体中进行数据结构的初始化并加入μC /OS - Ⅱ中的相关函数便可完成。

邮箱用来投递消息, LW IP允许将邮箱实现为一个队列,多条消息投递到这个邮箱。

μC /OS - Ⅱ提供了丰富的消息队列函数, 且μC /OS - Ⅱ和LW IP投递到邮箱中的消息均用指针实现。该系统建立了多个邮箱, 邮箱通过单向链表接在一起。接收消息的最大数量由消息数组决定, 结构图如图2所示。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图2邮箱数据结构图

邮箱建好后用指针P_Mbox指向节点1, 申请新邮箱将节点1和节点2断开, P_Mbox指向节点1的p stNext, 以此类推。回收时P_Mbox的移动方向与申请时相反, 这样不会浪费内存且比较稳定。由以上结构和μC /OS - Ⅱ提供的函数写出邮箱相关函数。

除此之外, 还需要编写任务创建函数sys_thread_new和sys_arch_timeouts函数, 由于每个任务都有timeouts链表, sys_arch _timeouts函数返回的sys_timeouts结构保存了timeouts链表的首地址。

2.1.2LW IP初始化设置及底层驱动

LW IP的初始化设置包含在LW IP通信进程的入口函数中, 其入口函数LwipEntry的基本结构如下:

Void LwipEntry ( void 3 pvArg)

{

/ /初始化LW IP, 涉及LW IP使用的内存区,PCB ( TCP /UDP)以及OS模拟层各个方面

__ilvInitLwip ( ) ;

/ /设置LW IP, 包括添加配置网络接口, 建立接受任务等工作

__ilvSetLwip ( ) ;

/ /在这里建立LW IP 的应用, 服务器支持TCP /UDP方式, 两种方式都建立

}

底层驱动在服务器每次收发数据中都要调用,这部分代码需要有良好的健壮性和稳定性。整个实现顺序, 如图3所示。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图3底层程序框架图

发送主线首先是以太网初始化函数( 1)开始,调用链路层发送函数(2)并增加各层协议头, 再调用RTL8019发送函数(9)发送数据。

接收主线除初始化以太网外, 需调用链路层初始化函数(3) , ( 3)中调用( 4)初始化RTL8019。

收到的数据先经过函数(8) , 然后通过信号量传送到函数(6) , 由( 6)调用( 7)得到数据个数, 最后由(5)根据以太网帧头携带的上层协议类型判断是交给IP协议还是ARP协议处理。

移植完毕, 进行数据收发实验验证。使用TCP传输协议, 由网口虚拟串口软件VSPM通过串口调试工具收发数据, 图4是以10 ms的发送速度在自发自收程序中收发数据的截图。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图4TCP协议数据传输界面

由于COM1和COM2被PC机占用, 故由网口虚拟出来的串口是COM3, 由图4可看出在面向连接的TCP协议下, 高速收发数据不会丢包。

2.2实时多任务方案的设计

16个串口分别与网络端口组成16 个双向通道。为使代码灵活、透明, 程序不使用LW IP提供的SOCKET AP I。应用程序把每个双向通道分为发送, 接收, 串口3个任务, 加上LW IP本身需占用一个任务, 共需建立49个任务。μC /OS - Ⅱ最多能建立64 个任务, 其中8 个操作系统本身占用,剩56个能满足要求。由VSPM软件把网口模拟成16个串口, 串口服务器侦听的16 个端口分别是1 000~1 015, 如图5所示。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图5网口虚拟扩展16个串口界面

网络端和串口端的数据接收会触发相应的中断。每个双向通道的3个任务各司其职, 网口端接收数据中断后在传输层协议判断信源的端口号,交给相应的接收任务, 处理完后交给串口任务把数据从相应串口发送; 串口接收数据后在中断程序中判断信源的通道号, 把数据交给串口任务,处理完后由发送任务通过网口把数据发送出去。

服务器支持TCP /UDP两种传输协议, 下面给出一个通道的TCP传输流程图, UDP部分代码只需在相应任务中调用LW IP给的UDP函数。TCP模式下串口服务器工作在Server模式, PC机工作在Client模式, 流程图, 如图6所示。

采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案

图6串口服务器单通道程序流程图

3.结论

文中以简单的硬件框架和灵活的软件结构设计了一种低成本串口服务器, 虽然本服务器是以性能不及ARM9且不能使用L inux的ARM7为主控芯片, 但两种开源代码μC /OS - Ⅱ实时操作系统和LW IP协议栈的有效结合避免了高额的软件费用, 而且能满足通信要求。实验证明, 基于LW IP和μC /OS - Ⅱ的串口服务器不仅能实现双向通信,而且传输数据实时、准确, 符合工业应用的要求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    452

    文章

    50190

    浏览量

    420693
  • 嵌入式
    +关注

    关注

    5058

    文章

    18971

    浏览量

    301882
  • 服务器
    +关注

    关注

    12

    文章

    8954

    浏览量

    85066
收藏 人收藏

    评论

    相关推荐

    LPC2210+RTL8019应用电路

    LPC2210(PACK)应用电路
    发表于 09-14 11:06

    RTL8019数据接收问题

    本人是8019的新手,因时间紧,所以求助大家一个简单的问题!怎么读取接收到的数据问题!请问RTL8019把接收到的数据放在哪里去了?我从上位机界面发数据给DSP2812开发板的RTL8019,我查看
    发表于 05-06 20:08

    嵌入式TCPIP协议串口服务器

    嵌入式TCPIP协议串口服务器[attach]***[/attach]
    发表于 08-13 13:17

    ARM处理LPC2210在脑血氧监测仪中的应用

    接口电路如图4所示。本系统设计了以RTL8019AS芯片为核心的以太网接口电路,其电路原理图如图5所示。由于LPC2210是开放总线,所以电路设计为16位总线方式对
    发表于 12-04 10:38

    请教大神lpc2104和RTL8019AS的接口问题

    请教:lpc2104 和 RTL8019AS 的接口问题. 以前在 C8051F 上做,高低地址是固定的,容易接口,RTL8019 映射地址也容易算出.现在 lpc2104 是 32
    发表于 04-19 16:51

    μC/OS-II 在LPC2210上的移植实现

    嵌入式实时操作系统μC/OS-II 的组成和LPC2210 微处理进行了简单介绍。在此基础上,详细介绍了将μC/OS-II 移植到LPC2210 微处理
    发表于 07-08 08:57 41次下载

    低成本嵌入式web服务器的研究

    本文介绍了以高速、高性能、低价格的8 位单片机SX52 作为微控制,通过以太网控制芯片RTL8019AS 与以太网相连的低成本设计方案。关键词:
    发表于 08-14 08:27 11次下载

    基于LPC2210的远程Modem管理系统

    摘要:随着电子技术的发展 ,ARM系列微处理得到越来越广泛的应用。介绍了一种基于 LPC2210嵌入式 Modem,详细地阐述了 Modem的硬件及嵌入式操作系统移
    发表于 09-09 16:14 24次下载

    uCOSII在LPC2210上的移植详解

    uCOSII在LPC2210上的移植详解:嵌入式实时操作系统在目标处理平台上的移植是嵌入式软件开发的基础和前提。论文实现了源码公开的嵌入式
    发表于 12-31 15:11 144次下载

    LPC2210使用指南

    LPC2210是基于一个支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-SCPU的微控制。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。由于LP
    发表于 07-30 23:27 53次下载

    RTL8019AS实现嵌入式以太网设计.rar

    介绍了IOM 以太网控制芯片RTL8019AS的结构和主要性能,以及在SUMSUNG公司的嵌入式微处理器S3CA4BOX控制下,使用RTL8019AS实现
    发表于 08-29 16:30 164次下载
    <b class='flag-5'>RTL8019</b>AS实现<b class='flag-5'>嵌入式</b>以太网设计.rar

    嵌入式串口服务器设计方案深度探究

    项目背景及可行性分析 项目名称、项目的主要内容及目前的进展情况 项目名称:基于MicroBlaze的嵌入式串口服务器的实现 项目的主要内容:本作品将要实现一个串口服务器,它有2个串口
    发表于 10-16 15:55 2次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>串口服务器</b>的<b class='flag-5'>设计方案</b>深度探究

    基于ARM的嵌入式Web服务器设计方案

    基于ARM的嵌入式Web服务器设计方案
    发表于 06-15 11:13 20次下载

    DNC系统嵌入式串口服务器的研究与开发

    DNC系统嵌入式串口服务器的研究与开发(嵌入式开发技术面试)-随着计算机技术、网络技术在工业生产中的日益普遍应用,数控加工的网络化、集成化已成为必然的趋势。分布数控(Distribu
    发表于 08-04 13:25 6次下载
    DNC系统<b class='flag-5'>嵌入式</b><b class='flag-5'>串口服务器</b>的研究与开发

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

    电子发烧友网站提供《基于ARM9的嵌入式串口服务器电路设计.pdf》资料免费下载
    发表于 10-11 10:56 4次下载
    基于ARM9的<b class='flag-5'>嵌入式</b>多<b class='flag-5'>串口服务器</b>电路设计