请教大家,linux下C开发协议栈,一般是怎么样的调试的?我用的GDB,b 函数断点,p 变量。这样感觉挺慢的哦

请教大家,linux下C开发协议栈,一般是怎么样的调试的?我用的GDB,b 函数断点,p 变量。这样感觉挺慢的哦,第1张

模块调试,前提是你要特别熟悉代码,并且能估计或者预测他的结果,然后打印信息,查看效果呗,要是开发板子上的协议栈时,要有串口才能打印程序运行过程中的输出。模块注释。找出问题所在的地方。

首先,嵌入Linux内核是可定制的内核:

1 Linux内核的配置系统

2 Linux内核的模块机制

3 Linux内核的源代码开放

4 经裁减的 Linux内核最小可达到 150KB以下,尤其适合嵌入式领域中资源受限的实际情况。

其次,它的性能优越:Linux 系统内核精简、高效和稳定,能够充分发挥硬件的功能,因此它比其他 *** 作系统的运行效率更高。

再者,它有良好的网络支持:

1 支持 TCP/IP 协议栈

2 提供对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Tokenring(令牌环)和光纤甚至卫星的支持

3 对现在依赖于网络的嵌入式设备来说是很好的选择。

至于网络协议的话,有很多种,就目前主流的3种网络协议是:NetBEUI、IPX/SPX及其兼容协议、TCP/IP,而其他的像Lwip、ZigBee、Sip等很多。

1 NetBEUI的前身是NetBIOS,这一协议是IBM1983年开发完成的,早期的微软OS产品中都选择该协议作为通信协议。它是一套用于实现仅仅在小型局域网上PC见相互通信的标准。该网络最大用户数不能超过30个,1985年,微软对其改进,增加了SMB(Server Message Blocks,服务器消息块)的组成部分,以降低网络的通信阻塞,形成了现在的NetBEUI通信协议。

特点:体积小、效率高、速度快、占用内存少。

2 IPX/SPX及其兼容协议:它的全称是“Internwork Packet Exchange/Sequence Packet Exchange”即网际包交换/顺序包交换。

特点:体积较大、能够连接多种网络、具有强大的路由功能,适合大型网络的使用。windows网络中无法直接使用该协议。

3 TCP/IP是国际互联网Internet采用的协议标准,早期用于ARPANet网络,后来开放用于民间。

特点:灵活性,支持任意规模的网络,可以连接所有的计算机,具有路由功能,且TCP/IP的地址是分级的,容易确定并找到网上的用户,提高了网络代换的利用率。

而其他的像Lwip协议栈的特点:

(1)支持多网络接口的IP转发

(2)支持ICMP协议

(3)包括实验性扩展的UDP

(4)包括阻塞控制,RTT估算和快速恢复和快速转发的TCP

(5)提供专门的内部回调接口用于提高应用程序性能

(6)可选择的Berkeley接口API

(7)在最新的版本中支持ppp

不知道这些是不是你想要的。

好吧,我来回答吧,首先是网卡驱动程序捕获到数据包,做检验无误后,和DMA以及CPU交互,然后由DMA和驱动程序创建BD表,然后分配skbuf(LINUX下)数据结构保存获得的数据帧,内核通过协议栈处理这个skbuf,通常是层层剥离每个层的首部,然后传到上一层,细节就是一个变量做偏移量,每次做一个首部偏移读取首部数据,识别本层协议类型以及下一层协议类型,具体过程就是这个网络原理的过程,请参考《TCP/IP详解卷一》《linux设备驱动程序》《understanding linux network internals》《Unix网络编程卷一》等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8471228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存