Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2012769
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: C/C++

2010-03-22 20:29:34

几天前,受到一个朋友的介绍,开始玩起了uc/os-II。于是开始看书查资料,还特意到他的官方网站上面下载了源码包。看起英文文档,一开始用的是IAREW for avr,后来又试过ICC AVR ,WINAVR.
在试了网上很多的别人移植成功的程序后,都没有成功。最后找到了一个用Winavr编译的程序,硬件平台是atmega16L。特转上来供大家参考:
 
文件: uCOS-II+在+AVR+上的移植.rar
大小: 79KB
下载: 下载
虽然不是我写的程序,但是总有一天,我自己一定要靠自己把uc/os-II移植到各种各样的单片机中去!

传统的前后台方式,就是把需要处理的每一项任务顺序排列,循环执行;同时,最重要的任务由中断处理。这种方式对于简单应用,是完全可以胜任的。需要注意的就是中断处理要迅速,尽可能简单。即使需要执行较长程序,也应放在主程序循环之内,而通过中断中置标志的形式调用。前后台方式对复杂应用,就可能带来异常。比如,一个任务的处理时间非常长,并且处理时间不是恒定的;或者,一个任务进入死循环无法退出。而且,一旦程序改变,增加功能,那么之前许多正常情况都可能出现新问题。所以,前后台方式不是一种最好的机制。看到别人说的话,一旦学习掌握了实时系统嵌入,那么,就不会再回到前后台方式编程了。
  实时系统,其基本理论就是将CPU运行按照时间片分配给每个任务,任务按照优先级次序排队。一个时间片到来就执行最高的、已经就绪的任务。系统的内核可以移植到不同的CPU之上,并且可以选择,也就是裁剪,只留下应用所需要的部分。这样系统占用的资源较少,运行也更稳定。
  uC/OS-II的内核有2部分组成。一部分与CPU无关,一般不需要修改;一部分则完全取决于所移植的CPU或MCU或MPU或ARM,需要修改或者自己编程代码。当然这个工作并复杂,相比较,还是前一部分代码的理解更重要。


修改或者编写需要的代码,当然需要参考。就拿最老版本开始吧。附件是uCOS-II的v2.52版本,支持x86的源码。SOURCE目录是与CPU无关的内核文件;Ix86L是与CPU有关的内核文件;EX1_x86L等目录是例程。
其中,需要修改和编写的文件包括:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM,INCLUDES.H,OS_CFG.H,以及自己的应用程序APP.C。
OS_CPU.H:与CPU有关的头文件
OS_CPU_C.C,OS_CPU_A.ASM:与CPU有关的处理函数
OS_CFG.H:内核裁剪选择
INCLUDES.H:为了方便,将全部头文件打包了

下面开始逐个分析每个文件。

阅读(1767) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~