经过十几天的努力,终于在板子上把uC-TCPIP跑起来了。趁着还记得,赶紧把过程记录下来,分享心得体会。当中也走了不少弯路,以后吸取经验教训。
这十几天的工作大概可以分为三个部分:搜集资料、代码移植、测试调试。
由于项目需要,我们要在现有的ARM7平台上加网口跑TCP应用,然而我们现有的工程并没有实现TCP/IP协议栈。在初步调研之后,开始在网上搜集了关于一些uC-TCPIP的资料,主要有“官方Micrium”uC-TCPIP的源码,再加两三个不同硬件平台上的使用示例(感谢csdn、google svn和分享者等)。此外还搜索到几篇uC-TCPIP使用经验的帖子或者博文。
官方源代码里面分了好几个目录,其中uC-TCPIP目录下的Source是最核心的源码。简单地说,Source是直接拿过来用的,其他部分例如NIC、OS、CPU等目录是根据具体开发环境具体分析修改的。此外uC-Lib是个通用的函数库,处理内存分配和字符串转换等,也可以直接拿来用。
我们的项目一直是使用uCOS-II的,然而仔细看了uC-TCPIP的配置说明,uCOS-II的最低版本要求是v2.8x,而我们当前用的是uCOS-II v2.52,所以第一步必须先升级uCOS-II。
经过一两天的努力,我把原来DSP和ARM平台上面项目的uCOS-II都升级成v2.86,中间因为配置错了idle task堆栈大小导致溢出,花了点时间去调试。
移植uC-TCPIP就比较花功夫了。首先我是在ARM7的平台上做尝试。先把uC-TCPIP/source加进工程,设置好搜索目录路径,这时编译通过但链接失败,原因是还有很多函数引用没有实现。解决方法