µC/OS-II学习笔记(二) 实时系统概念

原创 2007年09月15日 11:39:00

1.       有两种类型的实时系统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成。在硬实时系统中,各任务不仅要执行无误而且要做到准时。

2.       前后台系统: 应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。后台也可以叫做任务级前台也叫中断级

3.       可重入型函数: 可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量予以保护。以下技术之一即可使不可重入函数具有可重入性:

l          把变量定义为局部变量

l          调用函数之前关中断,调动后再开中断

l          用信号量禁止该函数在使用过程中被再次调用

4.       优先级反转: 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。为防止发生优先级反转,内核能自动变换任务的优先级,这叫做优先级继(Priority inheritance)

5.     互斥条件:实现任务间通讯最简便到办法是使用共享数据结构。特别是当所有到任务都在一个单一地址空间下,能使用全程变量、指针、缓冲区、链表、循环缓冲区等,使用共享数据结构通讯就更为容易。虽然共享数据区法简化了任务间的信息交换,但是必须保证每个任务在处理共享数据时的排它性,以避免竞争和数据的破坏。与共享资源打交道时,使之满足互斥条件最一般的方法有:

l          关中断(μC/OS-Ⅱ在处理内部变量和数据结构时就是使用的这种手段)

l          使用测试并置位指令

l          禁止做任务切换

l          利用信号量

6.     信号量:信号量用于:

l          控制共享资源的使用权(满足互斥条件)

l          标志某事件的发生

l          使两个任务的行为同步

对信号量只能实施三种操作:

l          初始化(INITIALIZE),也可称作建立(CREATE)

l          等信号(WAIT)也可称作挂起(PEND)

l          给信号(SIGNAL)或发信号(POST)

这是我自己写的验证信号量的部分代码:

void task_one(void* pdata);

void task_two(void* pdata);

 

OS_EVENT   *tasktwo;

#include "includes.h"

 

GUI_Init();

VCInit();                                                    //初始化一些变量

OSInit();

timeSetEvent(OS_TICKS_PER_SEC, 0, OSTickISR, 0, TIME_PERIODIC);    //产生节拍

tasktwo  = OSSemCreate(0); 

 

OSTaskCreate(task_two, 0, &TaskStk[7][TASK_STK_SIZE-1], 1);

OSTaskCreate(task_one, 0, &TaskStk[8][TASK_STK_SIZE-1], 2);

 

OSStart();

 

 

7.       使用实时内核的优缺点: 实时内核也称为实时操作系统或RTOS它的使用使得实时应用程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务,RTOS使得应用程序的设计过程大为减化。使用可剥夺性内核时,所有时间要求苛刻的事件都得到了尽可能快捷、有效的处理。通过有效的服务,如信号量、邮箱、队列、延时、超时等,RTOS使得资源得到更好的利用。如果应用项目对额外的需求可以承受,应该考虑使用实时内核。这些额外的需求是:内核的价格,额外的ROM/RAM开销,24百分点的CPU额外负荷。

 

《嵌入式实时操作系统µC/OS-II》学习笔记(一)

引子这本书,早在两年前毕业,一位一起进公司的好友就买了,不过一直没看,翻了翻目录,似乎工作中根本用不到,抱着一种若不能学以致用,则学了也很难深入的想法,一直也就没看。直到在上期《程序员》上看到推荐,才...
  • xylophone21
  • xylophone21
  • 2006年08月27日 19:45
  • 2081

uc/os-ii学习笔记(一)之实时系统概念

不可剥夺型内核   可剥夺型内核 挂起:当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,更高优先级的任务立刻得到了CPU的使用权。...
  • farrellcn
  • farrellcn
  • 2011年04月19日 09:59
  • 297

μC/OS-II基本原理简介

μC/OS-II,意为“微控制器操作系统版本”。其不仅提供了一个完整的嵌入式实时 内核的源代码,而且对这些代码的细节进行了详尽的解释。他不仅告诉读者该实时内核是怎么写的,还解释了为什幺这么写,而且该实...
  • softn
  • softn
  • 2016年07月12日 22:15
  • 425

移植µC/OS-Ⅱ

第八章          移植µC/OS-Ⅱ    这一章介绍如何将µC/OS-Ⅱ移植到不同的处理器上。所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的µC/OS-...
  • menuconfig
  • menuconfig
  • 2007年07月31日 14:13
  • 2077

μcosii中信号量的理解

1. 信号量的理解 (1)uc/os-ii的信号量是由两个部分组成:一部分是16位的无符号整型信号量的计数值(0~65535);另一部分是等待该信号量的任务组成的等待任务表。(另外参考事件控制块...
  • lkitaly
  • lkitaly
  • 2015年07月12日 20:37
  • 431

μCOS-II源码文件之OS_CORE.C

/* *************************************************************************************************...
  • chaunceyzhu
  • chaunceyzhu
  • 2012年07月03日 20:20
  • 1378

μCOS-ii初学心得

μC/OS-II 是一个源代码公开、可移植、可裁剪的实时多任务操作系统,具有稳定可靠、实时性好等优点,是专门针对微处理器和微控制器设计的实时内核,它的内核可以做到很小,很适合在单片机系统上移植。移植了...
  • softn
  • softn
  • 2016年07月12日 22:13
  • 767

【zz】μC/OS-II内核架构解析

原文转自:http://blog.ednchina.com/windy123/1969777/message.aspx 1. uC/OS-II文件结构 2. uC/OS-II组成部分    uC/OS...
  • ssduer
  • ssduer
  • 2011年01月01日 15:45
  • 2714

µC/OS-II学习笔记(一) 基本知识

1.       INCLUDE.H是主头文件2.       不依赖于编译的数据类型:它是针对80x86的实模式,在大模式下编译.3.       全局变量 在.H头文件中  ...
  • F4427
  • F4427
  • 2007年09月15日 10:50
  • 441

Micrium 开放了µC/OS-III源代码

Micrium 开放了µC/OS-III源代码  发布时间:2011-8-19 9:27:29   发布方:Dave   点击数:1641 高品质嵌入式系统...
  • autumn20080101
  • autumn20080101
  • 2013年07月25日 15:29
  • 1494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:µC/OS-II学习笔记(二) 实时系统概念
举报原因:
原因补充:

(最多只允许输入30个字)