基于uCOS - II的以太网移植实例(3)

2020-06-21 14:24

第三章 以太网任务创建以及初始化流程

在完成以太网移植且并对以太网硬件和协议栈进行了初始化之后,还不能进行以太网通信。在μC/OS系统中进行以太网的通信还必须先创建一个以太网任务并且把任务添加到μC/OS系统中的任务列表中来。以太网协议栈比较复杂,一下比较难理解其工作过程,这里也只是对以太网的通讯过程进行简单的描述,以求快速入门。

3.1 以太网任务创建

以太网任务的创建分三步完成。 第一步:编写一个以太网任务函数。函数功能能够创建一个新的TCP连接;绑定IP地址和端口号;监听TCP的连接;等待TCP连接。如果有客服端请求连接则建立TCP连接,否则继续等待TCP连接。编写的以太网任务函数如图3.1所示。

图3.1 以太网任务函数

第二步:定义以太网任务堆栈空间大小和任务优先级,定义结果如图3.2、图3.3所示。

图3.2 以太网任务空间大小定义 图3.3 以太网任务优先级定义

第三步:将创建的以太网任务添加到μC/OS操作系统中的的任务列表中去,其添加结果如图3.4所示。

图3.4 以太网任务的添加

任务添加完成之后,只需编译一下,检查一下以太网任务创建是否正确。编译结果如图3.5所示,零错误、零警告提示,表明以太网任务创建正确。

3.2 以太网初始化流程

图3.5 MDK编译结果

以太网移植工作全部完成之后,下一步需要做的就是理解以太网的初始化过程和数据收发过程,掌握了这一节将能帮助读者更好的使用以太网通信。

LWIP初始化需要在μC/OS初始化之后,并且在其它分任务创建之前进行。因为,LWIP初始化过程不仅仅是对以太网协议栈进行初始化,它还需要进行邮箱的创建和新线程(也可以说是任务)的创建。其LWIP初始化过程如图3.6所示。

(3) lwip_init() (2) Tcpip_Init() (4) Sys_mbox_new() (5) Sys_thread_new () (1) LwIP_Init() (7) netif->input 指向 (8) tcpip_input () (10) 指向 (6) Ethernetif_Init() (9) netif->output (11) netif->linkoutput (13) Low_level _Init() 图3.6 以太网初始化流程

etharp_output () (12) 指向 Low_level_output() (14) EMACInit()

3.3 以太网数据收发流程

以太网接收数据是通过中断方式接收的,如果有数据到来就会进入以太网中断函数。中断函数中的主要工作是读取数据包、分析数据包是否有效,如果数据有效则在Tcpip_input()函数中通过邮箱的方式把数据发送出去,消息邮箱发送出去以后,在刚刚LWIP初始化创建的线程中就可以得到此消息。数据在线程中进行处理后,然后通过ip_input()函数进入传输层,最后,把数据传到应用层。其收发流程如图3.7、图3.8所示。

应用层 netconn_recv () Recv_mbox方式进行数据传递 应用层 netconn_write () TCPIP_APIMSG () tcpip_apimsg() Mbox方式传递数据,tcpip_thread()消recv_tcp () tcp_receive () TCP_EVENT_RECtcp_process () tcp_input () update_arp_entry () ip_input () etharp_ip_input () ethernet_input() Mbox方式传递数据,在tcpip_thread()中消息识别分类 Tcpip_input() GetInputPacketLen() 通过网络接口函数netif->intput 直接指向 EMACReadPacket () Ethernetif_input() Low_level_input() ETH_IRQHandlert() 图3.7 以太网数据接收流程

息识别分类 do_write () tcp_write () tcp_enqueuet() tcp_output () ip_output () ip_output_if () 通过网络接口函数netif->output 直接指向 etharp_output () etharp_send_ip () 通过网络接口函数netif->linkoutput 直接指向 low_level_output () ETH_TxPkt_ChainMode () 图3.8 以太网数据发送流程

第四章 测试以太网连接以及任务间通信

借助Windows命令、串口调试助手和网络调试助手两个软件工具验证以太网是否能够连接和数据是否能够正确传输。

4.1 Ping命令测试

通过发送Windows中的Ping命令,可以看到如图4.1所示,上位机向终端发送了四次32字节的数据,结果显示上位机接收

图4.1 Ping命令测试结果

到了四次32字节的数据,丢失数据0。结果表明以太网连接成功。

4.2 网络调试助手测试

借助网络调试助手,对以太网数据的传输进行验证。首先,设置网络调试助手的协议类型为客服端,服务器IP地址为172.16.202.164,设置

完成后,点击连接可以看到如图4.2所示的串口中打印出一串字符 “以太网连接成功”。然后,发送电表读取命令,电表数据读取结果如图4.3所示。

图4.2 通过网络调试助手进行TCP连接

图4.3 电表数据读取结果


基于uCOS - II的以太网移植实例(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第二章继承爱国传统弘扬民族精神

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: