移植的步骤参照《Day_Day_Up笔记之uCOS-II_LwIP_在_STM32F107_上移植》,《uCOS平台下的LwIP移植笔记》,《嵌入式网络那些事》。

  首先说说自己的准备的工程,在lpc1788开发板能够运行的ucos-ii工程,以及lwip协议工程(无操作系统)。ucos-II 版本是v2.8.6,lwip版本是v1.4.0。

  按照网上搜罗的材料,开始进行移植。

  总体思路:

      1、文件拷贝,将lwip工程下的相关协议栈代码拷贝到ucos-ii工程目录下。

      2、编写操作系统模拟层相关文件。

      3、编写供应用层调用的api函数。

1、文件拷贝(略)

2、模拟层需要编辑的文件有,cc.h(其实可以省略,将其内容放到sys_arch.h中),sys_arch.h,sys_arch.c 。

  将以上文件放在新建的arch文件夹下,此文件夹放在原工程common文件夹下。

  遇到以下问题,

  a、如果工程中指包含了common文件路径,则需要这样声明

#ifndef __ARCH_CC_H__
#define __ARCH_CC_H__

//code

#endif

同理,对于sys_arch.h,声明如下:

#ifndef __ARCH_SYS_ARCH_H__
#define __ARCH_SYS_ARCH_H__

//code

#endif

  否则会报错。

  b、在编写sys_arch.c时,需要用到sys_timeout,资料上说在sys.h中已经定义了,找半天都没有找到哪里有定义,经过无数个分分秒秒终于找到了它的踪迹,sys_timeo结构体在timers.h中定义,copy如下:

/** Function prototype for a timeout callback function. Register such a function
* using sys_timeout().
*
* @param arg Additional argument to pass to the function - set up by sys_timeout()
*/
typedef void (* sys_timeout_handler)(void *arg);

struct sys_timeo {
struct sys_timeo *next;
u32_t time;
sys_timeout_handler h;
void *arg;
#if LWIP_DEBUG_TIMERNAMES
const char* handler_name;
#endif /* LWIP_DEBUG_TIMERNAMES */
};

看前面的注释,吐血的心都有了,改来改去有意思吗,还改成 sys_timeo,让人不明白意思。不过在后面却犯了个严重的错误。最终原因是没有包含头文件timers.h。不过keil的报错信息却让我摸不着头脑:

..\Common\arch\sys_arch.c(47): error:  #393: pointer to incomplete class type is not allowed

迷迷糊糊以为是内存申请的时候出错了,跟踪...什么内存池啊,动态内存管理啊,都扫了一遍,还是没找到原因。笨办法,在sys_arch.h中自定义了个类似sys_timeo的类,一样的操作都没有出什么问题,看来原因找到了。

  c、新版本的lwip协议有小改动,在编写模拟层的时候随即变动下就好了。今天就写到这里。

  

关于lwip移植到ucsos-ii平台的遇到的问题(一)的更多相关文章

  1. LwIP移植和使用

    LwIP移植和使用 本手册基于lwip-1.4.x编写,本人没有移植过1.4.0之前的版本,更早的版本或许有差别.如果看官发现问题欢迎联系<QQ: 937431539  email: 93743 ...

  2. 移植samba到ios平台,最新支持ios8.3

    移植samba到ios平台,最新支持ios8.3 下载https://github.com/kolyvan/kxsmb 开源项目 1  cd samba-4.1.14 2  vi Rakefile 修 ...

  3. SWMM代码移植到64位平台

    在32位平台上运行SWMM模型,当节点数量到达60万以上的时候,模型运行占用内存接近1.85G的时候就会因为内存不够而无法计算.这种情况还是单独运行SWMM.exe的时候出现,如果采用SWMM.DLL ...

  4. 假防病毒软件从电脑移植到了 Android 平台

    以前有位女研究生点击网络钓鱼的链接.随即出现实时扫毒画面的方式,接着呈现了扫毒结果,跑出十余笔病毒数据,记录了被感染的计算机的具体位置,并提示她必须更新防病毒软件,而她在付费两千元后收到"防 ...

  5. 手把手教您将 libreoffice 移植到函数计算平台

    LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...

  6. lwip移植到stm32上-enc28j60,103mcu(2)

    前面小玩了一下ucos和lwip,但是都还不是真正的网络多任务,真正的网络多任务应该是什么样子的呢?应该是有一个专门的任务负责网络的通讯,他负责将数据发送出去,将数据接收回来,而其他的需要用到网络的任 ...

  7. MySql移植到嵌入式Linux平台

    最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...

  8. ubuntu移植jsoncpp到Android平台(转)

    NDK开发模块的时候,如果涉及到网络请求,类似json数据传递的时候,有现成的第三方json库可以移植,后台C++开发中使用的比较多的是jsoncpp,今天记录一下jsoncpp移植到Android平 ...

  9. 移植memtester到android平台

    硬件搭建起来能进入系统,首要就是测试内存的稳定性,需要一款内存测试工具. 一般都是选择memtester这款linux软件,下载地址如下:http://pyropus.ca/software/memt ...

随机推荐

  1. what is difference in (int)a,(int&)a,&a,int(&a) ?

    This interview question come from a famous communication firm of china. : ) #include <iostream> ...

  2. Xcode7 模拟器安装app (转)

    本文转自同事zz的博客http://archerzz.cn/ios/xcode-install-app.html 原由 很多时候,为了学习了解别人的app,很多时候我们是直接拿别人的app安装在自己的 ...

  3. jquery ajax的error错误信息

    项目开发中ajax的异常处理起来算是比较头疼的,因为是异步请求,所以即使ajax异常程序依然会继续执行,导致找ajax的异常比较麻烦. 今天处理ajax异常时搜到一篇文章,提到error可以返回aja ...

  4. iOS 工程功能实现之好用的第三方

    1.http://www.cocoachina.com/ios/20140224/7868.html  (一个天气App案例) LBBlurredImage是一个继承自UIImageView,轻而易举 ...

  5. web应用动态文档技术

    动态生成web文档分为服务器动态生成.客户端动态生成 服务器动态生成文档技术主要有: CGI - 公共网关接口,它是一个允许Web服务器与后端程序以及脚本进行通信的标准化接口.通常是web服务器收到一 ...

  6. http响应需要记住的状态码

    200:请求成功. 301:被请求的资源已永久移动到新位置.302:请求的资源现在临时从不同的 URI 响应请求.401:当前请求需要用户验证.403:服务器已经理解请求,但是拒绝执行它. 404:请 ...

  7. centos6.5下安装qq2012

    大家如果想在linux下用QQ的话,最好的方法就是用wine来安装.腾讯的QQ for linux用起来很坑爹. 下面就是我用wine在centOS下安装QQ.中间过程很简单. 一.安装Wine. 1 ...

  8. oracle笔记一

    一.Oracle简介 1.Oracle属于关系型数据库,是一款可以在Client/Server模式下运行的RDBMS产品.2009年,Oracle公司收购SUN. 2.Oracle是对象关系型数据库管 ...

  9. CIDR风格

    CIDR地址中包含标准的32位IP地址和有关网络前缀位数的信息. eg: 地址:192.168.10.0/24,其中/24标示前面地址中的前24位代表网络部分,其余代表主机部分. 11000000 1 ...

  10. Python学习笔记之Beautiful Soup

    如何在Python3.x中使用Beautiful Soup 1.BeautifulSoup中文文档:http://www.crummy.com/software/BeautifulSoup/bs3/d ...