上QQ阅读APP看书,第一时间看更新
2.5 LwIP源码里的示例
打开之前下载好的contrib-2.1.0文件夹,如图2-18所示(后面LwIP的基础例程主要直接使用或参考源码里的示例即可)。
图2-18 contrib包中的文件和文件夹
图2-17 函数定义跳转
我们先讲解一下主要文件夹:
1)addons文件夹。LwIP中很多模块的实现都是可以由用户干预的,比如校验和、TCP初始序列号。LwIP的内核代码通过宏编译选项的设置,可以将内核中某些模块的实现方法配置成LwIP默认的方法或者用户自定义的方法。用户自定义的方法通常需要用户在钩子函数中实现。在实际应用中,我们采用内核默认的方法就足够了,只有在特定的场合下,为了顾及性能、资源开销等,我们可能需要自己实现相关的模块,或者编写相应的钩子函数。那么这时该怎么办呢?addons文件夹中的内容就为我们提供了参考。对于初学者,没必要关心这个文件夹。
2)apps文件夹中实现了很多应用层协议。LwIP源码包中也有apps文件夹,但源码包中apps文件夹下的应用程序全部用RAW/Callback API实现,属于内核代码的一部分。而此apps文件夹中的应用程序可以是由3种API中的任何一种实现的。你可以把它看作内核源码提供的应用程序的一个补充。
3)examples文件夹中是一些LwIP的应用示例。对于使用LwIP开发应用程序时可能出现的典型问题,比如如何移植网卡、如何使用LwIP的API、如何使用源码中提供的应用程序,这个目录提供了参考。在后续章节中,会使用这个目录中的示例来讲解LwIP的应用程序。
4)ports文件夹中是一些移植文件,可以帮助我们将LwIP移植到某个具体的操作系统中。目前这个目录所提供的移植文件只支持FreeRTOS、UNIX、Win32。我们会在后续的章节中讲解如何移植LwIP。