. 紧急的任务优先,反应速度要求快速的,如警报。
2. 完成的快的优先
3. 系统中不要经常动态创建和删除任务,所有任务在初始化时创建,且优先级固定不要动态的改变。
4. 系统中不要出现同一个优先级的多个任务,uCosII不支持round robin 时间轮片调度。
5. 用信号灯(semaphore)对设备进行访问时,OSSemPost(), OSSemPend()要成对出现在同一任务中,OSSemCreat()创建时初始值要为1。用信号实现任务同步则不是成对出现,而是出现在不同的任务中。
6. 在中断中不能用导致任务阻塞的函数,如OSSemPend, OSMboxPend,OSQPend
而要用OSSemAccept,OSMboxAccept,OSQAccept.
7. 在系统中有大批量数据要传送时,可有消息传送内存指针和数据长度,这样效率更高。
8. 中断处理函数的时间要短,一般要小于100微秒,如果中断处理的时间超过1毫秒就要用很高优先级的任务来处理。
9. 中断的入口要屏蔽同一中断,防止再次进入。
10. 系统用多任务的方式来提升系统速度,任务分得越细并行的速度越快,但是任务越多系统越复杂,系统堆栈的消耗也越大。
11. 要注意代...

>> 阅读全文

在嵌入式应用中,使用RTOS的最主要原因是提高系统的可靠性,其次是提高开发效率、缩短开发周期。μC/OS-II 是一个基于优先级的抢占式实时内核,支持56 个用户任务,90%的代码使用标准的ANSI C语言书写,程序可读性强,移植性好,代码可固化,可裁剪,非常灵活。C8051F是美国Cygnal公司生产的与51系列兼容的微控制器,流水线指令结构70%的指令的执行时间为1个或2个系统时钟周期。当时钟频率为25MHz时,速度可达25MIPS,是一款不错的片上系统。
1 开发工具和运行环境
实现μC/OS-II的移植,要求所用的C编译器支持混合编程。KEIL C51可为众多的8051派生器件编程。我们选用的是KEIL7.02集成开发环境,仿真板基于C8051F015芯片。
2 移植中所需修改的文件
和CPU相关的文件主要有三个,分别是汇编文件OS_CPU_A.ASM、C语言文件 OS_CPU_C.C和头文件OS_CPU.H。
2.1 OS_CPU.H文件
OS_CPU.H文件中定义了数据类型及与硬件相关的基本信息。其中改动部分如下:
typedef unsigned char OS_STK; /* 堆栈的宽度为8位 */OS_CPU_EXT INT8U IE_SHADOW;#define OS_ENTER_CRITICAL() IE_SHADOW = IE; IE &= 0x7...

>> 阅读全文

(一) uC/OS-II 简介
uC/OS-II是一种基于优先级的可抢先的硬实时内核。自从92年发布以来,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统之上。尤其值得一提的是,该系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于uC/OS-II可以免费获得代码,对于嵌入式RTOS而言,选择uC/OS无疑是最经济的选择。
(二) uC/OS-II 应用程序基本结构
应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-II的应用程序的基本结构以及注意事项。
每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构:
void task ( void* pdata )
{
INT8U err;
InitTimer(); // 可选
For( ;; )
{
// 你的应用程序代码
…….
……..
OSTimeDly(1); // 可选
}
}
以上就是基本结构,至于为什么要写成无限循环的...

>> 阅读全文

(1)实时系统和前/后台系统;前/后台系统:一个大循环,循环查询各种标志位。如果标志位置位,就执行相应的服务程序。标志位就是标志事件的发生,事件响应延时处于不可预测状态。最坏的情况是循环中所有其他的事件服务程序执行完,才响应当前事件。中断服务虽然能即时/优先响应,但是它们和主循环的通讯,也是通过置主循环中相应的标志位来完成的。实时系统(uCOS):整个程序分成一个个看起来好象是并行的任务,每个任务都在等待事件的发生。除了最低优先级任务(在uCOS中是IDLE任务)是死循环以外,其他的任务都不能死循环,只能在驱动事件驱动下工作。任何驱动事件的产生,都使优先级最高的就绪任务运行。任务和任务/任务和中断的通讯,是通过相应事件驱动来完成的。驱动事件:不论是什么系统,CPU不可能一直在工作。CPU的工作是在各种驱动事件的驱动下工作的。CPU在完成一次驱动事件事件服务程序以后,进入IDLE模式等待新的驱动事件的发生。包括实时系统和前/后台系统都是在驱动事件的驱动下运行的。按照uCOS中的观点,驱动事件分为三类:1、事件 (Event)。包括信号量(Semaphores)、事件标志组(Flag)、邮箱(Message Box)、邮箱队列(Message Queue)。2、时间(Time T...

>> 阅读全文

我通常喜欢使用不同公司的很离奇的软件工具(比如编译器,汇编程序,连接器,导入器等)。微软的Visual Studio风格开发环境是我进行项目开发时特别喜欢的开发平台,因为它支持不同卖方的多处理器和多工具链接的功能。
很多嵌入式工具卖方都将他们的编译器工具封装在IDEs,但是很多这样的编辑器都有日期限制,并且提供少量的语法强调功能。这样它们就缺乏达到艺术性的级别。好的编辑器支持先进的代码浏览,导航,代码自动完成,并且具有自保存功能。我最喜欢的是放弃卖方支持的IDEs,然后以命令行工具工作和使用自己的IEDs。
基于此,这里我讲述当前使用的三种工具,我觉得这三种工具非常有用。请试试它们——他们可以免费下载和使用。
1. 一个编辑器最我的列表中,最重要的工具是Visual SlickEdit。这是一个功能强大的编辑器,具有先进的代码浏览,导航,代码自动完成等特性。Visual SlickEdit UI具备与Microsoft Visual Studio相似的布局,但是它比Microsoft Visual Studio显得朴实,但Visual SlickEdit UI添加了独特的、非常强大的编辑和开发特性。而且你可以自定义这些功能。
Visual SlickEdit绝大部分有用的特性是它的独...

>> 阅读全文

我终于将uC/OS在ADuC845单片机上移植成功,回顾整个移植过程有不少体会.首先要完整了解你所有处理器的资源和寄存器的配置.在对整个硬件资源了解清楚后再根据uC/OS所需要的单片机资源进行分配(其实现在网上大部分的程序都或多或少需要进行修改才能运行在自己的硬件系统中.)在完成这部分后,应该开始了解uC/OS了,在移植过程中,需要处理的文件有:
A、与处理器无关的文件:
OS_CORE.C
OS_FLAG.C
OS_MBOX.C
OS_MEM.C
OS_MUTEX.C
OS_Q.C
OS_SEM.C
OS_TASK.C
OS_TIME.C
uCOS_II.C
uCOS_II.H
这些文件在c51的移植过程中,只需要给函数加上重入属性即可。
B、与应用相关的文件:
INCLUDES.H: 包含C51的标准库头文件;对”pdata”等c51关键字的重定义
OS_CFG.H: “OS_TICKS_PER_SEC”、“ OS_FLAGS”注意可能需要修改。
C、与处理器相关的文件:
OS_CPU.H: 数据类型、关中断方法、任务堆栈方向、任务切换的宏定义都需要修改。
OS_CPU_A.ASM: OSStartHi...

>> 阅读全文