LPC2388+UCOS/II+LWIP移植

原创 2015年11月19日 10:57:23

在主任务中先初始化网卡参数,tcpip_init(NULL, NULL)中会创建TCP/IP的任务,在次任务中会不断发送ARP广播,查询在整个网段内是否有目标IP地址的设备,当有对应的设备响应并把自己的MAC地址返回时,将会把目标设备的IP地址,MAC信息保存在缓存中。调试中需要了解ARP广播包的数据格式,可通过wireshark工具进行分析,以下为我转载的ARP格式分析和TCP/IP数据包解析的文章链接。

http://blog.csdn.net/daidi1989/article/details/49923831

http://blog.csdn.net/daidi1989/article/details/49925269

在ARP广播成功后,两个设备间已经成功建立起了通信通道,在tcpip_init函数中创建了一个接收网络数据的任务,当有数据收到的消息过来时,此任务中就会对数据进行解析,判断收到的数据是TCP、UDP还是ARP广播数据。在另外一个任务中将会等待是否有TCP包数据的消息,当收到相应的数据包时,我们就可获得对他进行自定协议的解析。以下是一段网卡初始化的程序,

void NetIf_Init(u8_t *ucip, u8_t *ucGateway, u8_t *ucMark)
{

#if NO_SYS
    lwip_init();                                                        /* 初始化LwIP协议栈             */
#else
    tcpip_init(NULL, NULL);
#endif

    IP4_ADDR(&lwip_IpAddr, 
             ucip[0], 
             ucip[1], 
             ucip[2], 
             ucip[3]);                                                  /* 添加IP地址                   */

    IP4_ADDR(&lwip_Gateway, 
             ucGateway[0], 
             ucGateway[1], 
             ucGateway[2], 
             ucGateway[3]);                                             /* 添加网关                     */

    IP4_ADDR(&lwip_Mark, 
             ucMark[0], 
             ucMark[1], 
             ucMark[2], 
             ucMark[3]);                                                /* 添加子网掩码                 */

#if LWIP_DHCP || LWIP_AUTOIP                                            /* 使能了DHCP或自动IP           */
    lwip_IpAddr.addr  = 0;
    lwip_Mark.addr    = 0;
    lwip_Gateway.addr = 0;
#endif

     /*
      * 创建、配置并添加默认的以太网控制器接口设置
      */
#if NO_SYS
    netif_add(&lwip_Netif
              &lwip_IpAddr
              &lwip_Mark
              &lwip_Gateway
              NULL, 
              ethernetif_init, 
              ip_input);
#else
    netif_add(&lwip_Netif,
              &lwip_IpAddr,
              &lwip_Mark,
              &lwip_Gateway,
              NULL, 
              ethernetif_init, 
              tcpip_input);
#endif

    netif_set_default(&lwip_Netif);

#if LWIP_DHCP                                                           /* 使能了DHCP, 则运行它        */
    dhcp_start(&lwip_Netif);
#endif

#if LWIP_AUTOIP                                                         /* 使能了AutoIP                 */
    autoip_start(&lwip_Netif);
#endif

    netif_set_up(&lwip_Netif);                                          /* 添加使能建立的网络接口       */

#if (NO_SYS == 0)
    lpc_mac_recv = OSSemCreate(0);
    OSTaskCreate(lwip_ethernet_input,
                (void *)0,
                &lwip_ethernet_input_stk[LWIP_ETHERNET_INPUT_STK_SIZE - 1],
                 LWIP_ETHERNET_INPUT_PRIO);
#endif
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

移植 LWIP 1.4.1 到 ucosii 的总结

1 下载LwIP 很简单,到LwIP的官方网站即可:http://savannah.nongnu.org/projects/lwip/。如果你不想看看其它内容(可能对你会很重要),就只是想得到源码,...
  • since_2000
  • since_2000
  • 2016年12月21日 20:56
  • 1417

LWIP UCOS 移植步骤记录

今年5, 6月份的时候, 将LWIP移植到了ucos平台上, 把之前总结的移植的大致步骤记录在这里. 供参考和回忆. 当时的移植工作是基于ppp new 的branch, 解压后在doc的目录下的s...
  • jackjones_008
  • jackjones_008
  • 2014年12月19日 11:14
  • 2591

eCos系统的lwIP驱动及lpc2xxx网卡驱动bug的解决办法

eCos系统的lwIP驱动存在一个bug,该bug导致用于数据发送同步的信号量计数值不断增长,当超出32位整数所能表示的最大值时将会从0xffffffff回滚到0,这时可能会导致lwIP协议栈核心线程...
  • zoomdy
  • zoomdy
  • 2014年02月22日 10:32
  • 2001

Oracle数据库移植全步骤

   Oracle数据库移植全步骤  为了方便更多的人,写了这个! 首先要备份。对于不同版本的Oracle之间导入的原则:低版本exp,高版本imp比如,我的数据库服务器是9i,我电脑上客户端是9i,...
  • defonds
  • defonds
  • 2009年06月11日 21:52
  • 12369

UCOS2_STM32F1移植详细过程(一)

Ⅰ、概述 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台: 系统平台:µC/OS-II  (最新V2.92版) 硬件平台:STM32F1   ...
  • ybhuangfugui
  • ybhuangfugui
  • 2016年06月26日 09:14
  • 11232

一次成功移植recovery过程

前几天看一家品牌机器的recovery挺好的,就像移到我的Konka机器上,费了一番力气终于成功,特记录一下。 1, 首先,直接使用线刷工具刷要移植的Recovery,死机。仔细研究了一下recov...
  • zangcf
  • zangcf
  • 2014年10月17日 09:25
  • 3581

如何移植openwrt系统

Cisco/Linksys在2003年发布了WRT54G这款无线路由器,同年有人发现它的IOS是基于Linux的,然而Linux是基于GPL许可证发布的,按照该许可证Cisco应该把WRT54G 的I...
  • u013485792
  • u013485792
  • 2016年01月14日 10:13
  • 2014

MySQL数据库移植总结

本文基于作者近期将Sybase数据库移植为MySQL数据库的工作,总结了在移植过程中需要修改的主要数据库语法及一些基本的操作MySQL的命令。...
  • zhouzxi
  • zhouzxi
  • 2016年04月28日 18:56
  • 3931

Adb移植(一)简单分析

2013-06-14 10:43:41 标签:adb移植 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://which....
  • mirkerson
  • mirkerson
  • 2014年06月19日 08:29
  • 2085

ucGUI移植

一、 uCGUI的了解: 在移植之前最好对uCGUI有一定的了解,这样会加快移植的速度,也可以减少不少弯路。     ①.最好通读一遍《uCGUI用户手册》,在网络上有很多。有中文版也有英文版的,...
  • kof98765
  • kof98765
  • 2014年07月09日 15:57
  • 2985
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LPC2388+UCOS/II+LWIP移植
举报原因:
原因补充:

(最多只允许输入30个字)