实时操作系统_uCOS-II-5

合集下载

实时操作系统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就是任务。

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

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

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

ucosii2实时操作系统介绍

ucosii2实时操作系统介绍

第2-5:uC/OS-II 实时操作系统1目录:2.5.1概述2.5.2任务栈切换方法2.5.3优先级别算法2.5.4任务通信-使用邮箱2.5.5任务通信-使用消息队列2.5.6对共享资源的互斥访问控制与信号(semaphore)2.5.7任务同步与信号(signal)2.5.8内存分配方法2.5.8缺陷与改进(1:任务调度问题,2:通信问题:任务通信模型与uC/OS-II通信机制的缺陷)附录1:uC/OS-II文件列表附录2:相关函数列表附录3:主要变量和数据类型列表1本章所涉及的操作系统理论知识可参阅各种操作系统教科书,比如《现代操作系统》【美】Andrew S.Tanenbaum著陈向群等译机械工业出版社1999年11月2.5.1概述技术指标uC/OS-II是一个占先式实时多任务操作系统内核,但不支持时间片调度,支持任务间通信,提供了多种对共享资源的访问控制,如禁止切换,调度上锁等。

uC/OS-II的也是一个可剪裁的系统,可以根据需要保留或者删除某些功能,任务数最多可达64个。

下表中给出了2种常用情况下的目标代码大小。

在uC/OS-II中,影响内存大小的数据结构主要包括任务数量,事件控制块数量和任务堆栈大小。

uC/OS-II源代码uC/OS-II的X86版本代码规模约为5000行,包括用于应用任务的例子代码和辅助代码,核心代码约3500行,分布在17 个文件中【详见附录1】。

任务状态uC/OS-II的任务一般会处于以下6状态之一,1.运行态2.就绪态3.等待信号量4.等待邮箱消息5.等待消息队列消息6.挂起在某一时刻,系统中只会有一个任务处于“运行态”,处于其他各种状态的任务数量没有限制,“挂起态”的进入是任务主动进行的,其他状态一般由各种外部因素造成。

只有处于“就绪态”的任务才可能成为下个要执行的任务。

任务切换过程和优先级别算法uC/OS-II不支持时间片调度切换,而仅仅提供按任务优先级别的切换,提供了2种任务切换方式,主动切换和被动切换,前者是应用任务通过调用系统函数自动将自己挂起,后者是操作系统根据当前任务运行情况,将正在运行的任务强制挂起,从而切换到另一个任务执行。

嵌入式实时操作系统_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()为止。

嵌入式实时操作系统ucosII

嵌入式实时操作系统ucosII
Ⅱ是稳定可靠的,可用在与人性命攸关的安全紧要的系统上。本课程讲授的就 是μC/OS-Ⅱ。它是一个十分小的内核。
10
学习嵌入式操作系统
学习一种实时操作系统RTOS,如uc/OS,掌握实时系统的 概念和设计方法;
嵌入式系统以应用为中心,应用时选择“适用”的操作系 统;
知道如何剪裁操行系统; 嵌入式Linux、eCos; 自己“写”RTOS——一种学习态度; 由于嵌入式系统自身的特点,采用的程序设计语言是汇编
许多早期的嵌入式系统开发者认为嵌入式系统不需要操作系统,但现在除了 最简单的系统外,越来越多的嵌入式系统都引入了操作系统,比如中断驱动系统 在引入嵌入式操作系统之后,系统的可靠性、安全性、可扩展性、功能性、灵活 性、可管理性都大大提高。当然,我们这里所讲的嵌入式操作系统不一定是UcOS、 VxWorks、WinCE、Linux等通用产品,也包括开发者自己编写的专用嵌入式操作 系统。
语言、C/C++语言、JAVA语言。所用的编译器应与处理 器相适应。
11
RTOS在嵌入式系统中的位置
应用
FS C/C++ 设备驱动
RTOS
KERNEL 调试工具
其它组件 TCP/IP 设备I/O
BSP(板级支持包) 嵌入式硬件平台
12
第二讲 C/OS –II及任务
µC/OS-II的特点 µC/OS-II文件结构与内核 µC/OS-II任务及其存储结构 µC/OS-II任务控制块与任务堆栈 µC/OS-II系统的任务、空闲任务与统计任务
实时嵌入式操作系统的种类繁多,大体上可分为两种,商用型和免费型。 商用型的实操作系统功能稳定、可靠,有完善的技术支持和售后服务,但往往
价格昂贵,如Vxworks、QNX、WinCE、Palm OS等。 免费型的实时操作系统在价格方面具有优势,目前主要有Linux、eCos和

第7章 实时操作系统uCOS-Ⅱ

第7章 实时操作系统uCOS-Ⅱ

OSTCBPrev
OSTCBPrev
OSTCBPrev
OSTCBPrev
OSTCBPrev
图7-1 空任务列表
14
本节提要
C/OS-Ⅱ简介 2 C/OS-Ⅱ内核结构 3 4 5 6 7 C/OS-Ⅱ任务管理
1
C/OS-Ⅱ任务通信与同步 C/OS-Ⅱ中断与时间管理
C/OS-Ⅱ应用程序举例
4
C/OS的性能特点(二)







占先式(Preemptive) 多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系 统。应用程序最多可以有56个任务 可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性 任务栈 每个任务有自己单独的栈, C/OS-II允许每个任务有不同的栈 空间,以便压低应用程序对RAM的需求。 系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、 块大小固定的内存的申请与释放、时间相关函数等。 中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务 被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执 行,中断嵌套层数可达255层。 稳定性与可靠性
19
2.任务创建与删除
创建任务函数利用函数的调用参数为任务分配和初始化相 关的数据结构。首先初始化一个任务控制块,并通过任务控制 块把任务代码和任务堆栈关联起来形成一个完整的任务。 (1)任务创建 µC/OS-Ⅱ通过OSTaskCreate() 或 OSTaskCreateExt()来 建立任务。函数OSTaskCreate()的声明为:
11
Alternate Structure
void YourTask (void *pdata)

(5)uCOS实时操作系统

(5)uCOS实时操作系统
第五讲:ucOS/II实时操作系统
张小波老师
1
What is uC/OS? u: Micro C:control uC/OS : 适合于小的、控制器的操作系统 小巧 公开源代码,详细的注解 可剥夺实时内核 可移植性强 多任务 确定性
2
The Story of uC/OS

7
任务的状态 OSTCBStat

运行,就绪,等待,挂起…
OSTCBStat 低四位
挂起 队列邮箱信号量

可以有多个准备就绪的任务,但一个时 刻只有一个任务可以运行,OSHighRdy
8
任务的调度--OSSched


uC/OS是占先式实时多任务内核,优先级 最高的任务一旦准备就绪,则拥有CPU的 所有权开始投入运行。 uC/OS中不支持时间片轮转法,每个任务 的优先级要求不一样且是唯一的,所以 任务调度的工作就是:查找准备就绪的 最高优先级的任务并进行上下文切换。
void Task1(void) { while(1) { blinkled1(); Task1Data++; OSTimeDly(25); } }
24
void main() { sysinit(); OSInit (); OSTaskCreate ( Task1, (void *)&Task1Data, (void *)&Task1Stk[TASK_STK_SIZE],Task1prio); OSTaskCreate (Task2, (void *)&Task2Data, (void *)&Task2Stk[TASK_STK_SIZE],Task2prio); ticker_start(OS_TICKS_PER_SEC); OSStart(); }

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

uCOS-II嵌入式实时操作系统原理与移植
任务调度前上下文切换
1,决定是否进行上下文切换 2,保存当前执行进程的上下文
包括程序计数器PC、通用寄存器、 与任务有关的数组、表格、链等。
uC/OS-II采用可
剥夺实时内核,
含义是最高优先
0
级任务一旦就绪,
总能得到CPU使
1
用权。
系统保留4个
2
最高优先级
3
4
5
执行该任务
6
7
……
uC/OS-II 的中断(ISR)
任务2—TCB--就绪—任务堆栈
任务3--TCB--等待—任务堆栈
任务4--TCB --睡眠—任务堆栈
uC/OS-II的任务之间通信
任务之间共享的信息成为事件,同一时刻只能有一个任务使 用共享信息,因此为每个事件构建一个事件控制块ECB来保 证任务之间安全共享信息。事件控制块总数由OS_CFG.H中的 OS_MAX_EVENTS定义。事件包括信号量、邮箱、消息队列。
内存组配置文件 储存器映射MMU初始化与操作 Nand flash控制器初始化与操作
与CPU相关的配置选项 开机画面BMP文件 开机画面BMP文件 开机画面BMP文件 初始化mini2440目标板 定义任务优先级、堆栈大小及函数原型声明 初始化操作系统定时器0 开机画面BMP文件
关于信号量和等待的API功能函数
//任务循环
{
OSPrintf("\nEnter Main Task\n");
OSTimeDly(OS_TICKS_PER_SEC); //将任务延迟一段时间,进入等待态
}
}
uC/OS-II的任务都运行在无限循环中。
欢迎访问机电技术博客:/spurtltl@126/

嵌入式系统rtosucos-ii原理及应用-5

嵌入式系统rtosucos-ii原理及应用-5

2
节拍
了解不同类型任务的实时性要求,如何在UCOS-II中进行协作操作以满足这些需 求?掌握UCOS-II中节拍的基本概念,以及如何实现节拍的同步、异步和互斥。
3
定时器和超时
UCOS-II如何实现定时器、超时和等待机制,以及如何在应用中灵活应用?
U C O S-II:信号量、互斥量和事件标志
信号量
RTO S 的应用开发和市场趋势
1
RTO S 的应用开发流程
从开发到部署,RTOS应用开发的整个流程是怎样的?您如何提高开发效率和减少开发时间?
2
RTO S 的市场趋势
RTOS市场正在迅速发展。它们将如何重塑未来的嵌入式应用行业?哪些新技术将推动RTOS的 应用发展?
3
未来的发展趋势
随着嵌入式系统日益广泛地应用在日常生活和工作中,RTOS也在迅速发展。未来的发展趋势 和创新技术是什么?它们将如何推动嵌入式系统的革新和发展?
实时操作系统的定义和意义
定义
什么是实时操作系统?什么是实时和非实时的区别? 在嵌入式系统的应用中,实时系统扮演了什么角色?
意义
行业中对实时系统的需求越来越高,其价值和重要 性是什么?作为一个嵌入式系统的工程师,你将需 O S-II:任务调度算法和内核结构
任务调度算法
什么是任务调度算法,为什么它对UCOS-II如此重要?在哪些场景下,UCOS-II采用任务调度 算法?
内核结构
什么是UCOS-II的内核结构,其模块分为哪几部分?你如何可以根据设计需求,自定义内核 结构?
U C O S-II:任务管理和节拍
1
任务管理
UCOS-II是如何管理任务的?有哪些方法可以在UCOS-II中实现任务管理以控制可 靠性和稳定性?

嵌入式实时操作系统ucosii

嵌入式实时操作系统ucosii

医疗电子
ucosii在医疗电子领域 中应用于医疗设备、监
护仪、分析仪等。
物联网
ucosii在物联网领域中 应用于传感器节点、网
关、路由器等设备。
02
ucosii的体系结构与内核
任务管理
任务创建
ucosii提供了创建新任务的函数,如 OSTaskCreate(),用于创建新任务。
任务删除
ucosii提供了删除任务的函数,如 OSTaskDelete(),用于删除不再需要的任 务。
时间管理
01
02
03
时间节拍
ucosii通过定时器产生固 定时间间隔的节拍信号, 用于任务调度和时间管理 。
超时处理
ucosii支持超时机制,当 某个任务等待时间超过预 定阈值时触发相应的处理 函数。
时间函数
ucosii提供了一系列时间 函数,如OSTimeDly()、 OSTimeTick()等,用于时 间相关的操作和控制。
智能家居
ucosii适用于智能家居领域,可应用于 智能家电控制、家庭安全监控等场景。
02
03
医疗电子
ucosii适用于医疗电子领域,如医疗设 备控制、病人监控等,其可靠性和实 时性为医疗系统提供了有力保障。
THANKS。
应用软件的开发
任务管理
在UCOSII中,任务是用来实现应用程序功能的。在进行应用软件的开发时,需要创建和管理任务。这包括任务的创 建、删除、挂起和恢复等操作。
任务间通信
为了实现任务间的协同工作,需要进行任务间通信。UCOSII提供了信号量、消息队列、互斥量等机制来实现任务间 通信。在进行应用软件的开发时,需要利用这些机制来实现任务间的同步和数据交换。

嵌入式实时操作系统ucosII

嵌入式实时操作系统ucosII

嵌入式实时操作系统ucosIIucosII是一款源代码公开、可免费使用的嵌入式实时操作系统。

它是由德国嵌入式系统专家brosse于1992年编写完成的,主要适用于嵌入式系统的开发。

ucosII具有源代码短小精悍、可移植性好、稳定性高等优点,被广泛应用于各种嵌入式系统中。

源代码短小精悍:ucosII的源代码只有几百KB,相对于其他RTOS来说,其代码量较小,易于理解和修改。

可移植性好:ucosII采用了可移植性的设计方法,可以在不同的处理器和编译器上进行移植和优化。

稳定性高:ucosII在各种嵌入式系统中得到了广泛应用,其稳定性和可靠性得到了充分的验证。

支持多任务:ucosII支持多任务处理,可以同时运行多个任务,提高系统的效率和响应速度。

实时性:ucosII具有较高的实时性,可以满足各种实时性要求高的应用场景。

可扩展性:ucosII具有较好的可扩展性,可以根据需要进行功能扩展和优化。

系统内核:包括任务调度、任务管理、时间管理、内存管理等核心功能。

中断处理程序:处理各种中断请求,包括硬件中断、软件中断等。

系统API:提供了一套完善的API函数,方便应用程序的开发和调试。

调试和测试工具:包括各种调试和测试工具,如内存检查工具、性能分析工具等。

ucosII被广泛应用于各种嵌入式系统中,如工业控制、智能家居、智能交通、航空航天等。

其应用场景涵盖了消费类电子产品、医疗设备、通信设备、汽车电子等领域。

ucosII作为一款源代码公开、可免费使用的嵌入式实时操作系统,具有短小精悍、可移植性好、稳定性高等优点。

它广泛应用于各种嵌入式系统中,为应用程序的开发提供了便利和支持。

其可扩展性和实时性也使得它在各种领域中具有广泛的应用前景。

随着嵌入式系统的广泛应用,对嵌入式操作系统的需求也日益增长。

uCOSII是一种流行的实时嵌入式操作系统,具有轻量级、实时性、可扩展性等优点。

本文将介绍如何在AT91平台上实现uCOSII的移植。

UCOS-II操作系统详解

UCOS-II操作系统详解

VμC/OS 和μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。

CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。

工作原理编辑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为下一个任务的地址的目的。

任务管理编辑uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。

实验3:ucosII实时操作系统

实验3:ucosII实时操作系统

实验3:ucosII实时操作系统————————————————————————————————作者:————————————————————————————————日期:实验3 uC/os II 实时操作系统一、实验目的:1。

掌握PC上安装的硬件设计环境Quartus II和应用程序设计环境Nios II;2. 了解Nios II让uC/os II跑在DE2—70上实现多任务并发性;3。

了解基于FPGA的嵌入式系统开发过程。

二、实验步骤:(一)硬件工程的初建:新建“demo_ucos"工程鼠标左键双击桌面上的“Quartus II”快捷方式图标,耐心等待片刻,即可启动“Quartus II”设计页面,如图3-1所示。

图3-13在“Quartus II”设计页面内,鼠标左键单击File-> New Project Wizard,弹出“New Project Wizard:introduction”,如图3-2所示.图3-2鼠标左键单击“next”按钮跳过此页,进入“New Project Wi zard: Directory, Name, Top-level entity”页面。

在“New Project Wizard: Directory,Name, Top—level entity”页面:“the working directory for this project”(工程路径)可以任意填写,例如:“E:\demo\demo_ucosii"。

“工程的工作目录”如前“E:\demo\demo_ucosii",表示将会在E盘上产生一个文件夹“demo”,在“demo”文件夹里产生另一个文件夹“demo_ucosii”(工程文件夹,保存工程文件),此实验后续步骤中产生的各种文件会自动保存到路径“E:\demo\demo_ucosii"下。

“the name of this project”(工程名字)填写为“demo_ucos”。

ucos-ii工作原理

ucos-ii工作原理

ucos-ii工作原理uC/OS-II(Micro C/Operating System-II)是一种用于嵌入式系统的实时操作系统。

它的工作原理可以简单归纳为以下几个步骤:1. 任务管理:uC/OS-II使用优先级调度算法管理多个任务。

每个任务都有一个优先级,高优先级的任务会优先执行。

uC/OS-II通过一个任务控制块(TCB)来管理每个任务的信息,包括任务的状态、堆栈信息、优先级等。

2. 中断处理:uC/OS-II可以处理多种类型的中断。

当发生中断时,uC/OS-II会根据中断类型进行相应的处理,并且可以自动切换到中断服务程序(ISR)进行执行。

中断服务程序中的代码通常是短小且高效的,用于处理特定的中断事件。

3. 任务切换:uC/OS-II使用抢占式的任务调度方式,因此任务切换可以发生在任何时刻。

当一个任务的时间片用尽或者有更高优先级的任务需要执行时,uC/OS-II会保存当前任务的上下文信息,并切换到下一个任务的执行。

任务切换时,uC/OS-II会保存当前任务的栈指针等信息,并从下一个任务的栈指针中恢复相应的上下文,以使下一个任务继续执行。

4. 事件同步:uC/OS-II提供了多种事件同步机制,如信号量、事件标志、消息邮箱等,用于任务之间的同步和通信。

这些机制可以帮助任务之间按照一定的顺序进行执行,实现数据共享和互斥访问等功能。

5. 内存管理:uC/OS-II提供了内存管理功能,可以动态分配和释放内存块。

这种内存管理机制可以帮助节省内存空间,提高系统的效率。

总而言之,uC/OS-II通过任务管理、中断处理、任务切换、事件同步和内存管理等机制,实现了对嵌入式系统的实时调度和资源管理,以提供稳定、可靠的操作系统支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 第四级 第五级
2
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
实时操作系统特点 任务管理 单击此处编辑母版文本样式 任务间同步和通信
– 第二级
– 第四级 定时器管理
多任务和基于优先级的任务调度
消息,事件和信号量 第三级 提供确定的任务切换时间
第五级
中断管理 存储管理
3
深圳市英蓓特信息技术有限公司
– 第二级
第三级
COS-II介绍
– 第四级 第五级
11
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
COS-II简介
COS -II 是 美国 一个名为Jean Labrosse的工程师开发 的实时操作系统.它以小内核,多任务, 丰富的系统服 务,容易使用等特点越来越受欢迎 单击此处编辑母版文本样式
9
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
EmbestIDE和RTOS的来自合Embest IDE完全支持源代码方式提供的RTOS,只需 要将RTOS的源代码纳入Embest IDE的工程管理目录中 单击此处编辑母版文本样式 ,和应用程序一起编译,即可调试RTOS及应用程序.
– 第二级
16
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
移植条件之一 ---- 可重入代码
可重入代码指的是可以被多个任务同时调用,而不会破坏 数据的一段代码,或者说代码具有在执行过程中打断后再 次被调用的能力. 单击此处编辑母版文本样式 int temp; 第三级 void swap (int *x,int*y) – 第四级 { 第五级 temp=*x; *X=*Y; *y=Temp; }
5
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
uCOS操作系统
简单,高效,易用 完全免费使用,提供全部源代码 单击此处编辑母版文本样式
– 支持64个任务 第二级
支持多种CPU 第三级 提供邮箱,信号量以及消息队列三种任务间通讯方式 – 第四级 第五级 无设备驱动程序,缺乏足够多的应用模块(如TCP/IP 协议以及GUI模块等等) 无技术支持
第三级 Embest – 第四级 IDE支持二进制码方式提供的RTOS,条件是 第五级 RTOS的二进制码是使用GNU工具链编译的,将该二进 制码文件作为库链接进Embest IDE应用工程,即可调试 RTOS及应用程序.
10
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
单击此处编辑母版文本样式
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
Embest IDE for ARM 研讨会系列
单击此处编辑母版文本样式
– 第二级
嵌入式实时操作系统 第三级
– 第四级 第五级
COS -II
1
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
单击此处编辑母版文本样式
– 第二级
RTOS介绍 第三级
typedef typedef typedef typedef typedef typedef
unsigned unsigned signed unsigned signed unsigned signed float double
char char char short short long long
– 第二级
第三级
COS-II移植
– 第四级 第五级
14
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
COS-II体系
应用软件
单击此处编辑母版文本样式 OS_CORE . C 核心代码
OS_MBOX – 第二级 . C
核心代码(处理器无关)
设置代码(应用相关)
OS_Q . C 第三级
第五级
中断可以使正在执行的任务暂时挂起.如果优先 级更高的任务被唤醒,则高优先级的任务在中断嵌 套全部退出后立即执行,中断嵌套可达255层. 公开源代码,可固化,可确定性,任务 栈,提供很多系统服务,稳定性和可靠性 强
13
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
单击此处编辑母版文本样式
. ASM
15
OS_CPU_C . C
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
移植的条件
1,处理器的C编译器能产生可重入代码
单击此处编辑母版文本样式
第三级
– 2,用C语言就可以打开和关闭中断 第二级
– 第四级 3,处理器支持中断并且能产生定时中断 第五级
4,处理器支持容纳一定量数据的硬件堆栈 5,处理器有将堆栈指针和其他CPU寄存 器读出和存储到堆栈或内存中的指令
OS_MEM . C
OS_SEM . C – 第四级 OS_TASK . C 第五级 OS_TIME . C uCOS_II . H
消息队列 存储管理 消息管理 信号量 任务调度 定时管理
OS_CFG . H INCLUDES . H
OS_CPU . H 移植代码(处理器相关)
OS_CPU . H OS_CPU_A OS_CPU_A . ASM OS_CPU_C . C
19
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
移植步骤之二 ---- OS_CPU_A.ASM OSStartHighRdy( ) 单击此处编辑母版文本样式
– 第二级 OSCtxSw( )
第三级
– 第四级 OSIntCtxSw() 第五级
OSStart( )调用本函数; OSStart( )负责使就绪状态的任务开始运行; OSStartHighRdy( )负责获取新任务的堆栈指针并 从堆栈指针中恢复新任务的所有处理器寄存器.
– 第二级
第三级 COS -II 实时系统的商业应用非常广泛,具有非常稳定 – 第四级 ,可靠的性能,成功应用于生命科学,航天工程等重大 第五级 科研项目中.由于其极小的内核,特别适用于对程序代 码存储空间要求极其敏感的嵌入式系统开发 OS-II是一款源码公开的实时操作系统
12
深圳市英蓓特信息技术有限公司
BOOLEAN; INT8U; INT8S; INT16U; INT16S; INT32U; INT32S; FP32; FP64;
#define OS_STK_GROWTH 0 #define OS_STK_GROWTH 1
/*从下往上*/ /*从上往下*/
四,定义OS_TASK_SW()宏
从低优先级任务切换到高优先级时调用 使用软中断直接将中断向量指向 OSCtxSw 直接调用 OSCtxSw
18
OS_ENTER_CRITICAL ( )
第三级
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
移植步骤之一
一,定义编译器相关的数据类型 typedef
typedef 单击此处编辑母版文本样式 typedef
– 第二级 二,定义允许和禁止中断宏 第三级
– 第四级 第五级 三,定义栈的增长方向
ARM软件开发系列培训及推广
COS-II的特点 可移植性 单击此处编辑母版文本样式 指的是用户可以在应用程序中通过语句#define 可裁剪 constants来定义所需的COS-II功能模块,以减少 – 第二级 占先式 – 第四级 多任务 中断管理 其它特点
第三级
不必要的存储器空间的开支. 属于完全占先式的实时内核,意味着COS-II总 是运行就绪条件下优先级最高的任务. 可以管理64个任务,支持56个用户任务.赋予每 个任务的优先级必须是不相同的,不支持时间片轮 转调度法. 绝大部分的COS-II的源代码是用移植性很强的 ANSI C写的.和微处理器硬件相关的那部分使用 汇编语言写,并且已经压到最低限度. 可在绝大多数8位,16位,32位,64位微处理器, 微控制器,数字信号处理器(DSP)上运行.
– 第四级 第五级 OSTaskSwHook(
第三级
)
OSTaskStatHook( ) OSTimeTickHook( )
外连函数 用来扩展COS-II功能, 必须声明,但并不一定 要包含任何代码.
21
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
单击此处编辑母版文本样式
– 第二级
ARM软件开发系列培训及推广
何时使用实时操作系统 完全取决于软件项目的复杂程度 单击此处编辑母版文本样式 并行的功能模块比较多
– 第二级 定时处理的功能比较多
第三级 程序的执行需要判断很多条件参数或资源 – 第四级
第五级
需要规划代码执行的优先顺序 要保证多个模块的执行时间
4
深圳市英蓓特信息技术有限公司
OSTickISR
定时中断函数; OSTickISR( )主要负责在进 入时保存处理器寄存器, 完成任务的切换,退出时 恢复寄存器并返回.
20
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
移植步骤之三 ---- OS_CPU_C.C
任务创建时调用本函数; OSTaskStkInit( ) OSTaskStkInit( ) 负责初 单击此处编辑母版文本样式 始化任务的堆栈结构; OSTaskCreateHook( ) – 第二级 OSTaskDelHook( )
7
深圳市英蓓特信息技术有限公司
ARM软件开发系列培训及推广
uCLinux操作系统
从linux移植而来,复杂但完全功能 完全免费使用,提供全部源代码 单击此处编辑母版文本样式
– 第二级
支持多种CPU 使用GNU工具链开发,提供通用的linux API
第三级
有完备的设备驱动程序和应用模块(可从linux中移植) – 第四级 第五级 使用直接物理内存访问方式 完整的TCP/IP协议栈 需要较多的系统资源,内核<512KB 无技术支持,但国内使用较多
相关文档
最新文档