嵌入式实时操作系统uCOS-II

合集下载

实时操作系统UCOS-II,学会RTOS给你的身价增值

实时操作系统UCOS-II,学会RTOS给你的身价增值

实时操作系统UCOS-II,学会RTOS给你的身价增值如果,你最近关注一些嵌入式招聘职位描述,你可能会经常看到看到使用过uCOS、Vxworks、QNX等RTOS者优先。

随便打开一个20K的嵌入式开发工作职责:你会发现熟悉RTOS的开发、移植、剪裁真的很吃香!今天,我们就来介绍一下实时操作系统UCOS-II。

一、嵌入式操作系统概览嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。

并且可以充分利用硬件资源,如在单任务时(大循环结构,如大部分51程序)遇到delay函数时,CPU在空转。

而在多任务系统,遇到delay或需等待资源时系统会自动运行下一个任务,等条件满足再回来运行先前的任务,这样就充分利用了CPU,提高了效率。

uC/OS操作系统与裸机程序的最大不同点就在于uC/OS有任务调度,可以根据任务的重要程度(优先级)优先执行重要的任务,从而确保能及时处理最重要的数据。

(所以对于一个系统有必要使用OS的判断是能否划分一个个的任务,并且各任务间的耦合很小)可以思考下裸机程序中断的时候发生的过程。

利用堆栈可以很自由的在A、B中切换,如果切换足够快,A、B看以来好像同时在执行,这就是并行,A、B就是任务。

如果这个切换操作放到定时器函数中来做,就可以严格按照时间来切换。

另外,各个任务之间有存在一定的关系,有逻辑上的先后等,必须引进全局的结构体、变量来标记一些信息,全局的这些数据是不会被释放的,所以所有的任务可以去通过读、写这些数据来实现各个程序块交流信息,实现所谓的同步、互斥。

这就是操作系统的原理,而这些不同的通信方式按功能细分就成事件管理、内存管理等。

嵌入式实时操作系统_uCOSII

嵌入式实时操作系统_uCOSII

uC/OS-II北京邮电大学计算机学院 邝 坚 2011年10月教材及参考文献《嵌入式实时操作系统 uC/OS-II(第2 版)》,Jean brosse, 邵贝贝, 北航出版 社, 2003年1月uC/OS-II的主要特点实时性可确定:绝大多数系统服务的执行时间具有可确定 性,不依赖于用户应用程序Task数目的多少。

多任务、独立栈:最多64个Task,基于优先级抢占调度方 式。

每个Task有自身独立的堆栈。

可裁减性:系统最小可裁减到几K到十几K,这种裁减还可 以做到基于函数级。

可移植性:与CPU体系结构相关部分用汇编编写,其他功 能组件CPU无关。

可靠、稳定性:由整个系统设计来保证,市场验证。

美国 联邦航空管理局(FAA)认证。

开源代码:内核约5500行C代码。

可固化:面向嵌入式应用。

系统功能实时内核 任务管理 时间管理 信号量、互斥信号量管理 事件标志组管理 消息邮箱管理 消息队列管理 内存管理 …Targets x86 68k PPC CPU32 i960 SPARC ARM MIPS XScale …Typical development configurationEthernetRS-232Development HostTargetTypical scenario:1. Boot target. 4. Download object module. 2. Attach target server. 5. Test & Debug. 3. Edit & compile. 6. Return to 3 or 1 as necessaryMulti-TaskingTask是代码运行的一个映像,从系统的角 度看,Task是竞争系统资源的最小运行单 元。

Task可以使用或者等待CPU、I/O设备 及内存空间等系统资源,并独立于其它的 Task,与它们一起并发运行。

Task OperationPriority-base preemptive scheduling(基 于优先级的抢占式调度)Task调度器上锁和开锁给调度器上锁函数OSSchedlock() 用于临 时禁止任务调度,直到任务完成后调用给 调度器开锁函数OSSchedUnlock()为止。

第九讲 uCOS-II嵌入式实时操作系统

第九讲 uCOS-II嵌入式实时操作系统

第九讲 第九讲 系统函数 uC/OS-II 嵌入式实时操作系统
1、uC/OS-II简介 2、系统函数 3、任务组成 4、任务管理 5、时钟和中断 6、内存管理 7、移植方法 8、移植实例
9.2 9.2.1 总体组成 uC/OS-II的系统函数
1)uC/OS-II的组成: 与处理器无关的代码; 与
9.1 uC/OS-II 简介 9.1.3 应用范围
3)uC/OS-II的应用范围 • uC/OS已经移植到了很多CPU上,例如:
AnalogDevices的AD21xx; ARM的ARM7/ ARM9等; Hitachi的64180、H8/3xx和SH系列; Intel的80x86、Pentium、PentiumII、 8051、8052、MCS-251、80196等; Motorola的PowerPC、68K、CPU32、 ColdFire、M.Core、68HC系列; Siemens的80C166和TriCore; TexasInstruments的TMS320等;
9.3 9.3.1 任务组成 uC/OS-II的任务组成
1) 任务组成
9.3 9.3.2 任务状态 uC/OS-II的任务组成
2) 任务的状态:睡眠、就绪、运行、等 待和中断服务5种状态。
9.3 uC/OS-II的任务组成 9.3.3 任务优先级
3)任务的优先级 uC/OS-II 按硬件实时任务的可剥夺型 内核来设计的,因此每个任务必须要有一 个唯一的优先级,用于表明该任务在抢夺 微处理器时所具有的优先权。 uC/OS-II规定应用程序最多包含64个 任务,即最多64个优先级。
9.2 9.2.1 应用相关 uC/OS-II的系统函数
2)应用程序有关的部分 • OS_CFG.H: 配置文件

嵌入式实时操作系统ucosii课后答案

嵌入式实时操作系统ucosii课后答案

第一章1.什么是操作系统?它应具备什么功能?操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。

功能:1.计算机硬件的封装和扩充;2.计算机资源的管理,包括处理器管理、存储器存储空间管理、外部输入输出(I/O)设备管理、文件管理、网络和通信管理、提供用户接口。

2.简述嵌入式操作系统与普通操作系统的区别。

嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,简称嵌入式系统。

嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。

3.什么是实时系统?对实时系统有什么要求?如果一个系统能及时响应外部事件的请求,并能在规定的时间内完成对事件的处理,这种系统称为实时系统。

对实时系统的两个基本要求:1.实时系统的计算必须产生正确的结果,称为逻辑或功能正确。

2.实时系统的计算必须在预定的时间内完成,称为时间正确。

4.什么是可剥夺内核?当一个进程正在被处理器所运行时,其他就绪进程可以按照事先规定的规定的规则,强行剥夺正在运行进程的处理器使用权,而使自己获得处理器使用权并得以运行。

5.计算:RM 等三种算法;实时进程的可调度性。

一个事件发生周期为T =200ms ,一般需要运行50ms 才完毕。

试按RM 算法确定该进程的优先级别prio 。

答:如果取k=1,根据T=200ms=0.2S ,则T k prio1=结果:prio=5。

假如有三个同时发生的周期型进程:进程1,进程2,进程3,周期分别为P1=70ms ,P2=80ms ,P3=30ms ,它们完成任务的时间分别为:C1=20ms ,C2=15ms ,C3=10ms 。

嵌入式实时操作系统uCOS-II(就绪算法)

嵌入式实时操作系统uCOS-II(就绪算法)

OSTCBTbl[1]
OSTCBStkPtr
OSTCBTbl[0]
OSTCBStkPtr
OSTCBNext
OSTCBTbl[2]
OSTCBStkPtr OSTCBNext
OSTCBTbl[n]
OSTCBStkPtr OSTCBNext NULL
OSTCBNext
NULL
20
任务控制块数组与指针
OSTCBFreeList
OSTCBPrioTbl[ ]
[0] [4] [5]
NULL
… &OSTCBTBL[1] &OSTCBTBL[2]

[OS_LOEEST_PRIO] &OSTCBTBL[0]
OS_TaskIdle
15
任务控制块数组与指针
OSTCBPrioTbl[
]
任务的优先级资源由操作系统提供,uc/OS-II 有64各优先级,优先级的高低按照编号从0(最高) 到63(最低)排序。由于用户实际使用的优先级的 个数通常少于64个,所以为节约系统资源,可以通 过定义系统常量OS_LOWEST_PRIO的值来限制优 先级编号的范围。
OSTCBTbl[2]
OSTCBStkPtr OSTCBNext
OSTCBTbl[n]
OSTCBStkPtr OSTCBNext NULL
NULL
13
任务控制块数组与指针
OSTCBPrioTbl[
]
任务控制块优先级表,专门用来存放指向各任 务控制块的指针,并按任务的优先级别将这些指针存 放在数组的各个元素里,这样系统在访问一个任务的 任务控制块时,就不必遍历任务控制块链表了。只要 知道任务的优先级,就可以迅速地从该数组中找到它 的任务控制块。

嵌入式实时操作系统uCOSII

嵌入式实时操作系统uCOSII

操作系统中经常使用 的数据结构(堆栈)
按规主主程照则要先 要 序组用用模织数进于块的组后的数来出嵌据实套结现运构行
什么是多任务系统
处理器如何进行程序的
切换? 并简单发地:说,由就同是一能用个一处个理处器理并轮器发示过换意程图地
运并行发多(个注程意序,。不或是者同说时是由!多)个
程地运序行轮多班个地程占序的用计处算理机器管理这系个统资。源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。
什么是计算机操作系统
(Operating System,OS)
•操作系统是一种为应用 程序提供服务的系统软 件,是一个完整计算机 系统的有机组成部分。
•从层次来看,操作系统 位于计算机硬件之上, 应用软件之下。所以也 把它叫做应用软件的运 行平台。
计算机操作系统的作用
从•机它用硬在件户计系算的统机之角应间用度,程来屏序蔽看与了计,计算 它算机就硬是件工一作大的堆一些函细数节, (用并的A对管户P系理I可和。统中以系的调统资用源函进(数行普有)效,
小结
系统是通过把待运行程 序的地址赋予程序计数 器PC来实现程序的切换 的。
任务运行时与 处理器之间的关系
运行环境包括了两部分: 处理器中的运行环境和
内存中的处运理行器环境
PC
寄存器组
内存 任务代码
SP 处理器通过两个指针寄存
任务堆栈
器(PC和SP)来与任务 程序运行环境 代码和任务堆栈建立联系
3。其中的所有元素名 a+2 a[2]
3。缺点:占
称都相同,但每个元 a+3 a[3] 素都有一个编号;
用连续空间大
… …
4。元素名去掉编号
(下标),得到的是 a+9 a[9]

嵌入式实时操作系统uCOS-II(高清)

嵌入式实时操作系统uCOS-II(高清)

第一章:范例在这一章里将提供三个范例来说明如何使用 µC/OS-II。

笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用 µC/OS-II。

在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。

这些例子曾经用Borland C/C++ 编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。

这些代码实际上是在Intel Pentium II PC (300MHz)上运行和测试过,Intel Pentium II PC可以看成是特别快的80186。

笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。

用户只需要简单地编译、链接和执行。

其次,使用Borland C/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86 CPU兼容。

1.00 安装 µC/OS-II本书附带一张软盘包括了所有我们讨论的源代码。

是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。

至少需要5Mb硬盘空间来安装uC/OS-II。

请按照以下步骤安装:1.进入到DOS(或在Windows 95下打开DOS窗口)并且指定C:为默认驱动器。

2.将磁盘插入到A:驱动器。

3.键入 A:INSTALL 【drive】注意『drive』是读者想要将µC/OS-II安装的目标磁盘的盘符。

INSTALL.BAT 是一个DOS的批处理文件,位于磁盘的根目录下。

它会自动在读者指定的目标驱动器中建立\SOFTWARE目录并且将uCOS-II.EXE文件从A:驱动器复制到\SOFTWARE并且运行。

µC/OS-II将在\SOFTWARE目录下添加所有的目录和文件。

uCOS-II嵌入式操作系统介绍与移植

uCOS-II嵌入式操作系统介绍与移植

退出/进入临界区函数 ARMDisableInt/ARMEnableInt

1、直接操作CPSR的I、F位
2、 ARMDisableInt将CPSR的I、F位设置为1, 关闭所有中断


3、 ARMEnableInt将CPSR的I、F位设置为0, 打开中断
任务级上下文切换函数 OS_TASK_SW
ARM处理器相关宏定义

1、退出临界区

#defineOS_ENTER_CRITICAL() ARMDisableInt()

2、进入临界区

#defineOS_EXIT_CRITICAL() ARMEnableInt()
堆栈增长方向


1、堆栈由高地址向低地址增长,这个也 是和编译器有关的,当进行函数调用时, 入口参数和返回地址一般都会保存在当 前任务的堆栈中,编译器的编译选项和 由此生成的堆栈指令就会决定堆栈的增 长方向。 #define OS_STK_GROWTH 1


1、该函数当任务因为被阻塞而主动请求cpu 调度时被执行,由于此时的任务切换都是在 非异常模式下进行的,因此区别于中断级别 的任务切换。 2、它先将当前任务的cpu现场保存到该任务 堆栈中,然后获得最高优先级任务的堆栈指 针,从该堆栈中恢复此任务的cpu现场,使之 继续执行。这样就完成了一次任务切换。
多任务应用程序、调用函数ARMTargetInit初始化ARM处理器; 2、调用OSInit进行操作系统初始化; 3、调用OSTaskCreate函数两个任务:TaskLED 和TaskSEG; 4、调用ARMTargetStart函数启动时钟节拍中断; 5、调用OSStart启动系统任务调度。
OS_CPU_A.S的移植
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式实时操作系统 μC/OS-II讲座
北 华 大学 任哲
2006 广州
为什么要学习μC/OS-II
一.凡从事嵌入式系统开发工作的人,必须 对嵌入式操作系统有足够的了解。
二.对于初学者,从μC/OS-II开始是个明智的选择。 1. μC/OS-II麻雀虽小,却五脏基本全(它是个微内 核)。 2.可以学习实时系统的一些编程技巧。 3.可以把在学校中学到的操作系统抽象概念具体化。 4.具有很强的实用性。 5.学习数据结构应用的好例子。
操作系统中经常使用 的数据结构(堆栈)
按规主主程照则要先 要 序组用用模织数进于块的组后的数来出嵌据实套结现运构行
什么是多任务系统
处理器如何进行程序的
切换? 并简单发地:说,由就同是一能用个一处个理处器理并轮器发示过换意程图地
运并行发多(个注程意序,。不或是者同说时是由!多)个
程地运序行轮多班个地程占序的用计处算理机器管理这系个统资。源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。
讲座的主要内容
一.计算机操作系统的基本概念 二.操作系统中常用的数据结构 三.并发操作系统的概念 四.任务的要素 五. μC/OS-II的任务管理(任务调度) 六. μC/OS-II的中断和时钟 七. μC/OS-II的任务的同步与通信 八. μC/OS-II的存储管理 九.硬件抽象层和测试台
什么是计算机操作系统
同,但每个元素ቤተ መጻሕፍቲ ባይዱ有一个编号; a+1
4。元素名去掉编号(下标), 得到的是数组名,数组名是个
a+2
指针。
a+3
int a[10] a[0] a[1] a[2] a[3]
使用上的特点:
1。分类存放; 2。检索速度快且恒 定; 3。缺点:占用连续 空间大
… …
a+9
a[9]
应用:记录同类事物的表
操作系统中经常使用 的数据结构(位图)
PCPCPCPC
程程序序
SP
复复制制
也任就务运是行说环,境任的务切的换切换是 由操作系统的调度器按某
寄存器组 当则处虚处需把再理当任虚处S拟理虚P要任把器处S需务拟理器虚处P器S拟中务另理要的P器S复拟理P止对一器运虚制器当应个行拟到复处前的需某处内制理任虚要个理存到器务拟运任器实中时处行务复际,理的时制处任就到理务把实器的该际中虚拟
它算机就硬是件工一作大的堆一些函细数节,
(用并的A对管户P系理I可和。统中以系的调统资用源函进(数行普有)效,
操 作
应用软件 高级语言的接口
通•通调过用提供或函系数(统应调用用程序)接 它口序的(们设AP来计I)人对)员,系得从统以而在资使一应源个用友程

用汇编语言编写


硬件抽象层
计算机硬件
好的进平台行上操进行作应。用程序的
a[10] (可以记录80个事物的状态)
位图是数组的一种特殊应

a
a+1
a+2
a+3
D7 D6 D5 D4 D3 D2 D1 D0
a[0] 1/0 a[1] a[2] a[3]
… …
登记表 应用:
a+9
a[9]
操作系统中经常使用 的数据结构(结构)
1。不同数据 类型数据的集 合; 2。占用连续 内存空间;
多任务时的问题
处理器 PC
寄存器组 SP
当有多内个存任务时,处理器中的运 行内环存境应该怎么办? 内存

任务代码 任务代码 任务代码
任务堆栈 任务堆栈 任务堆栈
程序运行环境
多任务时任务与处理器
之间关系的处理
处理器
调度器
在内存中为每个任务创建 一个虚拟的处理器(处理
器部分的运行环境
PC 寄存器组
复制
程序的切换(两句话)
= PC 深进从序就处它P行刻C此占占理干程地是可有有器啥序理个以了了是,切解指知处P个它换P路CC道理傻就动,器是,器瓜干作哪,理哪。,啥的个它解个。P关程指C系程键序让向统。哪
儿,处理器就去哪儿。
•如数何据操传作送P指C令
•栈所P指不令子C弹谓令同是程出切:的不序目)换计同返标就算的回地是机。指址:类令型(的由指堆 •中断服务程序返回指令 (由堆栈弹出)
(Operating System,OS)
•操作系统是一种为应用 程序提供服务的系统软 件,是一个完整计算机 系统的有机组成部分。
•从层次来看,操作系统 位于计算机硬件之上, 应用软件之下。所以也 把它叫做应用软件的运 行平台。
计算机操作系统的作用
从•机它用硬在件户计系算的统机之角应间用度,程来屏序蔽看与了计,计算
小结
系统是通过把待运行程 序的地址赋予程序计数 器PC来实现程序的切换 的。
任务运行时与 处理器之间的关系
运行环境包括了两部分:处理器 中的运行环境和内存中的运行环
境 处理器
PC
内存 任务代码
寄存器组
SP
处理器通过两个指针寄存器(PC
任务堆栈
和SP)来与任务代码和任务堆栈
建立联系并运行它
程序运行环境
种规则来进行这两个复制
工作
虚要拟建处立理一器个概念:具有
控制块的程序才是一个 虚拟处理器应该存储的主要信息:
任务控制12。。块程任结序务构的堆的断栈主点指要地针成址(员(SPP)C)
任务内控存制块
struct Student{ int age; char*name; char sex; };
使用上的特点:
1。不分类存放, 但用来描述同一事 物; 2。检索速度快且 恒定;
应用:通讯录中的一条记录、 工具箱、厨房等等
操作系统中经常使用 的数据结构(链表)
struct Student{ Student*next int age; char*name; char sex; };
1。同数据类型数据的集合; 2。不占用连续内使存用空上间的。特点:
两个元素的链表
next
next
1。分类存放,但空间上不连续(不需要大量的连 续存储空间);
应用:存放大量的较大 2。检索速度慢,且耗费的时间不固定;
的表,类似档案柜
操作系统中经常使用 的数据结构(队列)
按照先进先出 的可规以主则用要组数用织组于的也对数可象据以的结用排构链队 表来实现
设计和开发,大大地提高了
应用程序的开发效率。
计算机操作系统的功能
任务管理
存储管理 存储
任务表
分配表
文件管理
表 处理总器的之管理,需要一大堆 文件
目录
操作系统
网络和通信的 管理
设备表
I/O设备管理
操作系统中经常使用 的数据结构(数组)
数组
1。同一数据类型数据的集合;
2。占用连续内存空间;
a
3。其中的所有元素名称都相
相关文档
最新文档