欢迎来到天天文库
浏览记录
ID:37728847
大小:350.59 KB
页数:8页
时间:2019-05-29
《VC++6.0环境上配置ucos-II》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、之byfrancis_haoyinghao1991@126.com学习ucosii也有一段时间了,说实话,刚开始学习的时候感觉很浮躁,恨不得一两天就把它学会。因为感觉自己能学习的时间不多了。想趁着这段时间多学点东西。可是越着急越乱。教材匆匆翻了好几遍却没留下什么印象。对一些基本的概念依旧不了解。忽然发现没有了学习的感觉,因为之前在一些比赛中,需要在很短的时间里把所需要的模块开发出来,即使你不明白其中原理。这样久了,我便也懒惰了。知其然,不知其所以然。其实,快速开发是一种能力,却不是学习的方法。平时的学习还是要踏实一点。步步精通才是好的。我认真总结了下,便开始以新
2、的态度对待它。把教材上的每一章节都细细品读。我的教材主要是以下两本:西安电子科技大学出版社的《嵌入式实时操作系统uc/os-ii》任哲老师的《嵌入式实时操作系统uc/os-ii原理及应用》第一本是我们学校的教材,但是我感觉里面的内容过于详细,对于初学者来说反而会造成适得其反的效果,让人不知就里。但作为手册看还是很好的。任哲老师的书想必大家都熟悉,它的框架性很强,看过一遍后,便对这个系统有了总体的认识。书中语言简洁明了,适合初学者。对于ucosii的学习就不说了,主要谈谈ucosii在pc上的移植,在VC++6.0环境下的使用。作为初学者,总是力求简洁明了,我在学
3、习的时候,一定要把为什么这样做想清楚。知道这样做的原因,或者还有没有其他的方法。也算是从零开始吧,除去我那点薄弱的c语言功底。开始的时候是从网上下载的工程,直接编译运行就可以了。当时很高兴,觉得自己很厉害了,可是这毕竟是别人的东西。怎样建工程自己还不会。于是我想只用ucos-ii源码,自己建一个工程,看看能不能运行。如果能运行了,那么自己离成功也就不远了。内核文件总共有16个,11不需要改动。有三个与处理器有关,两个与应用程序相关。我在工程中建了一个source文件夹,所有的源文件都放在里面,那11个不需改动的文件放在sourcecore文件夹中,与处理器有关
4、的文件被改成了os_cpu.h、os_cpu_c.c、os_trace.c、os_trace.h我们拿来用就好了,放在sourcecpu中。还有就是与应用有关的文件了,放在source文件夹下就好了。这样的分类好处是方便对各类文件的管理。我下载的工程的结构是这样的:这个可以编译,运行一切正常,但是因为里面没有那些内核文件,我感觉很费解,便在自己建的工程中将所有的文件都加进去了。但是内核文件有个os_dbg_r.c。这个我们过会再讲。现在这样的文件结构才是作为初学者的我所能接受的,于是很兴奋的点下编译,事情就变成这个样子了:晕了,怎么会有这么多错误呢?而且好像都
5、是连接错误。变量重定义了。是ucos_ii.obj中的问题,.obj文件存在就说明文件本身编译没有错误。是连接的时候出的问题。我在网上搜索资料的时候发现一篇讲编译器原理的文章,写的很好,把编译和连接讲的很形象,文章放在附录中,在此表示感谢。ucos-ii.c有问题,于是把这个文件打开看就是这个样子了,这个文件包含了所有的内核文件,怪不得会出现重复定义。JeanJ.Labrosse是为了让工程更简洁。在建工程的时候只需将ucso_ii.c添加在工程中即可。我们尝试一下怎么样?验证了你的猜想了吧,这感觉,像做了一次福尔摩斯。爽了。但是我们这里的真相不止一个,还可以这
6、样:添加除去ucso_ii.c外所有的内核文件也是可以的。两种方法的区别:第一种方法,在文件中定义的结构体不会出现在ClassView中,第二种则会显示出来。还有一个问题就是os_dbg_r.c这个文件干嘛用的???我也不知道,具体的道理我不知道,只知道是关于调试的,如果你知道,麻烦发到我邮箱。万分感谢!不过现在。。。管它呢,我觉得不需要,所以我把它删掉。编译一下,出现问题了。果然不是随便能删的。在文件中找“OSDebugInit”:好了,到文件中看看去。条件编译!!!追踪到OS_DEBUG_EN中的定义中:啊,原来是这样。那么我们把这个调试允许位改为0会是怎么
7、样呢?恩。如你所想,一切OK。好了,这个工程这样就算是建好了,你可以在上面做各种实验。开启你的ucos之旅吧!附录:变量、函数、类,分为声明和定义,至于格式,不再多说。编译器编译的时候,先单独编译每一个cpp文件,然后用连接器把他们连起来。一个cpp文件要能完成自己范围内的东西的定义,即,运用自己已经定义的东西,或者声明了的东西。声明了的东西等于告诉编译器,虽然这个东西我没定义,但是在其他地方定义了(文件内或文件外),你就先将就我告诉你的它的特征(类型,函数返回类型,参数等)来用它就好了。比如我的cpp声明了intnumber,现在需要完成一个函数的定义,voi
8、dfunc(){Numb
此文档下载收益归作者所有