登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
单片机应用于方案
›
基于ARM7的串口服务器的实现
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版
基于ARM7的串口服务器的实现
[复制链接]
962
0
ad***
管理员
发表在
电源技术
2014-4-3 10:35:20
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
通过扩展多串口,可以在PC端远程监控、管理各种外设,或对外设进行系统升级。通常串口服务器采用
ARM
9
微处理器和带
TCP
/
IP
协议栈的付费操作系统,而文中提出的串口服务器是通过移植LWIP协议栈到代码开源的&
mu
;C/OS-Ⅱ中实现,这样不但降低成本,而且代码的编写更加透明、灵活。
1硬件系统的设计
本串口服务器采用Philips的ARM7
系列
芯片
LPC
2210,网络控制芯片采用
RTL8019
,串口采用
TL16C554
芯片扩展。为得到更广泛的应用,串口端还扩展
485
接口,通过
跳线
选择232/485方式。系统结构框图,如图1所示。
图1系统结构框图
2软件系统的实现
串口服务器软件系统包括两部分:TCP/IP协议栈的移植和实时多任务应用程序。μC/OS-Ⅱ在LPC系列ARM中的移植采用周立功公司的方案。
2.1TCP/IP协议栈的移植
LWIP是瑞士人AdmaDumkels等开发的源代码开放的精简TCP/IP协议栈。目的是在于保证TCP协议完整的情况下减少系统资源的需求,适合于资源较少的嵌入式系统应用。移植LWIP协议栈主要有两部分代码:(1)编写操作系统模拟层相关代码;(2)LWIP接口初始设置及网卡驱动。
2.1.1操作系统模拟层相关代码
操作系统模拟层存在的目的主要是在μC/OS-Ⅱ和LWIP之间提供一座桥梁,使LWIP能与μC/OS-Ⅱ能以相同的规范存在于一个系统中并能相互通信。LWIP有信号量和邮箱两种进程通讯方式,而μC/OS-Ⅱ也提供这两种进程通讯方式。
信号量用来同步任务,操作函数有sys_new_
sem
(建立并返回一个新信号量),sys_sem_signal(指定要发送的信号量),sys_sem_free(指定要释放的信号量),sys_arch_sem_wait(等待由参数sem指定的信号量并阻塞线程),在这些函数体中进行数据结构的初始化并加入μC/OS-Ⅱ中的相关函数便可完成。
邮箱用来投递消息,LWIP允许将邮箱实现为一个队列,多条消息投递到这个邮箱。
μC/OS-Ⅱ提供了丰富的消息队列函数,且μC/OS-Ⅱ和LWIP投递到邮箱中的消息均用指针实现。该系统建立了多个邮箱,邮箱通过单向链表接在一起。接收消息的最大数量由消息数组决定,结构图如图2所示。
图2邮箱数据结构图
邮箱建好后用指针P_Mbox指向节点1,申请新邮箱将节点1和节点2断开,P_Mbox指向节点1的pstNext,以此类推。回收时P_Mbox的移动方向与申请时相反,这样不会浪费
内存
且比较稳定。由以上结构和μC/OS-Ⅱ提供的函数写出邮箱相关函数。
除此之外,还需要编写任务创建函数sys_thread_new和sys_arch_timeouts函数,由于每个任务都有timeouts链表,sys_arch_timeouts函数返回的sys_timeouts结构保存了timeouts链表的首地址。
2.1.2LWIP初始化设置及底层驱动
LWIP的初始化设置包含在LWIP通信进程的入口函数中,其入口函数LwipEntry的基本结构如下:
Void Lwip Entry(void 3 pvArg)
{
//初始化LW IP,涉及LWIP使用的内存区,
PCB
(TCP/
UDP
)以及OS模拟层各个方面
__ilvInitLwip();
//设置LW IP,包括添加配置网络接口,建立接受任务等工作
__ilvSetLwip();
//在这里建立LWIP的应用,服务器支持TCP/UDP方式,两种方式都建立
}
底层驱动在服务器每次收发数据中都要调用,这部分代码需要有良好的健壮性和稳定性。整个实现顺序,如图3所示。
图3底层程序框架图
发送主线首先是以太网初始化函数(1)开始,调用链路层发送函数(2)并增加各层协议头,再调用RTL8019发送函数(9)发送数据。
接收主线除初始化以太网外,需调用链路层初始化函数(3),(3)中调用(4)初始化RTL8019。
收到的数据先经过函数(8),然后通过信号量传送到函数(6),由(6)调用(7)得到数据个数,最后由(5)根据以太网帧头携带的上层协议类型判断是交给IP协议还是ARP协议处理。
移植完毕,进行数据收发实验验证。使用TCP传输协议,由网口虚拟串口软件VSPM通过串口调试工具收发数据,图4是以10
ms
的发送速度在自发自收程序中收发数据的截图。
图4TCP协议
数据传输
界面
由于COM1和COM2被PC机占用,故由网口虚拟出来的串口是COM3,由图4可看出在面向连接的TCP协议下,高速收发数据不会丢包。
2.2实时多任务方案的设计
16个串口分别与网络端口组成16个双向通道。为使代码灵活、透明,程序不使用LWIP提供的SOCKETAPI。应用程序把每个双向通道分为发送,接收,串口3个任务,加上LWIP本身需占用一个任务,共需建立49个任务。μC/OS-Ⅱ最多能建立64个任务,其中8个操作系统本身占用,剩56个能满足要求。由VSPM软件把网口模拟成16个串口,串口服务器侦听的16个端口分别是1000~
1015
,如图5所示。
图5网口虚拟扩展16个串口界面
网络端和串口端的数据接收会触发相应的中断。每个双向通道的3个任务各司其职,网口端接收数据中断后在传输层协议判断信源的端口号,交给相应的接收任务,处理完后交给串口任务把数据从相应串口发送;串口接收数据后在中断程序中判断信源的通道号,把数据交给串口任务,处理完后由发送任务通过网口把数据发送出去。
服务器支持TCP/UDP两种传输协议,下面给出一个通道的TCP传输流程图,UDP部分代码只需在相应任务中调用LWIP给的UDP函数。TCP模式下串口服务器工作在Server模式,PC机工作在Client模式,流程图,如图6所示。
图6串口服务器单通道程序流程图
3.结论
文中本服务器是以性能不及ARM9且不能使用Linux的ARM7为主控芯片,但两种开源代码μC/OS-Ⅱ实时操作系统和LWIP协议栈的有效结合避免了高额的软件费用,而且能满足通信要求。实验证明,基于LWIP和μC/OS-Ⅱ的串口服务器不仅能实现双向通信,而且传输数据实时、准确,符合工业应用的要求。
远程监控
,
系统升级
,
服务器
,
操作系统
,
外设
相关帖子
Opto22SNAPPAC在Ballarat公共医疗中心的成功应用
四信DTU在除尘器远程监控系统的应用———四信通信F2系列DTU产品
供水公司大表远传监控系统———供水公司大表远传监控系统
水资源实时监控与管理系统———水资源实时监控与管理系统
完善的测量与分析成就经济实用的备用电池监测方案———完善的测
本人工作10年总结文档——《嵌入式操作系统内核调度》
运维管理中IT故障定位、预警与智能恢复模型建立和应用实践解密
一个发散型动态网络拓扑视频带给IT拓扑界的深度启示
运维管理中IT故障定位、预警与智能恢复模型建立和应用实践解密
请帮看一下这几种网络拓扑图那个更具有实际意义与用处
举报
回复
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
抗干扰LED数码管显示屏驱动芯片/3线串行接
VK1Q68D是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片。内部集成有3线
抗干扰能力强/点阵数显LED屏驱动/数码管驱
VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串
可支持14×4的点阵LED显示面板数码管LED驱
VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁 存
数显驱动器原厂-数显LED显示驱动芯片VK1620
VK1620B是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、 数据锁
抗干扰数显驱动数码管LED驱动芯片VK1618 SO
产品品牌:永嘉微电/VINKA 产品型号:VK1618 封装形式:SOP18/DIP18 概述 VK161
更多
精华推荐
数显屏驱动原厂-VK1668 SOP24抗干扰数显LED
抗干扰LED数码管显示屏驱动芯片/3线串行接
抗干扰能力强/点阵数显LED屏驱动/数码管驱
可支持14×4的点阵LED显示面板数码管LED驱
数显驱动器原厂-数显LED显示驱动芯片VK1620
抗干扰数显驱动数码管LED驱动芯片VK1618 SO
VK1616 SOP16/DIP16点阵LED数显驱动芯片/数
点阵数显驱动芯片/LED数码管显示屏驱动VK16
更多
社区学堂
抗干扰LED数码管显示屏驱动芯片/3线串
抗干扰能力强/点阵数显LED屏驱动/数码
抗干扰LED数码管显示屏驱动芯片/3线串行接
VK1Q68D是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片。内部集成有3线
抗干扰能力强/点阵数显LED屏驱动/数码管驱
VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串
可支持14×4的点阵LED显示面板数码管LED驱
VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁 存
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表