新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM7的串口服务器的实现

基于ARM7的串口服务器的实现

作者: 时间:2011-08-29 来源:网络 收藏
发送主线首先是以太网初始化函数( 1)开始,调用链路层发送函数(2)并增加各层协议头, 再调用RTL8019发送函数(9)发送数据。

本文引用地址://m.amcfsurvey.com/article/150276.htm

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

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

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

图4 TCP协议数据传输界面

  图4 TCP协议数据传输界面

  由于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所示。

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

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

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

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

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

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

  3.结论

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


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭