lwip之netif和pbuf分析.docx

上传人:小飞机 文档编号:3161079 上传时间:2023-03-11 格式:DOCX 页数:3 大小:37.49KB
返回 下载 相关 举报
lwip之netif和pbuf分析.docx_第1页
第1页 / 共3页
lwip之netif和pbuf分析.docx_第2页
第2页 / 共3页
lwip之netif和pbuf分析.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《lwip之netif和pbuf分析.docx》由会员分享,可在线阅读,更多相关《lwip之netif和pbuf分析.docx(3页珍藏版)》请在三一办公上搜索。

1、lwip之netif和pbuf分析Pbuf (1) next 这是一个指向pbuf类型的指针,它用于指向下一个pbuf结构体。由于每个MAC包的数据段最大只是1500字节,而来自上层的数据包往往很大,LwIP把大数据包分装到多个pbuf结构体,并把这些pbuf组成链表,通过next指针来索引。 (2) payload 这是一个指向实际数据的指针。当MAC控制器接收到MAC数据包时,整个MAC包(包括MAC地址)直接被存储到payload指向的存储区。 (3) tot_len和len len成员表示本pbuf结构体的长度,tot_len表示本pbuf及下一个pbuf (next指向的pbuf)长

2、度的和。len等于它的tot_len,就可以判断链表的结束。 (4) type和flags type表示pbuf的存储类型,共有四种,分别为PBUF_RAM、PBUF_ROM、PBUF_REF和PBUF_POOL,针对不同的应用而使用不同的存储方式。flags在存储分配时被赋值为0,作用不明,可能是作者为了兼容而保留的。 (5) ref ref用于记录pbuf的访问次数,在LwIP中存在一根据访问次数来决定内存释放的机制 netif初始化指向了enc28j60,后期调用均调用enc28j60这个网卡 (1) next 这个next指针是netif结构体类型,它与pbuf的next指针作用类似,

3、也是用作链表。netif结构体是用来存储网卡属性的,由netif结构体构成的链表即表示同一个设备上不同网卡的属性,LwIP就通过本next指针访问这个链表。 (2) ip_addr、netmask和gw 这三个结构体成员分别用来存储本网卡的IP地址、子网掩码和网关。 (3) err_t (* input)(structpbuf *p, structnetif *inp) 初始化为ethernet_input 这个函数是用来接收底层硬件输入的数据包的。 (4) err_t (* output)(structnetif *netif, structpbuf *p, structip_addr *i

4、paddr) 它指向一个用于IP层输出的函数,初始化为etharp_output。调用下层函数。 (5) err_t (* linkoutput)(structnetif *netif, structpbuf *p) 这个函数指针是指向最底层的网卡发送数据包函数,初始化为low_level_output。output函数把它的输入参数IP地址转化成MAC地址后,添加到pbuf的payload成员,组成完整MAC包,再由本函数linkoutput输出到网络中。 (6) state 初始化为null (7) mtu在low_level_init函数,软件实现 MAC数据段的最大长度为1500字节,

5、所以本成员我们一般会直接赋值为1500。 (8) hwaddr_len和hwaddrNETIF_MAX_HWADDR_LEN hwaddr_len存储的是MAC地长度,hwaddr数组则存储了本网卡的MAC完整地址。调用enc28j60Init(netif-hwaddr);写进网卡 (9) flags在low_level_init函数 本成员保存了网卡允许使用的功能,如使用广播地址、ARP功能等。 (10) char name2和u8 num在ethernetif_init函数初始化 ame用于保存网络接口的名字当网络接口名字出现相同的时候,使用num的数值进行区分,初始化num为0,表示只有一个网卡。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号