lwip初始化网卡和使用

1、lwip网卡使用

1)lwip把网卡抽象成netif结构体了,所以需要先定义一个网卡结构体变量struct netif gnetif。

2)我们要把网卡 gnetif挂载到netif_list链表上才能使用,因为LwIP是通过链表来管理所有的网卡,所有第二步是通过netif_add()函数将我们的网卡挂载到netif_list链表上

 netif_add(
	struct netif *netif,					//我们定义的网卡
    const ip4_addr_t *ipaddr,				//ip
    const ip4_addr_t *netmask, 				//mask
	const ip4_addr_t *gw,					//getway
    void *state, 							//自定义使用的数据,一般不用,传入NULL
	netif_init_fn init, 					//网卡初始化函数,一般网口提供商会提供网卡初始化函数
	netif_input_fn input					//网卡输入: 该函数向 tcp/IP 层输入数据包 一般填这个定义好的函数:err_t  tcpip_input(struct pbuf *p, struct netif *inp);
	)

3)有多个网卡,就使用多个netif_add

总之一句话,在开始使用LwIP协议栈的时候,我们就需要将网卡底层移植完成,才能开始使用,而移植的第一步,就是将网络进行初始化,并且设置该网卡为默认网卡,让LwIP能通过网卡进行收发数据。

void TCPIP_Init(void)
28 {
29 
30     tcpip_init(NULL, NULL);
31 
32     /* IP addresses initialization */
33     /* USER CODE BEGIN 0 */
34 #ifdef USE_DHCP
35     ip_addr_set_zero_ip4(&ipaddr);
36     ip_addr_set_zero_ip4(&netmask);
37     ip_addr_set_zero_ip4(&gw);
38 #else
39     IP4_ADDR(&ipaddr,IP_ADDR0,IP_ADDR1,IP_ADDR2,IP_ADDR3);
40     IP4_ADDR(&netmask,NETMASK_ADDR0,NETMASK_ADDR1,NETMASK_ADDR2,NETMASK_ADDR3);
41     IP4_ADDR(&gw,GW_ADDR0,GW_ADDR1,GW_ADDR2,GW_ADDR3);
42 #endif /* USE_DHCP */
43     /* USER CODE END 0 */
44     /* Initilialize the LwIP stack without RTOS */
45     /* add the network interface (IPv4/IPv6) without RTOS */
46     netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, 
47 							&tcpip_input);
48     /* Registers the default network interface */
49     netif_set_default(&gnetif);
50 
51     if (netif_is_link_up(&gnetif))
52     {
53    /* When the netif is fully configured this function must be called */
54         netif_set_up(&gnetif);
55     }
56     else
57     {
58         /* When the netif link is down this function must be called */
59         netif_set_down(&gnetif);
60     }
61 }

所以看别人的LWIP代码时,第一步,你就看别人netif_add这个函数,就知道他在哪里操作网卡了,网卡初始化函数是咋样的,以及

        ip地址

        网关

        子网掩码

怎么配置了! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值