原创 菜鸟学uC/OS_II(一)

2008-9-12 09:49 3056 8 10 分类: MCU/ 嵌入式

菜鸟学uC/OS_II(一)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


By <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Norman


2008-07-03


 


学期结束了,课程也基本上要上完了,如何度过即将到来的暑假?学学uC/OS_II吧,因为很多人说,对于嵌入式系统不是很熟悉的人,选择这个比较利于学习的系统,入门比较合适。


那就开始学习吧。


我的习惯是在网上看看网友们推荐的学习流程和学习资料然后再开始学习。大多数的前辈们都推荐了邵贝贝老师的书籍,正好我偶然机会下碰到书店有这本书,那正好,买回来再说吧(其实买的时候我可没有这么轻松,毕竟60多块呢)。


第一天,仔细研究了书中的结构和作者、译者的建议,感觉这本书还不错,兴趣上来了。


第二天,按照作者建议,先阅读第一章的例程和第三章的内核结构;不过中途老板让做了些其他事情,耽误了几天。


第三天,中断回来,又得重新看,我决定按照书中介绍,先跑跑程序;按照书中的步骤、路径,程序很容易跑,也没有什么可总结的。然后当然是要修改程序,试试编译和调试;问题就来了,就像很多人遇到的一样。所幸,我们有百度和谷歌这两个好老师。


在网上散了几步,确实有很多问题都出现过,也都解决了。不过我这个半路出家来学嵌入式的菜鸟不是一般的菜,计算机基础不太扎实,有些问题还真的看不太明白。不过古人教的好,有志者事竟成。经过一个下午的搜索、查询和反复试验,总算达到了我的期望。


总结一下今天下午的收获:


1、对uCOS_II的结构目录有了一定的了解


首先,安装uCOS_II 2.52版本,出来的SOFTWARE文件夹就是整个系统的源代码——当然,里面有作者给的例程了。


C: \SOFTWARE


——这是根目录,是所有软件相关的文件都放在这个目录下。


+ C:\SOFTWARE\BLOCKS


——子程序模块目录。作者将例子中μC/OS-II用到的与PC相关的函数模块编译以后放在这个目录下。


+ C:\SOFTWARE\HPLISTC


——这个目录中存放的是与范例HPLIST相关的文件。HPLIST.C存放在C:\SOFTWARE\HPLISTC \SOURCE目录下。DOS下的可执行文件(HPLIST.EXE)存放在C:\SOFTWARE\TO\EXE中。


+ C:\SOFTWARE\TO


——这个目录中存放的是和范例TO相关的文件。


源文件TO.C存放在C:\SOFTWARE\TO\SOURCE 中, DOS下的可执行文件(TO.EXE)存放在C:\SOFTWARE\TO\EXE中。注意TO需要一个TO.TBL文件,它必须放在根目录下。用户可以在C:\SOFTWARE\TO\EXE目录下找到TO.TBL文件。如果要运行TO.EXE,必须将TO.TBL复制到根目录下。


+ C: \SOFTWARE\uCOS-II


——与μCOS-II 相关的文件都放在这个目录下。


# C:\SOFTWARE\uCOS-II\EX1_x86L


# C:\SOFTWARE\uCOS-II\EX2_x86L


# C: \SOFTWARE\uCOS-II\EX3_x86L


# C: \SOFTWARE\uCOS-II\Ix86L


——这些是作者给出的例程


# C: \SOFTWARE\uCOS-II\SOURCE


——这个目录里包括与处理器类型无关的源代码。这些代码完全可移植到其


它架构的处理器上。


2、了解到有两种编译的方法(BC++4.5


首先是利用例子中给出的MAKETEST.BAT文件。批处理文件也没有什么神秘的,就是很多DOS命令的集合,写作批处理就是为了方便。这里出现的问题不是很多,现在想来还比较好笑。第一次编译的时候,提示找不到OS_CPU.H,我仔细看了看,没有问题嘛,路径是对的呀,怎么会找不到?难道真的需要在C盘才可以(我的uCOSD盘)?试试吧,大家也应该知道了,这样是解决了这个问题。但是为什么呢?不在C盘应该也是可以的嘛!?还是基础比较差,还没有找到在哪里修改路径。怎么办?查吧!欣喜地看到一个网友写的uCOS_II的安装调试指南中提到了TEST.MAK中需要修改路径(网友ID不记得了,不好意思哈^_-),这个就比较明确了,Makefile嘛,指定路径是比较重要的,不过还没有试验过,还是先到C盘吧(呵呵)。


这个问题解决之后,重新编译,出现了TASM不是内部批处理命令的提示。TASM硬件基础学过,应该是我安装的BC中没有这个执行文件吧,看看呢,果然没有!谷歌上搜搜,很容易找到了一个5.0的,下载……咦?要安装的说,安装吧,吸取教训,默认路径吧。安装完成,再次运行MAKETEST.BAT,估计各位都要偷笑了,肯定不行嘛,路径都没有改,TEST.MAK怎么找得到?不过有前辈告诉我,把TASM.EXE复制到BC下的INCLUDE目录不就可以了?因为TEST.MAK中使用的几个文件都是放在这里的。那就这么着呗(其实我想,严格的来说,我们把所有需要的文件放在一起是否更简单呢?没有验证过,有网友跟我的想法相同)。再次运行,看到CMD中代码一行行出现,我知道成功了,源程序修改的地方也体现出来了。


第二个方法就是使用BCIDE,这个方法是按照大多数网友的经验做的,不过好像语法上有些不一致,出项了很多警告,这些问题很繁琐,留在以后再解决吧。下面记录一些经过,以防以后又糊涂了。


BC45INCLUDE目录拷贝了这几个文件:INCLUDES.HOS_CFG.HOS_CPU.HPC.H四个文件,当然,在INCLUDES.H中要修改其路径为BC45下的路径即:(我不太确定OS_CPU_A.ASM是否要拷贝,但是根据后来的操作和验证,应该不需要的)


/*


#include    "\software\ucos-ii\ix86l\bc45\os_cpu.h"


#include    "os_cfg.h"


#include    "\software\ucos-ii\source\ucos_ii.h"


#include    "\software\blocks\pc\bc45\pc.h"


*/


#include "c:\bc45\include\os_cpu.h"


#include "c:\bc45\include\os_cfg.h"


#include "c:\bc45\include\pc.h"


#include "c:\bc45\include\ucos_ii.h"


然后在BC45IDE中新建ide工程,应用工程、DOSstandard)、Large。放在哪里好像是没有关系的,这个我验证过。然后添加工程所需要的文件,当然,这就是你裁剪功能后的uCOS_II系统文件以及你自己的应用程序源文件了。当然,这里因为是在PC上,PC功能函数模块也需要添加,这在其他CPU上应该是不一样的。具体文件是:OS_CPU_C.COS_CPU_A.ASMuCOS_II.CPC.Ctest.c


在书的配套例程中,具体路径如下:


SOFTWARE\ucos_ii\ix86\os_cpu_a.asm


SOFTWARE\ucos_ii\ix86\os_cpu_c.c


SOFTWARE\ucos_ii\ex1_x86l\bc45\source\test.c


SOFTWARE\blocks\pc\bc45\pc.c


SOFTWARE\ucos_ii\source\ucos_ii.c


这样,就可以compilemake allbuild all了。


出现的信息就是很多的warning不过最终生成的prjXXX.exe还是可以运行的。


相信有很多跟我一样比较茫然的是,哪里去找BC45TASM?我认为还是有很多的,我是很快就找到了一个完整版的BC45TASM5.0更是漫天飞。相信大家都能够找到。去搜索吧,这对自己很有好处。


三天的学习时间,获得的就是这些,可能看起来并没有什么内容,而且思路还不是很清晰,但我相信,通过循序渐进的学习,前面的路会越来越明了。


(待续)

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户461316 2008-9-12 20:14

一起努力

用户116683 2008-9-12 17:13

一起努力
相关推荐阅读
用户1407551 2010-06-08 11:28
Protel 带网络复制和粘贴
今天有人问到为什么复制PCB之后网络就消失了,我说,你没有告诉它要不要复制网络,软件不知道你要干啥。复制之后,Paste Special,keep net name即可。其实,这些个软件应该都是有这种...
用户1407551 2010-04-26 19:52
关于Libero8.5安装和卸载的问题!
似乎半年多以前赶一个项目,用到了Actel的FPGA,安装Libero的时候遇到一些困难,想不到过了这么长时间,还有朋友遇到这个问题。回去看了看帖子,还是决定记下来以免以后又不知所措。 基本上这个问题...
用户1407551 2010-04-26 10:44
『转』上拉电阻和下拉电阻
上拉电阻下拉电阻的总结上拉电阻:[52RD.com]1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,...
用户1407551 2010-04-26 10:30
『转』吸电流、拉电流、灌电流、上下拉电阻、高阻态
 吸电流、拉电流输出、灌电流输出拉即泄,主动输出电流,从输出口输出电流;灌即充,被动输入电流,从输出端口流入;吸则是主动吸入电流,从输入端口流入。   吸电流和灌电流就是从芯片外电路通过引脚流入芯片内...
用户1407551 2010-04-23 15:01
『转』分贝
分贝分贝表示一种单位,即两种电或声功率之比或两种电压或电流值或类似声量之比;分贝还是一种测量声音相对响度的单位。  fēnbèi   [decibel]   (1)∶表示两种电或声功率之比的一种单位,...
用户1407551 2010-04-22 11:26
电阻的精度和温漂
1、电阻温度系数(TCR)表示电阻当温度改变1度时,电阻值的相对变化,当温度每升高1℃时,导体电阻的增加值与原来电阻的比值。单位为ppm/℃(即10E(-6)·℃)。定义式如下:TCR=dR/R.dT...
EE直播间
更多
我要评论
2
8
关闭 站长推荐上一条 /3 下一条