- 博客(9)
- 收藏
- 关注
原创 移植uCOS-II到C51 - 7
总算弄明白为什么在时钟节拍的中断函数里没有保存寄存器了,原来Keil自动生成了将寄存器入栈的代码,具体见C51.pdf第126页的说明。这也决定了OSTaskStkInit()函数中寄存器入栈的顺序。最后一篇吧,稍微总结一下。做这个移植,到现在差不多是两周时间。最后整理代码的时候,发现要修改的地方其实并不多。主要的时间是在分析别人写的移植代码,把它们看懂。 首先是要理解uCOS的多任务是怎
2007-10-26 21:02:00 1529
原创 移植uCOS-II到C51 - 6
今天,我把杨屹的移植版本修改到自己的平台上,也算是检验一下自己对移植uCOS的理解和掌握程度。虽然其间繁琐的指针操作让我很头大,但最后还是比较顺利的调试通过了。发现自己的板子都能做反面教材使了,基本上参考现成的板子画的,修改也不多。用的时候才发现问题好多啊,如果程序里有访问片外存储的代码,两个按键,部分数码管都不能正常工作。这些都是因为P2、P3除了用作IO口还具有其他功能,往往二者只能得其一
2007-10-22 20:11:00 2038
原创 移植uCOS-II到C51 - 5
这两天又测试了几个不同的移植版本,包括最先看到的SW和杨屹的版本,总算能在我的系统上跑起来了。虽然还有些问题没搞明白,但心里还是挺高兴的。毕竟,自己的努力看到了些许成果。做到现在才真的感觉到,其实在C51上跑uCOS,能做的东西也很有限。对我来说,只不过是个体验而已,而我也不希望这是失败的、让人受挫的体验。我也发现自己的硬件电路也有很多局限性,比如我把P3.6和P3.7用作了按键输入。这在不使
2007-10-18 21:23:00 2051
原创 移植uCOS-II到C51 - 4
现在在分析任务级的任务切换,即当前任务主动放弃对CPU的控制权,通过系统任务调度转而运行其它已就绪的任务。调用顺序如下:OSTimeDly() | OSSched() |更新OSTCBHighRdy,使其指向新任务的任务控制块 OS_TASK_SW()->OSCtxSW() |保存现场到当前任务模拟栈 C_OSCt
2007-10-16 20:11:00 1416
原创 移植uCOS-II到C51 - 3
昨天,修改SW的移植版本到自己平台的企图以失败告终。今天,看了一个稍微简单些的版本,来自John X.Liu。之所以说简单,是因为我至少看到了熟悉的reg52.h,还有,连SW也说他的移植是在Liu的基础上做的。搞了一天,对这个咚咚又了解了多一些。吸取昨天匆忙上阵急于求成的教训,今天决定从简单的情况入手,看看调用OSStart()以后,第一个用户任务是如何开始执行的。可以看到这样的调用顺序:O
2007-10-15 21:23:00 1744 1
原创 移植uCOS-II到C51 - 2
现在再来回顾一下要今天要弄清楚的几个问题:1)任务堆栈如何设计,如何初始化(保存那些内容,放在什么地方)2)任务切换何时发生,如何发生(现场保护和恢复)先来看看uCOS-II移植到80x86PC的版本。No.1 堆栈的分配每个任务都分配了一块的RAM空间,这个没啥好说的。分配时数据类型为OS_STK,与编译器相关No.2 堆栈的初始化由OSTaskStkInit()函数完成,这一点从函数的
2007-10-13 20:40:00 2904
原创 移植uCOS-II到C51 - 1
昨天,终于把 C51的电路板焊好了。虽然很简单没啥新意,但是看着这块自制的"Hello, World!",我还是很高兴。毕竟,从原理图到PCB布局、布线,还有那些让我头疼的元件封装,都是我亲历过的,并且发现焊东西是一件很有意思的事情。当然这其中同事们也给我很多帮助,谢谢他们了。更让我欣慰的是,几个基本的测试都没发现什么问题,LED/数码管/串口/按键一切工作正常,真是谢天谢地: )接下来的工作
2007-10-12 23:17:00 2361
原创 Ubuntu体验 - 1
最近真是闲得慌,老婆又出差了,一个人更容易胡思乱想。找点啥事来做呢?在学校重装系统是我无聊是经常干的事情,仿佛每重装一次,又是一个新的开始。发现CD包里有两张Ubuntu7.04的安装盘,那次心血来潮的在网上申请这免费的咚咚,一个多月还真给我寄来了。这是我生来头一回收到从外国寄来的邮件,着实激动了一把。想起来好像Ubuntu的桌面做的挺不错的,还有一次看到的三个屁股的LOGO让我印象深刻。
2007-10-12 22:04:00 811
转载 关于 Big endian 和 Little endian
由来:big-endian和little-endian这两个术语来自Jonathan Swift在十八世纪的嘲讽作品Gulliver’s Travels。 Blefuscu帝国的国民被根据吃鸡蛋的方式划分为两个部分:一部分在吃鸡蛋的时候从鸡蛋的大端(big end)开始,而另一部分则从鸡蛋的小端(little end)开始。x86的CPU使用的是LE(Windows中称为“主机字节
2007-01-21 15:40:00 648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人