uC-OS II学习
- 格式:pdf
- 大小:113.00 KB
- 文档页数:13
嵌入式系统——基础知识操作系统OS控制和管理计算机软硬件资源,合理组织计算机工作流程,方便用户使用计算机的系统软件。
可将OS看成是应用程序与硬件间的接口或虚拟机。
OS功能:进程管理、存储管理、文件管理、设备管理、网络和通信管理等。
嵌入式操作系统EOS运行在嵌入式硬件平台上,对整个系统及其所操作的部件装置等资源进行统一协调、指挥和控制的系统软件。
EOS特点:微型化、可裁剪性、实时性、高可靠性、易移植性重点关注:高实时性、硬件相关依赖性、软件固化、应用专用性、网络功能。
实时操作系统TROS能使计算机及时响应外部事件请求,并能及时控制所有实时设备与实时任务协调运行,且能在规定时间内完成事件处理的OS。
RTOS基本要求:1、逻辑功能正确:RTOS的计算必须产生正确的结果;2、时间正确:RTOS的计算必须在预定的周期内完成。
RTOS应满足条件:1、多任务系统;2、任务的切换时间应与系统中的任务书无关;3、中断延时的时间可预知并尽可能短。
无论在什么情况下,OS完成任务所需的时间应该是在程序设计时就可预知的。
嵌入式实时操作系统ERTOS用于嵌入式系统,对系统资源和多个任务进行管理,且具有高可靠性、良好可裁剪性等优良性能的,为应用程序提供运行平台和实时服务的微型系统软件。
ERTOS最重要的三项服务:1、多任务管理2、内存管理3、外围资源管理嵌入式微处理器(特点)1、对实时多任务OS有很强的支持能力;2、具有功能很强的存储区域保护功能;3、处理器结构可扩展;4、低功耗;微处理器主要发展方向:小体积、高性能、低功耗微处理器分类:MCU、MPU、DSP、SOC嵌入式系统发展方向1、嵌入式开发是一项系统工程,嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,还需要提供强大的硬件开发工具与软件支持包;2、网络化、信息化的要求随着因特网技术的成熟、宽带的提高而日益提高,使得以往单一功能的设备功能不再单一,结构更加复杂;3、网络互连成为必然趋势(IEEE1394、USB、CAN、Bluetooth等网络接口);4、精简系统内核、算法、降低功耗和软硬件成本;5、提供友好的多媒体人机界面。
B. ARM_PC存放P
C.c, PC.h 文件, C. Ex1存放Uc/OS-II的工程,注意在工程与Ex1文件之间不应该再一层文件夹,
工程名.mcp文件.
D. Source文件夹存放Uc/OS-II源文件,可以是V2.80版本或V2.51版本。
Ucos-II调试心得
1. 工程下必须有4个文件夹,分别为: ARM,ARM_PC,Ex1,Source.
其中: A. ARM目录存放Uc/OS-II在ARM上的移植代码,包括OS_cpu_a.S, OS_cpu_c.c, IRQ.inc, OS_CPU.H等4个文件;
2. 如果不需要使用Easyarm.exe进行上位机显示,则可以不用文件PC.c和PC.h,当然也可以 不需要ARM_PC文件夹. 但是需先将 "工程\Ex1\Src\Config.h中将最后一条指令 #include "..\..\Arm_Pc\pc.h"删掉,然后就可以删掉整个ARM_PC文件夹。
删掉这一语句后,
就可以删掉整个ARM_PC文件夹。
例如Ex1下通常有如下3个文件: 工程名_data文件夹,Src文件夹,
3. 如果用V2.80 UC/OS-II软件,那么在工程中须删掉本来的文件OS_CFG.H,增加Source目 录下的os_cfg.h,如下图:
删掉工程\Ex1\Src\下的os_cfg.h,
因为默认的此文件只能调用V2.51版本的uc/OS-II系统文件。
增加工程\Source\下的os_cfg.h文件。
4. 增加文件os_dbg_r.C到工程中。
如下图:
将工程\Source\下的os_dbg_r.C文件添加到工程。
a。
嵌入式系统UCOS2学习/s/blog_5f0bed160100tqnv.html20113、非空闲任务控制块双向链表ucos-II的任务状态l 睡眠态(Dormant):指任务驻留在程序空间之中,还没有交给μC/OS-Ⅱ管理。
把任务交给μC/OS-Ⅱ是通过调用下述两个函数之一:OSTaskCreate()或OSTaskCreateExt()。
一个任务可以通过调用OSTaskDel()返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态。
l 就绪态:当任务一旦建立,这个任务就进入就绪态准备运行。
l 运行态:调用OSStart()可以启动多任务。
OSStart()函数运行进入就绪态的优先级最高的任务。
就绪的任务只有当所有优先级高于这个任务的任务转为等待状态,或者是被删除了,才能进入运行态。
l 等待状态:正在运行的任务可以通过调用两个函数之一将自身延迟一段时间,这两个函数是OSTimeDly()或OSTimeDlyHMSM()。
这个任务于是进入等待状态。
正在运行的任务期待某一事件的发生时也要等待,手段是调用以下几个函数之一:OSFlagPend()、OSSemPend()、OSMutexPend()、OSMboxPend(),或OSQPend()。
如果某事件未发生,调用后任务进入了等待状态(WAITING)。
l 中断服务态:正在运行的任务是可以被中断的,除非该任务将中断关了,或者μC/OS-Ⅱ将中断关了。
被中断了的任务就进入了中断服务态(ISR)。
任务控制块TCB的管理1、任务块数组定义(OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS+OS_N_SYS_TASKS];)应用程序中可以有的最多任务数(OS_MAX_TASKS)是在文件OS_CFG.H中定义的。
这个最多任务数也是μC/OS-Ⅱ分配给用户程序的最多任务控制块OS_TCBs的数目。
将OS_MAX_TASKS的数目设置为用户应用程序实际需要的任务数可以减小RAM的需求量。
1.选择uC/OS-II嵌入式操作系统的原因。
●与终端硬件平台相适应,全部源代码5500行,可裁减定制,生成的可执行代码占15~20k,可以移植到多种系列单片机上,包括ARM;●考虑成本,免费的源代码公开;●uC/OS-II代码简单,容易掌握和使用;具有多任务调度的基本功能;2.uC/OS-II嵌入式操作系统的缺点●缺少技术支持,相关的支持软件少;●和商业软件比,功能较弱(如不支持时间片轮转,最大任务数为64等);对应用开发的支持不够;3.uC/OS操作系统的特点uC/OS是一个完成的,可移植、可固化、可裁减的抢占式实时多任务操作系统内核。
主要用ANSI的C语言编写,少部分代码是汇编语言。
uC/OS主要有以下特点:1、可移植性可以移植到多个CPU上,包括三菱单片机。
2、可固化可以固化到嵌入式系统中3、可裁减可以定制uC/OS,使用少量的系统服务4、可剥夺性uC/OS是完全可剥夺的实时内核,uC/OS总是运行优先级最高的就绪任务。
5、多任务运行uC/OS可以管理最多64个任务。
不支持时间片轮转调度法,所以要求每个任务的优先级不一样。
6、可确定性uC/OS的函数调用和系统服务的执行时间可以确定。
7、任务栈每个任务都有自己的单独的栈,而且每个任务栈空间的大小可以不一样。
8、系统服务uC/OS有很多系统服务,如信号量、时间标志、消息邮箱、消息队列、时间管理等等。
4.uC/OS基本概念1、前后台系统也称为超循环系统。
应用程序是一个无限的循环,循环中实现相应的操作,这部分看成后台行为。
用中断服务程序处理异步事件,处理实时性要求很强的操作,这部分可以看成前台行为。
2、共享资源可以被一个以上任务使用的资源叫做共享资源。
3、任务:一个任务是一个线程,一般是一个无限的循环程序。
一个任务可以认为CPU资源完全只属于自己。
任务可以是以下五种状态之一:休眠态,就绪态,运行态,挂起态和被中断态。
uC/OS-II提供的系统服务可以使任务从一种状态变为另一种状态。
班级学号姓名实验日期预备实验嵌入式开发环境的建立实验一、实验目的1.掌握嵌入式软件开发环境的建立过程;2.初步掌握嵌入式程序的编译和调试过程。
二、实验内容建立嵌入式开发环境;编译和调试嵌入式程序。
三、实验原理、程序结构实验设计了 Task0 、Task1 两个任务:任务 Task0 不断地挂起自己,再被任务 Task1 解挂,两个任务不断地切换执行。
(1)系统经历一系列的初始化过程后进入 boot_card() 函数,在其中调用 ucBsp_init() 进行板级初始化后,调用 main() 函数;(2)main() 函数调用 OSInit() 函数对 uC/OS-II 内核进行初始化,调用 OSTaskCreate 创建起始任务 TaskStart ;(3)main() 函数调用函数 OSStart() 启动 uC/OS-II 内核的运行,开始多任务的调度,执行当前优先级最高的就绪任务 TaskStart ;(4)TaskStart 完成如下工作:a、安装时钟中断并初始化时钟,创建 2 个应用任务;b、挂起自己(不再被其它任务唤醒),系统切换到当前优先级最高的就绪任务Task0 。
四、实验步骤及操作过程1.安装集成开发环境 LambdaEDU集成开发环境 LambdaEDU 的安装文件夹为 LambdaEDU ,其中有一个名为“Setup.exe ”的文件,直接双击该文件便可启动安装过程。
具体的安装指导请看“LambdaEDU 安装手安装手册册 .doc ”文件。
当 LambdaEDU 安装完毕之后,我们看到的是一个空的界面,现在就开始一步一步地将我们的实验项目建立并运行起来。
2.建立项目为了我们的实验运行起来,需要建立 1 个项目基于 x86 虚拟机的标准应用项目。
通过点击“文件”、“新建”、“项目”开始根据向导创建一个项目。
在随后出现的对话框中选择“Tool/ 标准应用项目”,点击下一步,开始创建一个标准的可执行的应用程序项目。
第4章任务的同步与通信系统中的多个任务在运行时,经常需要互相无冲突地访问同一个共享资源,或者需要互相支持和依赖,甚至有时还要互相加以必要的限制和制约,才保证任务的顺利运行。
因此,操作系统必须具有对任务的运行进行协调的能力,从而使任务之间可以无冲突、流畅地同步运行,而不致导致灾难性的后果。
与人们依靠通信来互相沟通,从而使人际关系和谐、工作顺利的做法一样,计算机系统是依靠任务之间的良好通信来保证任务与任务的同步的。
例如,两个任务:任务A和任务B,它们需要通过访问同一个数据缓冲区合作完成一项工作,任务A负责向缓冲区写入数据,任务B负责从缓冲区读取该数据。
显然,当任务A还未向缓冲区写入数据时(缓冲区为空时),任务B因不能从缓冲区得到有效数据而应该处于等待状态,只有等任务A向缓冲区写入了数据之后,才应该通知任务B去取数据。
例如,任务A和任务B共享一台打印机,如果系统已经把打印机分配给了任务A,则任务B因不能获得打印机的使用权而应该处于等待状态,只有当任务A把打印机释放后,系统才能唤醒任务B使其获得打印机的使用权。
如果这两个任务不这样做,那么也会造成极大的混乱。
总之,多个任务共享同一资源或有工作顺序要求时,在正式工作之前要互相打招呼。
黄宏:别走啊!宋丹丹:我自己的腿,我爱走就走,你管不着!黄宏:腿是你自己的,但手是咱俩的呀!事件任务间的同步依赖于任务间的通信。
在μC/OS-II 中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务之间的通信的。
宋丹丹黄宏一个简单的信号量发信方1/0收信方共享资源事件控制块为了把描述事件的数据结构统一起来,μC/OS-II使用叫做事件控制块ECB的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息队列这些事件。
事件控制块中包含包括等待任务表在内的所有有关事件的数据typedef struct {INT8U OSEventType;//事件的类型INT16U OSEventCnt;//信号量计数器void *OSEventPtr;//消息或消息队列的指针INT8U OSEventGrp;//等待事件的任务组INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//任务等待表} OS_EVENT;把一个任务置于等待状态要调用OS_EventTaskWait( )函数。
UCOSII操作系统课程设计一、课程目标知识目标:1. 理解UCOSII操作系统的基本原理和核心概念,包括任务管理、时间管理、通信与同步机制;2. 掌握UCOSII的移植方法和配置过程,学会在不同硬件平台上搭建UCOSII 操作系统环境;3. 学会使用UCOSII提供的API进行多任务编程,了解实时操作系统的任务调度和资源管理策略。
技能目标:1. 能够运用C语言在UCOSII环境下编写多任务应用程序,实现任务间的同步与通信;2. 能够分析并解决实际嵌入式系统开发中与操作系统相关的问题,提高系统稳定性和可靠性;3. 掌握UCOSII调试技巧,能够运用调试工具对操作系统运行状态进行跟踪和分析。
情感态度价值观目标:1. 培养学生对操作系统知识的好奇心和探索精神,激发学习兴趣和热情;2. 培养学生具备良好的团队合作精神和沟通能力,提高解决实际问题的能力;3. 增强学生的创新意识,鼓励他们在实际项目中积极尝试和应用所学知识。
课程性质:本课程为高年级专业课,以实际应用为导向,注重理论与实践相结合。
学生特点:学生已具备一定的C语言编程基础和嵌入式系统知识,具有较强的学习能力和实践能力。
教学要求:教师需采用项目驱动教学法,引导学生通过实际案例掌握UCOSII 操作系统的应用与开发。
在教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的实现。
同时,注重培养学生的自主学习能力和创新能力,为将来的职业发展打下坚实基础。
二、教学内容1. UCOSII操作系统概述:介绍实时操作系统的基本概念、特点及应用场景,引出UCOSII的背景、架构和优势。
教材章节:第一章 实时操作系统概述2. UCOSII内核原理:讲解UCOSII的核心组件,包括任务管理、时间管理、通信与同步机制等。
教材章节:第二章 UCOSII内核原理3. UCOSII移植与配置:介绍在不同硬件平台上移植和配置UCOSII的方法,以实际案例为例进行讲解。