EDN China > 设计实例 > 通信 > 以太网 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于ARM7实时网络的设计和实现

2012年02月09日 ?? 收藏0

View实时库可以解决嵌入式开发中的如下几个常见问题:

(1)多任务(可以在单CPU上管理几个工作或任务);(2)实时控制(可以控制任务在既定时间内完成);(3)任务间通信(可以实现系统中的任务间通信);(4)Internet连接(通过以太网或串口(Modem));(5)嵌入式Web服务器(包括CGI脚本);(6)E-mail公告(通过SMTP)。

系统的网络功能正是构建在RTL实时库之上的。下面简述一些RTL实时库的网络函数。

(1)TCP发送函数BOOL tcp_send(U8 Socket,U8* buf,U16 dlen);其中Socket为通信TCP Socket,它包含了对方的IP和端口信息,buf为要发送数据的首地址,dlen为发送数据包的最大值。

(2)UDP的发送函数udp_send(U8 Socket,U8 *remip,U16 remport,U8 * buf,U16 dlen),其中Socket为通信UDP Socket,remip为对方的IP地址,remport为对方的通信端口,buf为要发送数据的首地址,dlen为发送数据包的最大值。

(3)接收数据时,RTL实时库不像BSD Socket一样有专门的接收函数,而是利用回调机制,即收到数据时,就触发相应的回调函数。另外,对于TCP,在回调函数里它有多个响应事件,如TCP_EVT_CONREQ (连接请求);TCP_EVT_CONNECT(已建立连接);TCP_EVT _CLOSE(连接已关闭);TCP_EVT_ABORT (连接异常终止);TCP_EVT_ACK(发送的数据已被对方响应);TCP_EVT _DATA (收到数据包),提取收到的数据并进行处理就是在该事件下完成的。然而,对于UDP,它没有各个响应事件。

2.3 主控机的功能及系统的性能分析

主控机的运行环境为RedH at9.0,采用标准的BSDSocket,它按顺序给各点发指令字,然后依次从它们那里接收数据包并进行存储和显示。

按照上述的硬件和软件构建后,调试和测试后可得系统的通信速率如表1和表2所示。

表1 PC对3个SAM7(基于TCP)
表1 PC对3个SAM7(基于TCP)

表2 PC对3个SAM7(基于UDP)
表2 PC对3个SAM7(基于UDP)

对照发现,UDP的传输速率可以达到TCP的约2.5倍。由于UDP协议并不提供数据传送的保证机制,如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,我们把UDP协议称为不可靠的传输协议。而TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。鉴于此,我们在系统在采用了以下的机制,即在PC先采集节点发送指令字时用TCP协议,而在传输采集数据包是就用UDP协议。

3 结束语

保证网络通信的实时性,对整个实时系统的正常可靠运转起着决定性作用。实时以太网具有实时、高速、价格便宜等优点。但也有其不足之处。如抗恶劣环境能力差;传输层在主机实现,占用了主机的资源;与主机上程序的协调运行也是要考虑的问题。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

采集点? UDP? AT91SAM7X256? RTL实时库?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈