最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

ucos+lwip学习总结

来源:动视网 责编:小OO 时间:2025-09-28 00:46:52
文档

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:定义一个structstats_lwip_stats的全局变量以及初始化Sys.c:系统服务集合,建立在用户提供的原始系统服务之上Udp.c:一系列Udp层的
推荐度:
导读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:定义一个structstats_lwip_stats的全局变量以及初始化Sys.c:系统服务集合,建立在用户提供的原始系统服务之上Udp.c:一系列Udp层的
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_cs00a.c  : 按ethernetif.c移植的cs00a接口驱动

Ethif_cs00a.h  : cs00a的寄存器定义。

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_writetcp_enqueuetcp_output()ip_route()和ip_output_ip()

Netif→output(){point to tcpip_output()}tcpip_thread()  消息处理机制,相当于缓冲区

ip_output()low_level_outputcs00a的寄存器操作(将pbuf内数据放到寄存器中)

使用消息机制,将接收(或发送)帧数据和协议处理两个过程分开。

读数据流程:(到TCP为止,再上层的略去)

一帧数据来中断ethernetif_input()low_level_inputcs00a的寄存器操作

(将寄存器中的数据放到pbuf中)

Netif→input{point to tcpip_input()}tcpip_thread()  消息处理机制,相当于缓冲区

ip_input()tcp_input()tcp_process()tcp_receive()

说明:包头长度在0100~1111之间,即4~15即包头长度在20~60Byte间,一般为20

      Identifer、flag、frame offset用于拆分包的信息,包重组时要用到。

      TTL生存周期,每经过一个路由器,路由器都将该值减1.

      Protocol:1—ICMP   2—IGMP   6—TCP   17—UDP  88—IGRP  —OSPF

      Header Checksum:头部校验

文档

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:定义一个structstats_lwip_stats的全局变量以及初始化Sys.c:系统服务集合,建立在用户提供的原始系统服务之上Udp.c:一系列Udp层的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top