潇洒悠闲的解释:痛苦,到底该怎样学UCOS II

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 00:37:45
痛苦,到底该怎样学UCOS II?
作者:mikezhong 栏目:嵌入式系统
痛苦,到底该怎样学UCOS II?
还望各位大侠帮忙解惑,我是目前是单片机的,电子技术专业,因为目前在学习ARM,熟悉C语言,想学UCOS II,买回来了邵贝贝的书,看了一遍,看了很久,感到很难入手,各位前辈能否介绍一点你们曾经的开始学习UCOS II的经验和学习方法。谢谢。
2楼:>>参与讨论
作者: xuekcd832 于 2005-5-2 14:38:00 发布:先看三遍,然后参照网上的列子自己移植一个。
3楼:>>参与讨论
作者: chunk 于 2005-5-4 0:34:00 发布:混合语言程序设计
C语言调用汇编语言没问题吧?那么汇编语言调用C语言呢?
一提“函数调用”我们就习惯于想起CALL指令,你有没有想过用“RET”指令也可以“调用”函数?
4楼:>>参与讨论
作者: mikezhong 于 2005-5-4 19:44:00 发布:一时之间很难全看完三遍
谢谢各位,那么厚的书,一时之间很难全看完三遍,我是想想知道我应该重点往哪方面,哪几章节看?从而可快于普通的学习。
5楼:>>参与讨论
作者: zlei 于 2005-5-4 21:50:00 发布:先在pc上把各个例子跑一遍
有个感性认识
6楼:>>参与讨论
作者: vwwj 于 2005-5-5 10:35:00 发布:没那么复杂啊
把那三个CPU文件移植后,照书本自检测一下,开几个任务就可以了。
我是第一天买了书,第二天移植到2132,第二天晚上跑了ADC和串口两个任务。很EASY啊
7楼:>>参与讨论
作者: mikezhong 于 2005-5-5 15:04:00 发布:差距大啊!
上面的这位大侠,很厉害,这就是我和你的差距。差距大啊!可否借鉴一下你的经验。那三个文件,是哪三个文件?能发给我看一下吗?
另外,现在我都不知道如何创建任务,所以还在啃书。
8楼:>>参与讨论
作者: mikezhong 于 2005-5-7 19:50:00 发布:程序内容都很简单
我看了相关的在ARM 2132上面的相关的移植的程序,周立功的附带的程序例子,程序内容都很简单,只用到了很少的一部份UC/OS II 的内核代码,对于搞ARM的多任务程序,是否UC/OS II 不需要钻的很深(当然是基于初学的情况),特别是书本后面的消息队列和邮箱?
9楼:>>参与讨论
作者: jangyouhua 于 2005-5-12 16:53:00 发布:vwwj太利害!
别信那个wwwj的话!牛也吹得比天大。
10楼:>>参与讨论
作者: lwtlwt 于 2005-5-12 22:37:00 发布:学习ucos,你应该把它当作操作系统来学习
虽然它只是一个简单的操作系统,但你可以学到操作系统的基础。
建议仔细阅读那本书,翻译质量不错,看一遍不够,至少两遍,并且要吃透,包括源代码的分析,
另外,给一点忠告:如果没有操作系统的基础,千万不要看那三个例子,从三个例子之后的章节开始看,否则你会因摸不着头脑而郁闷,
11楼:>>参与讨论
作者: lwtlwt 于 2005-5-12 22:38:00 发布:看完一遍后再看那三个例子
12楼:>>参与讨论
作者: mikezhong 于 2005-5-14 12:22:00 发布:谢谢
谢谢各位指点,请问重点应该放在哪里?
13楼:>>参与讨论
作者: eleven11 于 2005-5-14 12:24:00 发布:关键要看你功夫到不到家
要是你的C语言编程写的都流水帐的话,那还是不要看的好
本人编过一些ARM的底层驱动,链表的应用也搞过很多
就在某一天,总之基本上没看uCOS2那本书,只是随便翻了翻,突然顿悟,原来就是这样啊,就在那一刻,我会用uCOS2了,其实用一个移植好的uCOS2和用一个头文件里的程序没多大区别
关键是你是否编过操作系统中用的最广泛知识的程序
14楼:>>参与讨论
作者: lwtlwt 于 2005-5-14 22:03:00 发布:re
RE:其实用一个移植好的uCOS2和用一个头文件里的程序没多大区别
这样使用ucos2会非常危险,毕竟ucos是为嵌入式系统而设计的,代码小,占用RAM少,而且还要在普通单片机上使用,因此,它在使用上需要注意一些注意事项,而且还不算少,如果只是随便翻翻,你肯定不能把ucos用于复杂的产品设计上,否则系统极可能出问题。
因此,即使是比尔盖次,想用好、用全ucos,不出问题,也得好好看一遍,当然,他可以跳过前面几章
15楼:>>参与讨论
作者: mikezhong 于 2005-5-17 12:10:00 发布:表达式我不知道是什么意思
各位,我学到了任务调度这里,下面这个表达式我不知道是什么意思,待别是等号右边有指针,请大侠能否帮我解释一下?
16楼:>>参与讨论
作者: mikezhong 于 2005-5-17 12:11:00 发布:等式。
等式,
ptcb->OSTCBEventPtr = (OS_EVENT *)0;
17楼:>>参与讨论
作者: mxb3733 于 2005-5-17 17:52:00 发布:付值表达式
这是一个付值表达式
意思是把0强制转换为OS_EVENT 结构指针付给=前的~
18楼:>>参与讨论
作者: mikezhong 于 2005-5-18 7:34:00 发布:谢谢!
把0强制转换成OS_EVENT结构指针,是不是OSTCBEventPtr指针为0?
19楼:>>参与讨论
作者: mxb3733 于 2005-5-18 17:33:00 发布:不是的
OSTCBEventPtr并不为零
是它指向的内容为空,但是结构依然占有内存
20楼:>>参与讨论
作者: sixpower 于 2005-5-18 19:41:00 发布:没必要全弄懂,只要懂得应用就差不多了.
ARM都有现成移植好的.
21楼:>>参与讨论
作者: mikezhong 于 2005-5-18 20:49:00 发布:谢谢,
哦,对,谢谢,如果一个个问题不弄懂,总是看不下去,累着大家了!
22楼:>>参与讨论
作者: eleven11 于 2005-5-18 22:19:00 发布:楼主应该好好编几个链表和结构体的程序
感觉你编程不怎么样?好像是没走好路就想跑?
说的不对请原谅
* - 本贴最后修改时间:2005-5-18 22:20:42 修改者:eleven11
23楼:>>参与讨论
作者: mikezhong 于 2005-5-19 7:46:00 发布:主要是一些简单的控制
我只是搞单片机编程,主要是一些简单的控制,没有涉及到链表,结构体的话,暂时也还没用到,用简单的东西代替了,只是学了而已,可不可以介绍一些有链表的程序例子,我捉摸捉摸。我想在实际的学习当中补足不足。
24楼:>>参与讨论
作者: joyce1024 于 2005-5-21 15:04:00 发布:ARM都有现成移植好的.
好象是可以这样做的。不过我觉得应该不会太难掌握这个东西的。  在很多时候都应该是这样的。
25楼:>>参与讨论
作者: LWTLWT 于 2005-5-21 22:03:00 发布:如果:
如果不能基本看懂ucos的源码,那说明C语言及数据结构内容还不过关,
要想真正读懂ucos,不仅要扎实的C语言,还要有数据结构基础,而这些都是嵌入式开发工程师所应该具备的。
26楼:>>参与讨论
作者: mikezhong 于 2005-5-23 12:17:00 发布:事件控制块,任务控制块
我看了几章,感觉任务控制块较不好懂,事件又有事件控制块,任务控制块,主要控制任务的优先级,我想他的灵魂就是这一点吧!
27楼:>>参与讨论
作者: seabridge 于 2005-5-23 12:42:00 发布:先看任务,不要考虑事件
28楼:>>参与讨论
作者: htao 于 2005-5-24 14:55:00 发布:UCOS II可以TCP/IP之类的协议吗?
29楼:>>参与讨论
作者: lostman 于 2005-5-25 16:04:00 发布:我觉得是这样的!(8
c语言保证0不是有效的地址,而给一个指针赋值为0,可以表示一个异常事件,在ptcb->OSTCBEventPtr = (OS_EVENT *)0;里,意思就是清除当前任务的控制块的事件指针,即该任务没有(不再)等待其它事件了。
30楼:>>参与讨论
作者: uisffer 于 2005-5-25 16:46:00 发布:空指针
其实就是付了个空指针,表明该指针不再指向任何事件控制块
31楼:>>参与讨论
作者: 夏正武 于 2005-5-25 21:12:00 发布:可能你没有相应的开发经验
可能你没有相应的开发经验
如果开发过一些东西,就会对多任务,单片机如何执行任务,对简单的监控程序
有了了解。 就会明白为什么uc/os讲的是什么。
我曾经看那本书很迷茫,似乎看懂了,其实是一头雾水,不知所云。后来但ucos-ii 还是大体搞懂。我建议前三章反复读。 如果还不懂,我建议看以下两本书有关于实时多任务系统的内容,看一下就知道,什么的多任务,怎么划分多任务,怎么调度,等(一般单片机开发只有一个大的任务,所以看ucos-ii 不理解开发个东西哪儿来的多任务,任务之间是什么关系,等。
单片微机软件设计技术 涂时亮编著 科学技术文献出版社重庆分社 1988 73.876/10.323
还有本复旦大学编的 大概叫 单片微机原理...... 里面有介绍实时多任务系统的。这两本书这部分的
内容一样。 我在大概把 邵贝贝 翻译的那本书看了 两次(当然没看完,反正看看就看不下去了,再来)仍然迷迷糊糊,看了涂时亮的书后再看邵贝贝 翻译的那本书 就有种豁然开朗的感觉,看起来很快
32楼:>>参与讨论
作者: dylm 于 2005-5-26 15:26:00 发布:一起学习
我觉得还是应该先弄懂操作系统的一些基本概念,当然数据结构也必须有一定的基础,这样看起来会顺一些:)
33楼:>>参与讨论
作者: wjy1107 于 2005-5-26 16:31:00 发布:一起进步
我以前也是搞单片机的,现在也正在学习嵌入式操作系统,可以互相探讨。
email:wangjinying@neuera.com
34楼:>>参与讨论
作者: mikezhong 于 2005-5-26 18:09:00 发布:刚刚好不容易打了一串字,突然停电!
刚刚好不容易打了一串字,突然停电!
对于这个系统的一些相关的慨念,我都理解,能够知道是什么意思,我所感到的难点,是在键表,及指针函数这一块,一见到她们,我头就大了,各位大侠有没有关于指针函数,键表方面的资料,我要加强这方面。
另外,前面多位大侠提到,要熟悉数据结构,这么看来,我们学习电子专业的又不得不再学习计算机专业的知识了,并且是本科的内容,我买了一本数据结构的书,看起来有一点难度,其实,以我个人的观点来看,做为一个专业的嵌入式工程师,可能是要非常熟悉数据结构,但对于我理解UCOS II,应该不是我当前的最大瓶颈。
35楼:>>参与讨论
作者: eleven11 于 2005-5-26 18:17:00 发布:我也是自学的
C的资料就是那本谭浩强的书,不理解结构体和链表就是不理解数据结构
* - 本贴最后修改时间:2005-5-26 18:24:47 修改者:eleven11
36楼:>>参与讨论
作者: d_2002gf 于 2005-5-26 19:23:00 发布:先粗看,再细调试
首先:建议先通看全书,有一个初步的认识,可能看完后一头雾水,但那不要紧,将关键性的数据结构(如任务的描述),源码,记下来;
然后:选择一个自己非常熟悉的调试环境,下载一个短小的例子,一步一步的调试,看OS是怎样修改STACK,达到切换任务的目的,这是OS最关键的东东;
然后:再回过头来看书,这次要细看,或许你会觉得自己在慢慢地入门了;
最后:也许你成功了!?
关键:别急功近利,多翻翻C语言(谭浩强),数据结构,OS的基本常识
37楼:>>参与讨论
作者: nt_mouse 于 2005-6-1 13:29:00 发布:为什么不看看SMALL ROTS51?
SMALL RTOS51简单实用,作为学习比UC/OS要快,也简单.只是书写的不如UC/OS,另外最好能懂一些80C51的知识,这样理解起来更方便!
38楼:>>参与讨论
作者: luofl 于 2005-6-10 11:10:00 发布:我也在学ucos-ii,说说我的体会.
我也是从事51单片机开发,现在正在学ucos-ii.我想谈谈我学习的一些体会.
首先我看了陈明计的那本Small RTOS51的书,并把它用在产品上.
然后再看os-ii这本书.现在基本看完了,感觉不是太难,我主要先看3,4,5,6这四章.看完后基本框架就在脑海内形成了.接着主要看7,11章.然后再看其它章节.现在重新回过头来看仔细分析这些章节的源代码,这样认识上又提高了一步.
下一步我想找周立功买一块开发板,学习LPC2131芯片,然后将ucos-ii应用到产品中.
学习一定要与实践相结合,不然很难取得进步.最后愿我们都把ucos-ii学精,呵呵到那时我们的生活会越过越精彩.
39楼:>>参与讨论
作者: ketp 于 2005-6-10 17:05:00 发布:先搞懂多任务
先搞清楚什么是多任务?多任务说白点就是让cpu不要空转(小时间片除外),一般来说有以下几种方法:
1在空转的时间片里塞一些其他操作(直观,但做不了大事)
2使用状态机,依靠记录和转移状态在空转时来让出cpu(状态多时,实现困难)
3上下文切换,保存任务现场和恢复其他任务现场来来让出cpu---OS使用的方法,编程方便,可支持抢占。
40楼:>>参与讨论
作者: hhwsl 于 2005-6-11 13:29:00 发布:坚持,坚持,在坚持
我的学习经历:
我开始连51都没有使用过,汇编只是考试的时候看的,C语言是考2、3、4级
计算机等级考试的时候学的(C基础好)。刚进单位我好害怕,什么都不会!!!
我是从TMS320LF2407A开始学的,刚开始是读同僚的代码,汇编和C,后来自己开始修改他们的代码。这样大概一个月,我可以编了!!
一次出差听说uC/OS-II,就买了一本。读了一个月2遍还是3遍已经记不请了。后来就从网上下了一个现成的移植例子,但是不能跑,这样又花了我一个月的时间,终于跑起来了!!:)
于是我把它用到我项目中,开始领导不太放心,后来经过测试还是通过了。
但是我只是使用了两个任务通信技术:信号量和消息邮箱。对我的项目已经足够了。
但当时我有一个误区:认为只能使用一个信号量和一个消息邮箱。其实现在看来当时自己是多么的逗了!!:)
后来,我又出差了,也就意味着暂时告别我的uC/OS-II!!出差期间,我有幸买了一本《C PRIMER PLUS》,里面有队列和连表的实现(这正式uC/OS-II内核使用的),写的很好,我用VC++6。0都试了,很简单。
现在我回来了。花了两天时间又读了一边那本厚书,很轻松,以前没有理解的问题都解决了!什么消息队列,时间标志组,内存管理等等,哈哈都NO PROBLEM。
仔细算下来,整个过程大概就是4个月:).
我想说的就是:不要畏惧困难,坚持坚持再坚持,没什么难的,都是自己吓自己!!
另外要有一个自己的开发板,可以在业余时间调调。比如周立功的2104开发板就不错,当然如果你经济宽余的话可以买一个高档点的,将来可以跑uCLinux。
我的QQ:12202050   欢迎交流!!
41楼:>>参与讨论
作者: beibeito01 于 2005-6-11 16:31:00 发布:个人感受
我看搞电子技术的学嵌入式要先学《操作系统》和《数据结构》先,个人感受,我也是这样进入的。
42楼:>>参与讨论
作者: 厉害 于 2007-11-29 15:27:39 发布:39楼好厉害,四个月就搞定了,我现在也是想从单转嵌,任务切换倒是搞懂了,就是信号量、邮箱、消息队列怎么个运行机制,就是事件控制块有些头大,欢迎光顾http://patonwang.blog.163.com
43楼:>>参与讨论
作者: Paton 于 2007-12-12 10:28:05 发布:一点一滴的积累吧,谁也不能一口吃个胖子,哪里简单就从哪里入手
44楼:>>参与讨论
作者: forward 于 2009-7-6 22:49:38 发布:
我正准备做一块lpc2121的开发板,到时想学学uC/OS-II,还请各位大虾不吝赐教~
45楼:>>参与讨论
作者: 童话 于 2009-9-13 22:51:05 发布:我也建议吧源代码 分析三遍  我现在看了三遍当然格的时间比较成 第一次大概十一年前 第二次大概是半年前 由于比较忙没有时间看  看这个纯属是个人爱好  最近又看了一遍  要把他的内核 原理搞清楚 最主要的是基于优先级的调度 以及链表的使用  这样子对于以后的发展才有后劲有动力
46楼:>>参与讨论
作者: palcebo 于 2009-12-6 0:31:07 发布:
我不知道你各方面的水平如何 我没有玩过单片机 ARM开发板正准备买
因为跟同学一起准备写一个嵌入式操作系统所以看了一下那本书 感觉很容易懂 但是大家情况不一样
我是计算机专业大三的 感觉C语言是没问题了 算法数据结构都还算懂 也看过Linux0.11的代码 操作系统原理的书看过几本 可能再看这个就觉得很容易理解 本来觉得嵌入式系统很难写 但是看了那个发现进程管理 内存分配都写得很简单 而且不需要做虚拟内存 大部分都是讲IPC的 但是写嵌入式操作系统的难点在于移植 如果上升到C语言就很简单了 但是怎么跟硬件打交道是我缺乏的 也希望向各位前辈们学习