嵌入式实时操作系统UCOS原理与实践分析和学习指导

合集下载

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

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

INT8U OSMemPut (OS_MEM *pmem, void *pblk); pmem :内存区域控制块的指针 pblk :将被释放的内存块的指针。
INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);
消息队列(queue)
OS_EVENT *OSQCreate (void **start, INT8U size); start :消息内存区的首地址 size:消息内存区的大小;
uC/OS-II 可以运行在微控制器上的抢占式实时多任务内核。 要实现多任务机制,那么目标 CPU 必须具备一种在运行期更改 PC 的途径,否则无法做到切 换。不幸的是,直接设置 PC 指针,目前还没有哪个 CPU 支持这样的指令。但是一般 CPU 都 允许通过类似 JMP,CALL 这样的指令来间接的修改 PC。我们的多任务机制的实现也正是基 于这个出发点。事实上,我们使用 CALL 指令或者软中断指令来修改 PC,主要是软中断。但 在一些 CPU 上,并不存在软中断这样的概念,所以,我们在那些 CPU 上,使用几条 PUSH 指令加 上一条 CALL 指令来模拟一次软中断的发生。 在 uC/OS-II 里,每个任务都有一个任务控制块(Task Control Block),这是一个比较复杂的数据 结构。在任务控制快的偏移为 0 的地方,存储着一个指针,它记录了所属任务的专用堆栈地 址。事实上,在 uC/OS-II 内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。这点要求程序 员在他们的程序中保证。一般的做法是把他们申明成静态数组。而且要申明成 OS_STK 类 型。当任务有了自己的堆栈,那么就可以将每一个任务堆栈当前位置,记录到前面谈到的任 务控制快偏移为 0 的地方。以后每当发生任务切换,系统必然会先进入一个中断,这一般是通 过软中断或者时钟中断实现。然后系统会先把当前任务的堆栈地址保存起来,紧接着恢复要 切换的任务的堆栈地址。由于所要切换的任务堆栈里一定也存的是地址(还记得我们前面说 过的,每当发生任务切换,系统必然会先进入一个中断,而一旦中断 CPU 就会把地址压入堆栈), 这样,就达到了修改 PC 为下一个任务的地址的目的。

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告

嵌入式操作系统实验报告系别:班级:学号:姓名:2013.12实验一嵌入式开发环境的建立一、实验目的通过此实验系统,读者可以了解嵌入式实时操作系统uC/OS-II 的内核机制和运行原理。

本实验系统展示了uC/OS-II 各方面的管理功能,包括信号量、队列、内存、时钟等。

在各个实验中具体介绍了uC/OS-II 的相关函数。

读者在做实验的同时能够结合理论知识加以分析,了解各个函数的作用和嵌入式应用程序的设计方法,最终对整个uC/OS-II 和嵌入式操作系统的应用有较为清楚的认识。

二、实验步骤1. 安装集成开发环境LambdaEDU集成开发环境LambdaEDU 的安装文件夹为 LambdaEDU ,其中有一个名为“Setup.exe”的文件,直接双击该文件便可启动安装过程。

具体的安装指导请看“LambdaEDU 安装手册.doc”文件。

当 LambdaEDU 安装完毕之后,我们看到的是一个空的界面,现在就开始一步一步地将我们的实验项目建立并运行起来。

2. 建立项目为了我们的实验运行起来,需要建立1 个项目基于x86 虚拟机的标准应用项目。

通过点击“文件”、“新建”、“项目”开始根据向导创建一个项目。

在随后出现的对话框中选择“Tool/标准应用项目”,点击下一步,开始创建一个标准的可执行的应用程序项目。

在随后出现的对话框中填入项目名称“ucos_x86_demo”。

点击“下一步”。

选择“pc386 uC/OS-II 应用(x86)”作为该项目的应用框架。

点击“下一步”选择“pc386_elf_tra_debug”作为该项目的基本配置。

点击“完成”。

新创建的项目“ucos_x86_demo”将会被添加到项目列表。

src 文件夹下保存了该项目中包含的源文件。

ucos2 文件夹中包含了移植到x86 虚拟机的全部代码。

init.c 文件是基于ucos2和本虚拟机的一个应用程序。

在进行ucos2 内核实验中,只需要替换init.c 文件,即可。

嵌入式实时操作系统UC教案

嵌入式实时操作系统UC教案

嵌入式实时操作系统UC教案嵌入式实时操作系统UC/OS-II原理及应用第1章嵌入式实时操作系统的基本概念1.1 计算机操作系统1.1.1 什么是计算机操作系统1、计算机体系构架2、操作系统的作用:1)对计算机系统的主要资源进行管理;2)向计算机用户提供相关服务;3)隐藏计算机硬件,为应用程序提供透明的操作环境。

1.1.2 操作系统的作用和功能1、操作系统的作用为应用程序提供一个界面友好,性能稳定、安全,效率高,操作方便的虚拟计算机2、操作系统的功能1)处理器管理2)存储管理3)设备管理4)文件管理5)网络和通信管理6)提供用户接口1.2 嵌入式系统和嵌入式操作系统1.2.1 嵌入式系统的基本概念1、什么是嵌入式系统2、嵌入式系统的发展历程微型计算机→单板机→单片机→单片系统3、嵌入式系统的特点1)专用性强2)可裁剪性好3)实时性与可靠性好4)功耗低1.2.2 嵌入式操作系统1、什么是嵌入式操作系统运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件2、嵌入式操作系统的特点1)微型化2)可裁剪性3)实时性4)高可靠性5)易移植性3、实时操作系统能及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,这种操作系统称为实时操作系统。

4、实时操作系统的基本要求1)实时系统的计算必须产生正确的结果。

(逻辑或功能正确)Logical or Function Correctness)2)实时系统的计算必须在预定的时间内完成。

(时间正确)Timing Correctness5、实时操作系统的分类1)硬实时操作系统(极严格的时间内完成实时任务)2)软实时操作系统(系统完成实时任务的截止时间要求不十分严格)1.2.3 实时操作系统需要满足的条件1、实时操作系统应满足的条件1)必须是多任务操作系统2)任务的切换时间与系统中的任务数无关3)中断延迟的时间可预知并尽可能短1.2.4 嵌入式系统的任务及嵌入实时操作系统1、嵌入式系统的任务由于嵌入式系统所完成的是对一个装置或设备的控制任务,任务的功能相对固定,因此在一般情况下嵌入式实时操作系统所支持的典型任务应该是一个无限循环结构。

嵌入式实时操作系统μCOS原理与实践1

嵌入式实时操作系统μCOS原理与实践1

4、文件管理:
对外存中信息进行管理的文件系统
关于μC/OS-II
•UCOSII 是一个可以基于ROM 运行的、可裁减的 、抢占式、实时多任务内核,具有高度可移植性, 特别适合于微处理器和控制器,是和很多商业操作 系统性能相当的实时操作系统(RTOS)。为了提供 最好的移植性能,UCOSII 最大程度上使用ANSI C 语言进行开发,并且已经移植到近40 多种处理器 体系上,涵盖了从8 位到64 位各种CPU(包括DSP) 。
• 事件
两个任务通过事件进行通讯的示意图所示:
注释:任务1 是发信方,任务2 是收信方。任务1 负责把信息发送到 时间上,这项操作叫做发送事件。任务2 通过读取事件操作对事件进 行查询,如果有信息则读取,否则等待。读事件操作叫做请求事件。
事件控制块(ECB)
• 为了把描述事件的数据结构统一起来,UCOSII 使用叫做事件控制 块(ECB)的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息 队列这些事件。事件控制块中包含包括等待任务表在内的所有有关 事件的数据,事件控制块结构体定义如下: • typedef struct { INT8U OSEventType; //事件的类型 INT16U OSEventCnt; //信号量计数器 void *OSEventPtr; //消息或消息队列的指针 INT8U OSEventGrp; //等待事件的任务组 INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//任务等待表 #if OS_EVENT_NAME_EN > 0u INT8U *OSEventName; //事件名 #endif } OS_EVENT;
UCOSII中与任务相关的几个函数
1) 建立任务函数

嵌入式实时操作系统μCOS原理与实践

嵌入式实时操作系统μCOS原理与实践

内做出响应,任务能够及
精简版面和资源,以最大
到各种形态和尺寸的嵌入
时响应事件的发生。
程度地利用嵌入式设备的
式设备中。
硬件资源。
μCOS的内核组件
任务管理器 ⚙️
中断控制器
时钟管理器 ⏰
中央处理器上的任务即可视为
μCOS使用中断控制器来传递突
μCOS使用时钟管理器来定时和
μCOS中的任务,μCOS使用任
人工智能
分布式系统
μCOS正在通过与人工智能技术的结合,实现自适
μCOS正在实践能跨显著通信协议的分布式任务启
应、自主和自学的操作系统特征,为智能硬件全新
动、任务同步和互相通讯,建造新型的"μCOS-微
的智能附加值和服务提供支持。
服务"形态,为分布式嵌入式实时操作系统提供更
加广泛的应用场景。
号量的任务会等待以执行特定操作的请求,其他任
并使用该消息。
务在必要时释放资源或发信号进行协助。
邮箱
μCOS使用邮箱实现任务断类型
中断服务例程
μCOS支持软件中断和硬件中断。硬件中断是由
μCOS的中断服务例程包括自定义的函数,处理
CPU控制器中的硬件线程触发,而软件中断是
定义和开发用户贡献的应用程序。
μCOS在汽车行业的应用
汽车嵌入式系统
D ashb o ard
μCOS在汽车行业具有广泛的应用,用于控制复杂
μCOS可作为车载多媒体和导航系统的运行平台,
汽车嵌入式系统,如控制发动机、变速器、红外线
具备实时实时处理能力,提高安全性能和用户体验。
传感器等。
自动驾驶汽车
μCOS在自动驾驶汽车行业有很大的应用潜力,可

嵌入式实时操作系统μCOS原理与实践3

嵌入式实时操作系统μCOS原理与实践3

作者卢有亮 图书PPT和全部代码下载/15441
《嵌入式实时操作系统原理与实践》
3.1中断管理
3.1.2中断处理的流程
作者卢有亮 图书PPT和全部代码下载/15441
《嵌入式实时操作系统原理与实践》 3.1.3时钟中断服务 μC/OS-II在每个时间片都要进行任务的调度。调度的结果或者是返回原来 的任务继续执行,或者是因为找到了就绪的更高优先级的任务,而让该任 务运行。这个时间片可以是10毫秒或其他值。
《嵌入式实时操作系统原理与实践》
第三章 中断和时间管理
3.1 中断管理 3.1.1中断管理核心思路 3.1.2中断处理的流程 3.1.3时钟中断服务 3.2 时间管理 3.2.1时间管理主要数据结构 3.2.2时间的获取和设置 3.2.3任务延时函数OSTimeDly 3.2.4任务按分秒延迟函数OSTimeDlyHMSM 3.2.5延时恢复函数OSTimeDlyResume 习题
《嵌入式实时操作系统原理与实践》
嵌入式实时操作系统 μC/OS原理与实践
教材 :嵌入式实时操作系统μC/OS原理与实践 电子工业出版社 作者:卢有亮 luyl@ 电子科技大学能源科学与工程学院
作者卢有亮 图书PPT和全部代码下载/15441
作者卢有亮 图书PPT和全部代码下载/15441
《嵌入式实时操作系统原理与实践》 3.2.3任务延时函数OSTimeDly 任务延时函数OSTimeDly用于阻塞任务一定时间,这个时间以参数的形式 给出。如果这个参数的值是N,那么在N个时间片(时钟嘀嗒)之后,任务 才能回到就绪状态获得继续运行的机会。如果参数的值是0,不会阻塞任务。
作者卢有亮 图书PPT和全部代码下载/15441

嵌入式实时操作系统μCOS原理与实践-程序说明

嵌入式实时操作系统μCOS原理与实践-程序说明
嵌入式实时操作系统 μC/OS分析与实践 -程序说明
教材 :嵌入式实时操作系统μC/OS分析与实践 电子工业出版社 作者:卢有亮 luyl@ 电子科技大学能源科学与工程学院
1 概述
给出的说明是将程序移植到虚拟WINDOWS平台的说明。 文件包括 1.从网站下载μC/OS操作系统的源代 码(不能用于商业用途) ; 2.笔者实现的实例程序(可使用可参考); 3.针对虚拟平台的移植代码。
本文件首先给出文件结构 然后给出VC6工程的结构及运行示例
2.文件结构
2.1UCOS子目录下的文件
UCOS\CPU子目录下是与移植相关的文件
UCOS\SOURS\CONFIG子目录下是配置文件
2.2 USER子目录下的文件
user.h是书上说有示例程序的声明 user.c是书上说有示例程序的实现代码
2.3根目录下的文件
VC工程组文件和工程文件等 main.c是整个项目(操作系统+移植+演示任务代码)入口文件
3 在VC6上的工程
打开ucos_vc.dsw即可看到左边界面 所有演示例子都在user.c中 在main.c中可调用其中的函数
如内存管理的例子,按书上找到函数名TaskM,将其他的部分注释掉,将 这一部分取消注释。按运行可看到运行结果,然后可查看代码。
谢谢!

嵌入式实时操作系统UC教案范文

嵌入式实时操作系统UC教案范文

嵌入式实时操作系统UC/OS-II原理及应用第1章嵌入式实时操作系统的基本概念1.1 计算机操作系统1.1.1 什么是计算机操作系统1、计算机体系构架2、操作系统的作用:1)对计算机系统的主要资源进行管理;2)向计算机用户提供相关服务;3)隐藏计算机硬件,为应用程序提供透明的操作环境。

1.1.2 操作系统的作用和功能1、操作系统的作用为应用程序提供一个界面友好,性能稳定、安全,效率高,操作方便的虚拟计算机2、操作系统的功能1)处理器管理2)存储管理3)设备管理4)文件管理5)网络和通信管理6)提供用户接口1.2 嵌入式系统和嵌入式操作系统1.2.1 嵌入式系统的基本概念1、什么是嵌入式系统2、嵌入式系统的发展历程微型计算机→单板机→单片机→单片系统3、嵌入式系统的特点1)专用性强2)可裁剪性好3)实时性与可靠性好4)功耗低1.2.2 嵌入式操作系统1、什么是嵌入式操作系统运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件2、嵌入式操作系统的特点1)微型化2)可裁剪性3)实时性4)高可靠性5)易移植性3、实时操作系统能及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,这种操作系统称为实时操作系统。

4、实时操作系统的基本要求1)实时系统的计算必须产生正确的结果。

(逻辑或功能正确)Logical or Function Correctness)2)实时系统的计算必须在预定的时间内完成。

(时间正确)Timing Correctness5、实时操作系统的分类1)硬实时操作系统(极严格的时间内完成实时任务)2)软实时操作系统(系统完成实时任务的截止时间要求不十分严格)1.2.3 实时操作系统需要满足的条件1、实时操作系统应满足的条件1)必须是多任务操作系统2)任务的切换时间与系统中的任务数无关3)中断延迟的时间可预知并尽可能短1.2.4 嵌入式系统的任务及嵌入实时操作系统1、嵌入式系统的任务由于嵌入式系统所完成的是对一个装置或设备的控制任务,任务的功能相对固定,因此在一般情况下嵌入式实时操作系统所支持的典型任务应该是一个无限循环结构。

嵌入式实时操作系统 C OS原理与实践

嵌入式实时操作系统 C OS原理与实践
本书在第一章给出实时操作系统的基础,为以后各章的学习打下基础,满足未学习过操作系统的读者,而学 习过操作系统的读者也要掌握本章的内容,因为嵌入式实时操作系统有其个性。第二章任务管理,第三章中断和 时间管理,第四章事件管理,第五章消息管理,第六章内存管理,第七章移植先给出通用的方法,再分别论述PC 下基于NIOS的FPGA这一全新领域下的移植。
目录分析
1.1操作系统概述
1.2实时操作系统概 述
1.3任务
1.4基于优先级的不 可剥夺内核
1.5同步与通信 1.6中断和时钟
1.7内存管理 习题
2.2任务控制块初 始化
2.1任务管理数据 结构
2.3操作系统初始 化
2.5任务的删除
2.4任务的创建
2.6任务挂起和恢 复
2.7任务的调度和多 任务的启动
精彩摘录
精彩摘录
每个任务中访问共享资源的那段程序称为临界区(Critical Section 在实时多任务操作系统中,任务应该调用可重入函数,可重入函数是任务中的一个重要概念。 邮箱中的内容却不是信件本身,而是指向消息内容的地址!这个指针是void类型的,可以指向任何数据结构。 务之间的这种制约性的合作运行机制称为任务间的同步。 信号量标识了共享资源的有效可被访问数量,于是要获得共享资源的访问权,就首先要得到信号量这把钥匙。 事件处理的对象主要有信号量、互斥信号量、事件标志组、邮箱、消息队列。 任务的优先级和任务的其他信息,如任务堆栈地址、任务状态、任务等待实践指针、任务延时时间等信息都 保存在一个名为任务控制块(Task Control Block,TCB)的数据结构中。 才能得到运行,响应时间不能确定,因此不适合实时操作系统。 任务控制块、任务空闲链表和任务就绪链表、任务优先级指针表、任务堆栈等,是μC/OS-II内核的核心部 分之一 这样的共享资源称为临界资源(Critical Resource),这种访问共享资源的排他性就是互斥。

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记第一章嵌入式实时操作系统的概念1.计算机操作系统:对计算机系统资源进行管理,并向计算机用户提供若干服务。

OR:计算机操作系统是计算机硬件的一个软件包装,它为应用程序设计人员提供了一个更便于使用的虚拟计算机。

2.操作系统功能:1)处理器的管理:(1)中断管理;(2)对处理器工作进行调度;2)存储的管理:3)设备的管理:4)文件的管理:5)网络和通信的管理:6)提供用户接口:3.嵌入式系统:对对象进行自动化控制而使其具有智能化并可嵌入对象体系中的专用计算机系统。

4.嵌入式操作系统:运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件。

5.实时操作系统:(1)多任务系统;(2)任务切换时间与系统中的任务数无关;(3)中断延时的时间可预知并尽可能短。

第二章uC/OS-II中的任务1.uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度。

2.UC/OS-II的任务组成部分:(1)任务程序代码:任务的执行部分;(2)任务堆栈:保存任务工作环境;(3)任务控制块:保存任务属性。

3.uC/OS-II的两种任务:用户任务:由应用程序设计者编写的任务。

系统任务:系统提供的任务。

4.任务的状态:(1)睡眠状态:是否配置或剥夺任务控制块的配置情况;(2)就绪状态:任务就绪表进行就绪登记,等待优先级,具备运行充分条件;(3)运行状态:获得CPU使用权限,任何时候只有一个任务处于运行状态。

(4)等待状态:正在运行的任务,需要等待一段时间或一件事件发生在运行,暂时交出CPU使用权。

5.用户任务代码结构:任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构叫做超循环结构。

6.OSTakCreate()用来创建任务的函数;OSStart()用来启动各项任务的函数,启动后,任务就交由操作系统来管理和调度了。

嵌入式实时操作系统μCOSII原理及应用习题答案(第四版)

嵌入式实时操作系统μCOSII原理及应用习题答案(第四版)

嵌入式实时操作系统μCOSII原理及应用习题答案(第四版)嵌入式实时操作系统μCOSII原理及应用习题答案(第四版)嵌入式操作系统是一种特殊的操作系统,用于控制和管理嵌入式系统。

实时操作系统(RTOS)是一种在给定的时间约束下,能够及时响应外部事件的操作系统。

μC/OS-II是一种广泛应用于嵌入式系统的实时操作系统。

本文将介绍μC/OS-II的原理及应用,并提供第四版的习题答案。

一、μC/OS-II原理1. 任务(Task)管理:μC/OS-II采用优先级抢占式调度算法,支持多任务。

每个任务具有自己的任务控制块(TCB),用于记录任务的状态、优先级、堆栈等信息。

任务之间可以通过任务切换进行调度,具有不同的优先级来确保系统的实时性。

2. 信号量(Semaphore)机制:信号量用于任务之间的同步和互斥操作。

μC/OS-II提供了两种信号量机制:二值信号量和计数信号量。

二值信号量用于任务之间的互斥操作,而计数信号量用于任务之间的同步操作。

3. 事件标志组(Event Flag Group)机制:事件标志组用于任务之间的同步和通信操作。

一个事件标志组中可以包含多个事件标志位,每个标志位都可以独立设置或清除。

任务可以等待一个或多个事件标志位的发生,并在发生时得到通知。

4. 消息邮箱(Mailbox)机制:消息邮箱用于任务之间的通信。

每个消息邮箱中可以存放一个或多个消息,任务可以通过发送和接收消息来进行通信。

消息邮箱还支持阻塞和非阻塞两种方式。

5. 定时器(Timer)管理:μC/OS-II提供了软件定时器的功能,可以设置定时器来触发任务或其他操作。

定时器可以基于时间片、滴答定时器或硬件定时器实现。

二、μC/OS-II应用1. 实时任务调度:μC/OS-II可以在多个任务之间进行优先级调度,保证任务的及时执行。

通过设置任务的优先级和时间片,可以确保高优先级任务优先执行,从而满足实时性要求。

同时,μC/OS-II还提供了任务切换和上下文切换机制,确保任务之间的切换及时有效。

实验五(嵌入式实时操作系统实验报告)

实验五(嵌入式实时操作系统实验报告)

学号:08083572班级:信科08-3 姓名:刘俊迪专业:电子信息科学与技术实验五:uC/OS-II内核移植实验1.实验目的:⏹了解uC/OS-II内核的基本原理和主要结构⏹掌握将uC/OS-II内核移植到ARM处理器上的基本方法⏹掌握uC/OS-II下基本多任务应用程序的编写2.实验内容:学习uC/OS-II再ARM处理器上的移植过程编写简单的多任务应用程序,同时实现跑马灯和数码管显示的功能3.实验原理:(1)uC/OS-II的移植1、汇编语言、C语言代码需要移植2、移植工作集中在多任务切换的实现上3、在ARM处理器上的移植,需要完成的工作包括:修改三个和体系结构相关的文件,代码量大约是500行。

这三个文件是OS_CPU_C.c、OS_CPU_C.H以及OS_CPU_A.S(2)OS_CPU.H的移植1、数据类型定义INT8U -> unsigned charINT8S -> signed charINT16U -> unsigned shortINT16S -> signed shortINT32U -> unsigned intINT32S -> signed int2、ARM处理器相关宏定义退出临界区#define OS_ENTER_CRITICAL() ARMDisableInt()进入临界区#define OS_EXIT_CRITICAL() ARMEnableInt()3、堆栈增长方向堆栈由高地址向低地址增长,这个也是和编译器有关的,当进行函数调用时,入口参数和返回地址一般都会保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。

#define OS_STK_GROWTH 1(3)OS_CPU.c的移植1、任务堆栈初始化1、由OSTaskCreate或OSTaskCreateExt调用2、用来初始化任务的堆栈并返回新的堆栈指针stk。

嵌入式实时操作系统ucos-ii实习报告

嵌入式实时操作系统ucos-ii实习报告
北华大学
嵌入式实时操作系统实习
实习题目: 学 班 姓 学 院: 级: 名: 号:
嵌入式实时操作系统μC/OS-II
电气信息工程学院 测控10-1 刘英皓 13 2013.10.28 —2013.11.1 武海巍
实习时间: 指导教师:
一、编译环境的选择
编译器主要有两种:一种是μC/OS-II 官方提供的 Borland C++编译器。另 一种是微软的 Visual C++ 6.0 版本的编译器。当然也有其他的编译器,比如 TC3.0、gcc 等。每种编译器都有自己的特点。要根据自己的习惯选择合适的编 译器。这样在开发过程中才会省时省力。 对于上面提到的两种编译器,通过比较,我选择了 VC++6.0。两者的工作 界面如下:
首先,我们在程序中定义一个“行李寄存处” 。 然后在任务一中把我的一个账号存放在那里。 在第二个任务中就要把这件行李取出来了。 运行后的结果如下所示:
图 5-1 邮箱的发送与等待测试
参考文献
【1 】
《嵌入式实时操作系统μC/OS-Ⅱ原理及应用》
任哲
北京
航空航天大学出版社
【2 】
《嵌入式实时操作系统μC/OS-Ⅱ教程》
之后在主函数里要进行以下的操作:系统的初始化、建立任务和 启动任务。
void main(void) {
4/12
OSInit();
//初始化 ucos
//建立任务 TaskOne, 无数据区指针, 堆栈指针, 优先级 OSTaskCreate(TaskOne, 0 , &TaskOneStack[TASK_STK_SIZE-1], 6 ); OSTaskCreate(TaskTwo, 0 , &TaskTwoStack[TASK_STK_SIZE-1], 8 ); OSTaskCreate(TaskThree, 0 , &TaskThreeStack[TASK_STK_SIZE-1], 10 ); OSStart(); } // 开始运行 ucos

嵌入式实时操作系统UCOS原理与实践分析和学习指导

嵌入式实时操作系统UCOS原理与实践分析和学习指导

《嵌入式实时操作系统μC/OS原理与实践》分析和学习指导一:图书概况电子科技大学卢有亮的《嵌入式实时操作系统μC/OS原理与实践》在2012.2电子工业出版社出版后受到读者欢迎,因为谁看了谁知道,明白易学.站在客观的角度上分析:优点有:1.比较适合入门,对代码的讲解详细充分, 采用逐层深入,反复认证的方法,通过从数据结构到函数代码再到例程的方法比较容易学懂。

作者根据教学和项目开发,自己整理的思路。

书是老师自己根据教学经验编写的,适合学习。

2.提供容易上手的例程,例程明白易懂,在WINDOWS下可运行无误。

有VC下的工程文件,源代码是2.91的,可单步调试,观察变量内容,这个比贝贝的学习环境直观有效.3.该书事件管理、消息管理及内存管理代码解释也很详细深入。

因此不止是入门,包含了操作系统代码作者的内容。

4.内容充分而价格便宜,纸质比较好(请相信电子工业出版社),书很舒服。

5.网上搜索,提供了部分视频教程。

6.书中源代码解释详细,适合学过点C语言的同学读,门槛不高。

很多读者放映书说的比较其他书详细。

例如TCB就绪链表和空闲链表,ECB的相关数据结构都以图形方式给出,然后代码解析后还给出流程图,基本上每个重要的函数都有解释和流程图,这个其他书是没有的。

7.交流方式多,有问必答。

有什么问题直接联系书中老师的邮箱或微博, 并欢迎加入微群。

缺点有:1.有一些错误之处,虽然可以在微博看到勘误表。

2.没有提供教学光盘,需要在网上下载,视频的第一章部分不是高清的,部分视频有声音不同步的问题.3.移植部分是针对WINDOWS下的虚拟移植及软核FPGA的,没有51单片机的、STM32的、ARM7、9、11的二:图书PPT使用指导教学PPT质量一般,简明易懂。

PPT简明为主,包含了流程图,数据结构图解等,没有大片大片的文字。

PPT在微博有下载地址,315的目前可以下.(原来是在电子工业出版社下载第3个)另外阿莫电子论坛和电子工程师论坛也有下载。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《嵌入式实时操作系统μC/OS原理与实践》
分析和学习指导
一:图书概况
电子科技大学卢有亮的《嵌入式实时操作系统μC/OS原理与实践》在2012.2电子工业出版社出版后受到读者欢迎,因为谁看了谁知道,明白易学.站在客观的角度上分析:
优点有:
1.比较适合入门,对代码的讲解详细充分, 采用逐层深入,反复认证的方法,通过从数据结构到函数代码再到例程的方法比较容易学懂。

作者根据教学和项目开发,自己整理的思路。

书是老师自己根据教学经验编写的,适合学习。

2.提供容易上手的例程,例程明白易懂,在WINDOWS下可运行无误。

有VC下的工程文件,源代码是2.91的,可单步调试,观察变量内容,这个比贝贝的学习环境直观有效.
3.该书事件管理、消息管理及内存管理代码解释也很详细深入。

因此不止是入门,包含了操作系统代码作者的内容。

4.内容充分而价格便宜,纸质比较好(请相信电子工业出版社),书很舒服。

5.网上搜索,提供了部分视频教程。

6.书中源代码解释详细,适合学过点C语言的同学读,门槛不高。

很多读者放映书说的比较其他书详细。

例如TCB就绪链表和空闲链表,ECB的相关数据结构都以图形方式给出,然后代码解析后还给出流程图,基本上每个重要的函数都有解释和流程图,这个其他书是没有的。

7.交流方式多,有问必答。

有什么问题直接联系书中老师的邮箱或微博, 并欢迎加入微群。

缺点有:
1.有一些错误之处,虽然可以在微博看到勘误表。

2.没有提供教学光盘,需要在网上下载,视频的第一章部分不是高清的,部分视频有声音不同步的问题.
3.移植部分是针对WINDOWS下的虚拟移植及软核FPGA的,没有51单片机的、STM32的、ARM7、9、11的
二:图书PPT使用指导
教学PPT质量一般,简明易懂。

PPT简明为主,包含了流程
图,数据结构图解等,没有大片大片的文字。

PPT在微博有下载地址,315的目前可以下.(原来是在电子工业出版社下载第3个)另外阿莫电子论坛和电子工程师论坛也有下载。

应该说,PPT不是亮点,但是对于使用该PPT的教师来说,绝对是福音。

可以根据自己的教学特点对PPT进行改编,核心的东西都在了。

另外,提供了实验指导PPT。

三:学习和实验代码使用指导
代码在VC下完全编译,目前新的代码没有一个警告。

代码结构对UCOS的内核代码一个字没动,都在SOURCE目录下,在工程中在CORE下。

对于配置的头文件及工程包含文件在CFG
下,移植部分在CPU下。

用户代码单独在USER下。

结构清晰。

示例代码针对各章节,不追求难度,以实用有效为主。

代码运行的示例见下图。

在跟踪模式下,使用观察窗,更可以洞悉系统的重要全局变量如任务控制块、事件控制块、任务优先级表等的实际情况,了解任务堆栈的变化情况!下面给出跟踪过程,如我们要跟踪操作系统初始化OSINIT的执行过程,并观察变量,首先在代码中设置断点如下图
然后按F5运行,我们看到
然后我们输入1就可以,然后回车
现在因为断点,停在这里了。

如果按F11,进入OSInitHookBegin(); 如果按F10,不进入OSInitHookBegin()但这个运行之。

如果对它熟悉,就按F10,否则按F11。

我们跟踪到OS_InitMisc内部,看到OS_InitMisc实际上对重要的全局变量进行了初始化。

可以在观察窗口输入变量,例如OSRunning
我们继续单步调试,并逐渐添加以下重要的全局变量,如就绪组和就绪表。

我们单步运行到OS_InitRdyList的时候,因为有循环,我们
在最后一句设置断点,然后按F5, 应该在最后一句停下来,这样我们看到:
我们看到OS_InitRdyList执行完成的时候,就绪组和就绪表的内容都是0!的确是清0!
然后,我们继续单步运行到这里
我们看到就绪组和就绪表变了,OSRdyGrp变为0X80,OSRdyTble(7)=0x80,这是因为我们创建了空闲任务!
可见,单步调试是很说明问题的!
代码在卢有亮博客有下载地址,315的目前可以下(原来是在电子工业出版社下载第3个)。

另外阿莫电子论坛和电子工程师论坛也有下载。

四:提供了视频
视频对学习起到辅助作用,建议读不懂的地方看看视频,个人感觉看书结合跑代码快些。

当然有些读者喜欢看视频,视频分成很多个,可以选择看哪些内容。

个别视频不是高清的,有些有声音不同步的现象。

网上视频,土豆和优酷
五:提供了交流平台
可以在博客获得最新资料。

微群没有什么人数限制
六:总结
只要按该书的思路,使用这些资源,能够尽快掌握UCOS,付出的只是一本书的价格30元左右。

当需要移植到ARM、STM32或其他系统,在读懂这本书的情况下,不是难事。

否则,下载了移植代码,也用不好!再者,学习好OS的同时,C的水平提高很快!
卢有亮
2012.4.27 成都。

相关文档
最新文档