关于lwip移植到ucsos-ii平台的遇到的问题(一)
移植的步骤参照《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平台的遇到的问题(一)的更多相关文章
- LwIP移植和使用
LwIP移植和使用 本手册基于lwip-1.4.x编写,本人没有移植过1.4.0之前的版本,更早的版本或许有差别.如果看官发现问题欢迎联系<QQ: 937431539 email: 93743 ...
- 移植samba到ios平台,最新支持ios8.3
移植samba到ios平台,最新支持ios8.3 下载https://github.com/kolyvan/kxsmb 开源项目 1 cd samba-4.1.14 2 vi Rakefile 修 ...
- SWMM代码移植到64位平台
在32位平台上运行SWMM模型,当节点数量到达60万以上的时候,模型运行占用内存接近1.85G的时候就会因为内存不够而无法计算.这种情况还是单独运行SWMM.exe的时候出现,如果采用SWMM.DLL ...
- 假防病毒软件从电脑移植到了 Android 平台
以前有位女研究生点击网络钓鱼的链接.随即出现实时扫毒画面的方式,接着呈现了扫毒结果,跑出十余笔病毒数据,记录了被感染的计算机的具体位置,并提示她必须更新防病毒软件,而她在付费两千元后收到"防 ...
- 手把手教您将 libreoffice 移植到函数计算平台
LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...
- lwip移植到stm32上-enc28j60,103mcu(2)
前面小玩了一下ucos和lwip,但是都还不是真正的网络多任务,真正的网络多任务应该是什么样子的呢?应该是有一个专门的任务负责网络的通讯,他负责将数据发送出去,将数据接收回来,而其他的需要用到网络的任 ...
- MySql移植到嵌入式Linux平台
最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...
- ubuntu移植jsoncpp到Android平台(转)
NDK开发模块的时候,如果涉及到网络请求,类似json数据传递的时候,有现成的第三方json库可以移植,后台C++开发中使用的比较多的是jsoncpp,今天记录一下jsoncpp移植到Android平 ...
- 移植memtester到android平台
硬件搭建起来能进入系统,首要就是测试内存的稳定性,需要一款内存测试工具. 一般都是选择memtester这款linux软件,下载地址如下:http://pyropus.ca/software/memt ...
随机推荐
- 利用CSS制作三角形
在我们看到类似于这样的图片时: 我们一般都会想,哎,这还不简单,用一张图片就可以了. 的确,用图片可以很轻松地做到.不过我们接下来要讨论的是: 如何用css也作出这样的效果. 首先,我们来定义一个 ...
- sublime必备插件
安装插件 安装插件时,先使用Ctrl+Shift+P(Tools→Command Palette...)打开控制面板,输入PackageControl 回车 显示. 选择Package Contr ...
- centos7装机和初步运维
1.装机-制作U盘启动盘 CentOS7是一个比较新的版本.在服务器领域用得比较多.因为前安装软件可能没有Ubuntu那样方便,所以桌面领域好像不是很多. https://www.centos.org ...
- NotORM(PHP的ORM框架)
类似Thinkphp映射到表的ORM机制. 网址:http://www.notorm.com/ <?php //require_once ‘init.php’;require_once ‘Not ...
- 《高级Web应用程序设计》课程
一.课堂课件 全部授课内容 二.作业 访问ftp://192.168.42.254:22,登录后找到自己的姓名文件夹,放入作业即可.登录账号为stu1,密码为空. 已布置练习 练习1(截止日期10月1 ...
- 【转】Python 日期和时间
本文转自:http://www.runoob.com/python/python-date-time.html Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Pytho ...
- 谈谈javascript中的日期Date对象
一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date();二.将日期对象转换为字符串 将日期对象转换为字 ...
- shell中创建mysql库和执行sql脚本
以前执行oracle脚本都是放到plsql中执行 mysql 脚本执行: (1).先创建一个worlddb库 (2).导入sql脚本: 这就ok啦,哈哈.
- 网站第三方登陆(一) QQ登陆
QQ 登陆是指,通过qq的用户名和密码,登录网站,不需要注册,网站的用户名和密码.如下图 一旦你授权了,就可以进入网站了,要实现这个效果 1.去qq互联平台(http://connect.qq.com ...
- javascript实例备忘
一,javascript动态显示: 如显示效果上图所示: 如图显示鼠标放在百度谷歌等字样上市动态显示其内容明细:代码如下:<head><title></title> ...