为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > ucos+lwip学习总结

ucos+lwip学习总结

2018-05-31 7页 doc 138KB 9阅读

用户头像

is_212655

暂无简介

举报
ucos+lwip学习总结ucos+lwip学习总结 Ucos+Lwip学习总结 Lwip的文件组织 Lwip/src/api文件夹 Lwip/src/core文件夹 Dhcp.c : dhcp服务相关 Inet.c : 校验和的计算以及主机网络字节转换函数 Mem.c : 内存管理函数集 Memp.c : 以数据结构为参数提供内存申请服务 Netif.c : 网络接口服务集合 Pbuf.c : pbuf结构服务集合 Stats.c : 定义一个struct stats_lwip_stats的全局变量以及初始化 Sys.c : 系...
ucos+lwip学习总结
ucos+lwip学习总结 Ucos+Lwip学习总结 Lwip的文件组织 Lwip/src/api文件夹 Lwip/src/core文件夹 Dhcp.c : dhcp服务相关 Inet.c : 校验和的计算以及主机网络字节转换函数 Mem.c : 内存管理函数集 Memp.c : 以数据结构为参数提供内存申请服务 Netif.c : 网络接口服务集合 Pbuf.c : pbuf结构服务集合 Stats.c : 定义一个struct stats_lwip_stats的全局变量以及初始化 Sys.c : 系统服务集合,建立在用户提供的原始系统服务之上 Udp.c : 一系列Udp层的函数,详细见tcp.c Tcp.c : 还包括tcp_in.c、tcp_input.c、tcp_out.c、tcp_output.c。 一系列Tcp层的函数, 存在于Tcpip主进程中。主动函数包括tcp_bind,tcp_send等,在api_msg.c中的 do_xxx()调用。被动函数tcp_input()被ip_input调用;还有一个安装tcp_pcb(也 在该文件中定义,链表结构)回调函数的函数tcp_recv。 Lwip/src/core/ipv4文件夹 Lwip/src/include/lwip文件夹 Lwip/src/netif和Lwip/src/include/netif文件夹 Lwip的移植 Lwip/src/core/arch和Lwip/src/include/arch文件夹下 包括Ucos下的信号量、邮箱、进程、定时器相关等。 Lwip/src/netif和Lwip/src/include/netif文件夹下 Ethif_cs8900a.c : 按ethernetif.c移植的cs8900a接口驱动 Ethif_cs8900a.h : cs8900a的寄存器定义。 Lwip的代码关系 消息来源消息来源 两类消息API消息(apimsg来自应用程序),input消息(input来自链路层,网卡芯片) 结构体tcpip_msg Enum tcpip_msg_type { TCPIP_MSG_API, TCP_MSG_INPUT }; Struct tcpip_msg { Enum tcpip_msg_type type; Sys_sem_t *sem; Union { Struct api_msg *apimsg; Struct { Struct pbuf *p; Struct netif *netif; }inp; }msg; } ………….api_msg 结构、netif结构、pbuf结构 发送数据:(从TCP开始,再上层的略去) Tcp_write,tcp_enqueue,tcp_output(),ip_route()和ip_output_ip(), Netif?output(){point to tcpip_output()},tcpip_thread() 消息处理机制,相当于缓冲区 ,ip_output(),low_level_output,cs8900a的寄存器操作(将pbuf内数据放到寄存器中) 使用消息机制,将接收(或发送)帧数据和处理两个过程分开。 读数据流程:(到TCP为止,再上层的略去) 一帧数据来中断,ethernetif_input(),low_level_input,cs8900a的寄存器操作 (将寄存器中的数据放到pbuf中) ,Netif?input{point to tcpip_input()},tcpip_thread() 消息处理机制,相当于缓冲区 ,ip_input(),tcp_input(),tcp_process(),tcp_receive() Ip路由部分在此处 理 Ethernet v2 帧格式 6Byte2Byte6Byte 源MAC地址目的MAC地址协议类型数据 0800 IP包 0808 ARP包 数据中IP包头格式 4Byte4Byte8Byte16Byte 包头长度IP版本包总长度(32bit的整服务类(包含包头,字节单位)数倍) Frame offsetFlagIdentify(13位)(3位) Header ChecksumTTLProtocol(CRC校验) 源IP地址 目的IP地址 OptionsPadding 说明:包头长度在0100~1111之间,即4~15即包头长度在20~60Byte间,一般为20 Identifer、flag、frame offset用于拆分包的信息,包重组时要用到。 TTL生存周期,每经过一个路由器,路由器都将该值减1. Protocol:1—ICMP 2—IGMP 6—TCP 17—UDP 88—IGRP 89—OSPF Header Checksum:头部校验
/
本文档为【ucos+lwip学习总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索