移植uCOS-II到C51 - 1

昨天,终于把 C51的电路板焊好了。虽然很简单没啥新意,但是看着这块自制的"Hello, World!",我还是很高兴。毕竟,从原理图到PCB布局、布线,还有那些让我头疼的元件封装,都是我亲历过的,并且发现焊东西是一件很有意思的事情。当然这其中同事们也给我很多帮助,谢谢他们了。更让我欣慰的是,几个基本的测试都没发现什么问题,LED/数码管/串口/按键一切工作正常,真是谢天谢地: )

接下来的工作便是移植uCOS-II到这块板子上了,这也是我做这块板子的初衷之一。硬件配置如下:

Atmel89S52 / 8KB SDRAM / 串口 / 4位8段共阳数码管 / 8LED / 4按键输入 / 5v USB供电 / ISP_JTAG / 蜂鸣器(被焊坏了: < )

 

 中午google了一些移植相关文章,主要的参考就是杨屹的那篇移植心得,ms流传甚广。大概两三个月前开始计划这样一个C51+uCOS-II的系统,最初的工作是了解uCOS-II,然后开始学习Protel99,开始硬件的部分。其间一场病让我在医院躺了两个星期,到现在关于uCOS-ii的东西我已忘得差不多了。看过那篇心得以后,我计划下午就杨屹移植好的代码拿到板子上试一下,看看能不能跑起来,结果失败了。然后我又把原来写好的测试程序(一个数码管显示,一个按键查询)修改一下,写成两个任务再测试,依然不行。

整个下午这项工作都没什么进展,这让我有点灰心。晚上看了《Oceans 13》,心情又好了些。我想我可不能就这么算了,应该没什么难的。现在整理一下目前的情况,看看自己知道什么,疑问的有哪些,下一步该怎么做。

uCOS-II是一个小型的RTOS,最关键的是如何实现任务的调度。这一点我大概知道,就是每个任务在执行一些代码后,都会通过某种方式(比如调用OSTimeDly() )来主动放弃对MCU的控制权,这使得OS有机会对多个任务进行调度,在已经就绪的任务中选择优先级最高的那个执行。每个任务都有一个独立的堆栈,用来保存一些重要的状态变量(如PC/寄存器/PSW等),这样,当任务恢复执行的时能够回到前一次中断时的状态——这让每个任务觉得自己是系统中唯一的任务。实现任务的切换,需要明确任务的堆栈如何设计(存放在哪里,保存哪些项目),如何初始化,“现场”(运行状态)如何保护和恢复,需要知道任务切换在何时发生以及怎样发生。这些是我首先需要弄清楚的部分。好吧,争取明天能给自己一个满意的答案。

现在,去放松一下;)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

移植uCOS-II到C51 - 1

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭