第4讲嵌入式实时操作系统COS-Ⅱ分析

合集下载

嵌入式μCOS-II内核实验四(哲学家就餐问题的实现)

嵌入式μCOS-II内核实验四(哲学家就餐问题的实现)
嵌入式μcos-ii内核实验四
目录
• 引言 • 哲学家就餐问题概述 • μcos-ii内核任务管理 • 哲学家就餐问题的μcos-ii实现 • 实验结果与分析 • 总结与展望
01
引言
嵌入式系统与μcos-ii内核简介
嵌入式系统
是一种专用的计算机系统,主要用于控制、监视或帮助操作 机器设备。它通常具有实时性、可靠性和低功耗等特点,广 泛应用于工业控制、智能家居、医疗设备等领域。
任务优先级与调度
任务优先级
在μcos-ii内核中,每个任务都有自己 的优先级。优先级高的任务会优先获 得CPU的使用权。
任务调度
μcos-ii内核使用基于优先级的抢占式任务 调度算法。当一个高优先级的任务就绪时, 内核会立即抢占当前正在运行的任务,并切 换到高优先级的任务上运行。
任务同步与通信
任务同步
解决方案的分类与比较
解决方案分类
解决哲学家就餐问题的方案可以分为两类:静态方案和动态方案。静态方案在 系统启动时分配固定的资源,而动态方案则在运行时动态地分配资源。
解决方案比较
静态方案实现简单,但可能导致死锁或饥饿问题。动态方案可以更好地解决这 些问题,但实现起来较为复杂,需要更多的系统资源和时间。在实际应用中, 需要根据具体需求和系统限制选择合适的解决方案。
05
实验结果与分析
实验环境与配置
01
硬件平台
ARM Cortex-M4微控制器 (具体型号为
STM32F407ZGT6)
02
开发环境
Keil uVision5
03
04
实验任务
实现基于μcos-ii内核的多任务 切换
配置参数
任务优先级、任务堆栈大小、 任务状态等

嵌入式实时操作系统uCOS-II(中文版)

嵌入式实时操作系统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并且运行。

嵌入式实时操作系统μCOS-II 摘要

嵌入式实时操作系统μCOS-II 摘要


$0000 $0400 $0800
$2000
$4000
1KB 寄存器区 EEPROM RAM
8KB 未定义
1KB 寄存器
2KB EEPROM
8KB RAM
16KB 固定Flash
$3E $8000
8个16KB 页面Flash
16KB 分页Flash
关键词:实时操作系统;μC/OS-II;MC9S12DG128 单片机;移植
中图分类号:TP 368.2
文献标识码:A
Transplantation of Embedded real-time operating system μC/OS-II into S12 MCU (Department of Computer Engineering, Anyang Institute of Technology, Anyang
$38 $39 $3A $3B $3C $3D $3E $3F
$C000
$3F 16KB 固定Flash
$FF00
中断向量区
$FFFF
图 1 MC9S12DGl28 复位后的内存空间分布情况
可以通过设置 INITRG,INITRM,INITEE 寄存器来重新分配各存储器的位置。这些 寄存器只能写一次,建议在初始化时分配存储器的位置。如果映射出现地址重叠时, S12CPU 内部的优先级控制逻辑会自动屏蔽级别较低的资源,保留级别最高的资源。寄存 器具有最高优先级,与其重叠的 RAM 和 EEPROM 此时无效。存储器的优先级如下表所列。
μC/OS-II 的 95%代码是由 ANSI C 写成的,具有很好的移植性。要实现 μC/OS-II 向 S12 的移植,主要是做两方面的工作,一是重新定义内核的大小和功能;二是为内核 编写与硬件相关的代码。μC/OS-II 的文件结构如图 2 所示。

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第四部分D

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第四部分D

.OSTCBOpt 存放有关任务的附加信息。

当用户将OS_TASK_CREATE_EXT_EN设为1 时,这个变量才有效。

通过设置该选项,可起用任务栈检查功能。

例如:作为参数传给OSTaskCreateExt()。

μC/OS-Ⅱ目前只支持 3 个选择项:OS_TASK_OTP_STK_CHK, OS_TASK_OPT_STK_CLR 和OS_TASK_OPT_SAVE_FP 。

OS_TASK_OTP_STK_CHK 用于告知TaskCreateExt(),在任务建立的时候任务栈检验功能得到了允许。

S_TASK_OPT_STK_CLR 表示任务建立的时候任务栈要清零,只有在用户需要有栈检验功能时,才需要将栈清零。

如果不定义OS_TASK_OPT_STK_CLR,而后又建立、删除了任务,栈检验功能报告的栈使用情况将是错误的。

假如任务一旦建立就决不会被删除,且用户初始化时,已将RAM 清过零,就不需要再定义OS_TASK_OPT_STK_CLR,这样可以节约程序执行时间。

传递了OS_TASK_OPT_STK_CLR 将增加TaskCreateExt()函数的执行时间,因为要将栈空间清零。

栈容量越大,清零花的时间越长。

最后一个选择项OS_TASK_OPT_SAVE_FP 通知TaskCreateExt(),任务要做浮点运算。

如果微处理器有硬件的浮点协处理器,则所建立的任务在做任务调度切换时,会保存浮点寄存器的内容。

.OSTCBId 用于存储任务的识别码。

该变量现在没有使用,留给将来扩展用。

.OSTCBNext 和.OSTCBPrev 用于任务控制块OS_TCBs 的双向使用表链接,该链表在时钟节拍函数OSTimeTick()中使用,用于刷新各个任务的任务延迟变量.OSTCBDly。

OSTCBNext、OSTCBPrev:用于将任务控制块OS_TCB插入到空闲链表;或在任务建立的时候链接到双向使用链表中;或在任务删除的时候从链表中被删除。

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第四部分E

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第四部分E

根据给定的优先级通过设定就续表,使任务进入就绪态(参见程序清单L3.1.7)的例子:●假设要使优先级为12的任务进入就绪状态,12(1100b)即任务的标识号,就是要将OSRdyTbl[1]的第4位置1,且将OSRdyGrp的第1位置1。

依照算法,将该任务放入就绪表的相应数学表达式为:OSRdyGrp |=0x02 ;OSMapTbl[12>>3]OSRdyTbl[1] |=0x10 ;OSMapTbl[4]●而要让优先级为21的任务进入就绪态,21(10101b)即任务的标识号,就是要将OSRdyTbl[2]的第5位置1,且将OSRdyGrp的第2位置1。

依照算法,将该任务放入就绪表的相应数学表达式为:OSRdyGrp |=0x04 ;OSMapTbl[21>>3]OSRdyTbl[2] |=0x20 ;OSMapTbl[5]从上面的计算可知:若要将OSRdyGrp及OSRdyTbl[]的第n位置1,可通过分别把OSRdyGrp及OSRdyTbl[]的值与2n 相或来实现。

在μC/OS-Ⅱ中,已经把2n的n=0-7的8个值先计算好作为常数存在数组OSMapTbl[7]中了,这正是前面的表3.1 OSMapTbl[]: OSMapTbl[0] = 20 = 0x01(0000 0001)OSMapTbl[1] = 21 = 0x02(0000 0010)……OSMapTbl[4] = 24 = 0x10(0001 0000)……OSMapTbl[7] = 27 = 0x80(1000 0000)(4)任务调度器调度是内核的主要职责之一,就是要决定该轮到哪个任务运行了。

在时间片轮转调度法中,当两个或两个以上任务有同样优先级,内核允许一个任务运行事先确定的一段时间片,然后切换给另一个任务。

所以,也叫做时间片调度。

内核在满足以下条件时,把CPU控制权交给下一个处于就绪态的任务:●当前任务已无事可做●当前任务在时间片还没结束时已经完成了。

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第二部分

嵌入式实时操作系统(μCOS-II)原理与应用-目录与正文-最新版第二部分

③链接器选项设置。

在Debug Settings 对话框中选择ARM Linker 列表项,将出现如图1-15所示的ARM Linker选项组对话框。

其中Output 选项卡用于控制链接器进行链接操作的类型。

选择Simple链接类型时,在Output 选项卡的Simple image 文本框中设置链接的Read-Only (只读)和Read-Write(读写)地址,如图2-5所示,链接器将依照所设定的地址映像方式,生成简单的ELF格式的映像文件。

地址0x30008000是开发板上SDRAM 的真实地址,是由系统的硬件决定的。

0x30200000 指的是系统可读写的内存地址。

也就是说,在0x30008000∼0x30200000 之间是只读区域,存放程序的代码段,从0x30200000 开始是程序的数据段,可读可写。

图1-15 设置链接地址范围以上只是一种简单设置,如果程序需要用到标准C 库函数时,可使用scatter 文件来设置链接地址;在标准C 中使用malloc 及其相关的函数,需要使用系统的堆(Heap)空间时,也可以通过scatter 文件来描述系统HEAP 段的位置。

这时,需要按图1-16进行链接地址的设置。

图1-16 通过scatter 文件设置链接地址如图1-16,在Output 选项卡中,选择LinkType 为Scattered,输入scatter文件名为scat_ram.scf;然后切换到Options 选项卡在Image Entry Point 框中输入0x30008000,把程序的入口定位在0x30008000。

(也可以在图1-16 的Command Line 框中直接输入-entry 0x30008000 -scatter scat_ram.scf 进行上述设置。

)针对2410-S 开发板,scat_ram.scf 文件内容如下:LOAD 0x30008000 ;load region{RAM_EXEC +0 ;PC{startup.o (init, +FIRST)* (+RO)}L0PAGETABLE 0x30200000 UNINIT ;about 2MByte offset SDRAM{pagetable.o (+ZI)}STACKS +0x100000 UNINIT ;64KByte under L0 pagetable{stack.o (+ZI)}RAM +0{* (+RW,+ZI)}HEAP +0 UNINITheap.o (+ZI)}EXCEPTION_EXEC 0 OVERLAY ;exception region{exception.o (+RO)}}该文件创建了一个RAM_LOAD程序区域,起始地址为0x30008000和6个数据区域(ROM_EXEC, RAM_EXEC, RAM, HEAP, STACKS, EXCEPTION_EXEC)。

嵌入式实时操作系统μ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还提供了任务切换和上下文切换机制,确保任务之间的切换及时有效。

嵌入式实时操作系统μcos_Ⅱ的移植探讨

计算机应用Computer Application《自动化技术与应用》2003年第22卷第5期嵌入式实时操作系统μc/os-Ⅱ的移植探讨雷必成,吴高标,吴永良(台州学院计算机系 台州 317000)摘要:介绍一种嵌入实时操作系统———μc/os-Ⅱ的特点和基本组成。

以μc/os-Ⅱ在MCS-51上的移植为例,着重讨论μc/os-Ⅱ在移植过程中必须注意的几个问题。

并讨论其它处理器对同一问题的不同处理方式。

关键词:实时操作系统;嵌入式;移植;MCS-51中图分类号:TP31612 文献标识码:A 文章编号:100327241(2003)0520069203Transplanting of The Embedded Real T ime OperationSystem-μcΠo s-ⅡLEI Bi-cheng,WU G ao-biao,WU Yong-liang(Computer Department o f Taizhou Univer sity,Taizhou317000,China)Abstract:To introduce the characteristics and basic constitution o f the embedded Real Time Operation System-μcΠos-Ⅱ,it puts an emphasis on sever2 al problems on the transplanting process o fμcΠos-Ⅱ,taking“μcΠos-Ⅱtransplanting into MCS-51”for example.And it also involves different approaches to the same issue on other processor s.K ey words:RTOS;Embedded;Transplanting;MCS-511 引言在嵌入式应用系统的设计中,实时操作系统的应用越来越受到重视。

嵌入式实时操作系统μCOS-Ⅱ的研究

嵌入式实时操作系统μC/OS-Ⅱ的研究
近年来,随着计算机和通信技术的快速发展,嵌入式系统技术以其简洁、高效等优点成为了最热门的技术之一。

目前,航天航空、交通、工业控制、通信等各个领域已经广泛的应用了嵌入式系统技术。

在嵌入式系统中,嵌入式操作系统的实时性越来越来重要。

嵌入式实时操作系统μC/OS-Ⅱ具有小巧、性能稳定、开源、移植简单、硬实时性等优点而得到广泛的应用。

虽然μC/OS-Ⅱ有如此多的优点,但是实时性方面还存在不足之处。

本文深入分析了嵌入式实时操作系统μC/OS-Ⅱ的内核,重点研究了任务延时与软件定时器功能。

针对μC/OS-Ⅱ操作系统中任务延时的缺陷,参考C8051F系列单片机的片内PCAO (Programmable Counter Array 0),研究了一种基于硬件的、以提高系统的运行速度与实时性的延时机制。

经测试,得出此方法可以提高系统的实时性、减小系统的额外开销。

本文还对软件定时器中多个定时器同时完成定时的情况进行分析,根据存在的问题为定时器赋予不同的优先级,使用独立的任务执行回调函数,使定时器的回调函数按优先级先后顺序执行,以提高系统的实时性。

在以第二代Cortex-M3为内核的路虎LPC1786开发板上进行测试,通过比较原操作系统与改进后系统的运行情况,得出改进后的系统提高了系统的实时性。

嵌入式实时操作系统μCOS

嵌入式实时操作系统μCOS系统因为它具有软件代码小、高度、响应速度快等特点已经使它在许多领域得到广泛的应用。

从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等。

嵌入式系统通常由硬件环境和操作系统构成。

在嵌入式操作系统的统一调度管理下实现对全部系统资源的合理利用和分配,达到提高系统性能和有效利用有限资源的目的。

μCOS-Ⅱ作为一个源码开放的嵌入式实时操作系统,同时具有良好的可移植性、可裁剪性、可剥夺性、稳定性和牢靠性等优点,使其成为许多嵌入式操作系统的首选。

本文将μCOS-Ⅱ在的8位处理器芯片HC9S08上移植实现。

2、μCOS-Ⅱ系统结构μCOS-Ⅱ是一个完整的可移植可固化可裁剪的抢占式实时多任务内核。

可以在不需要做很大修改的基础上便利的移植到多种处理器上。

条件是:该处理器要具有一定数量的堆栈,能够用法软件中断,产生定时器中断,此外,编译器要支持可重入代码,并且要能用法汇编实现对处理器内部寄存器的相关操作。

通过μCOS-Ⅱ的管理,使多个任务之间互相协调,分时的占用CPU,实现充分利用资源和实时等相应的功能。

任务通常是一个死循环,用来完成某一特定的功能;一个任务相当于一个线程。

μCOS-Ⅱ可以管理多达64个任务,每个任务都具有一个唯一的合法优先级。

但是,优先级最低的那个任务已经被系统定义为空闲任务,用户不能用法。

用户可以通过函数OSTaskCreate()来创建任务,通过OSTaskDel()来删除任务。

任务可能有以下五种状态:睡眠态、就绪态、运行态、等待状态、中断服务态。

利用不同的系统函数可以实现任务在各状态之间的转换。

μCOS-Ⅱ通过对就绪表的操作总是挑选在就绪任务中优先级最高的那个任务开头运行。

任务级的调度是由函数OSSched()来完成的;而中断级的调度是由OSIntExt()完成的。

任务切换的过程分为两步:将被挂起任务的处理器寄存器状态保存在它的任务堆栈中;将将要执行的任务堆栈中保存的寄存器值弹处第1页共4页。

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

全世界有数百种产品在应用 :
� � � � � � � � � � � �
Avionics Medical Cell phones Routers and switches High-end audio equipment Washing machines and dryers UPS (Uninterruptible P ower S upplies) Industrial controllers GPS Navigation Systems Microwave Radios Instrumentation Point-of-sale terminals others
� �

In 2001, µC/OS-II was translated to Chinese.
3 4
µC/OS简介(续)
在特定处理器上的移植工作绝大部分集中在多任务切 µ C/OS – II II在特定处理器上的移植工作绝大部分集中在多任务切 换的实现上。因为这部分代码主要用来保存和恢复处理器现场,许 多操作如读 / 写register 不能用 C语言,只能用汇编语言来完成。 移植到 ARM 处理器上,只需修改 3个与体系结构相关 将µ C/OS –II II移植到 移植到ARM ARM处理器上,只需修改 行代码。 3 个文件是: 的文件即可,约 500 500行代码。
µC/OS简介(续)

的移植 OS_CPU_C.H OS_CPU_C.H的移植
上, GCC 将 int 编 数据类型与所用的编译器有关(在 X86 X86上, 上,GCC GCC将 int编 4 字节, MSVC++ 则编译为 2字节);定义堆栈的单位 译为 译为4 字节,MSVC++ MSVC++则编译为 则编译为2 register 的长度一致。 ,必须与 ,必须与register register的长度一致。


中断管理
中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒, 层。 则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达 255 255层。

稳定性与可靠性
10
9
µC/OS-II 图书 C/OS-II图书
� �
µC/OS-II的各种商业应用

描述了 µC/OS-II 内部的工作原理 中包含了源代码 随书的 CD CD中包含了源代码
� � � � � �
µC/GUI

消息队列(Message Queues ) 内存管理(Fixed Sized Memory Block management
嵌入式的用户界面 用ANSI C 书写 C书写 8, 16, 32-bits CPU 支持任何 支持任何8, 彩色,灰、度,等级或黑白显示 代码尺寸小
µC/GUIgraphical user interface C/GUI-graphical
µC/GUI is a universal graphical software for embedded applications. It is designed to provide an efficient, processor and LCD-controller independent graphical user interface to any application using a graphical LCD. It works in single as well as in multi-task environments. µC/GUI can be adapted to just about any size of physical or virtual display with an LCD controller and CPU.
美国人 Jean Labrosse 1992 年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动 机控制、高速公路电话系统、自动提款机等 年发布 µ C/OS -II ,目前的版本 µ C/OS -II V2.8X 1998 1998年发布 C/OS-II -II,目前的版本 年,得到美国航空管理局( FAA )的认证,可以用于飞行器 2000 2000年,得到美国航空管理局( FAA)的认证,可以用于飞行器 中 ( ) 网站 网站
The Real-Time Kernel is a highly portable, ROMable, very scalable, preemptive real-time, multitasking kernel (RTOS) for microprocessors and microcontrollers. µC/OS-II can manage up to 64 application tasks.
本节提要
1 1 µC/OS-Ⅱ 简介 2 2 Ⅱ内核结构 µC/OSC/OS-Ⅱ 3 3 4 4 5 5 Ⅱ任务管理 µC/OSC/OS-Ⅱ µC/OS-Ⅱ时间管理
嵌入式系统应用
与µC/OS-Ⅱ ARM与 ——ARM
第四讲 实时操作系统 µC/OS-Ⅱ分析
安徽工业大学计算机学院 安徽工业大学计算机学院
1)时钟节拍中断服务函数 OSTickISR() 2)退出和进入临界区函数 进入临界区前关闭中断; 退出临界区时恢复原来的中断状态。 3)任务级上下文切换函数 OS_TASK_SW() 4)OSStartHighRd() 函数 中 在 OSStart() 多任务启动后运行一次,负责从最高优先级任务 TCB TCB中 SP ,恢复现场并移交控制权,直到该任务被阻塞或被更高优先 获得 获得SP SP,恢复现场并移交控制权,直到该任务被阻塞或被更高优先 。 级任务抢占 CPU CPU。
工业界最清晰的源代码

除英文版外,有中文和韩文版
English
ISBN 1-57820-103-9 美国CMP BOOK
Chinese
ISBN 7-81077-290-2 北京航空航天大学出版社
Korean
ISBN 89-951540-5-5

11
12
2
µ C/OS-II can provide the following services:
)
� � � �
时钟管理(Time Management ) 任务管理(Task Management (Create, Delete, Change Priority, Suspend/Resume etc.) )
13
14
µC/FS-File System
µC/FS is written in ANSI Cand can be used on virtually any CPU. Some of the features of µC/FS are: MS-DOS/MS-Windows compatible FAT12, FAT16 and FAT32 support. ( 支持任何8, 16, 32-bits CPU) Multiple device driver support. You can use different device drivers with different types of hardware with the file system at the same time. µC/FS, which allows you to access
任务栈
允许每个任务有不同的栈空间,以便压 每个任务有自己单独的栈, µ C/OS-II C/OS-II允许每个任务有不同的栈空间,以便压 RAM 的需求。 低应用程序对 低应用程序对RAM RAM的需求。

系统服务
提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的 µC/OS-II C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的 内存的申请与释放、时间相关函数等。
1)数据类型的定义
OS_CPU_C.C OS_CPU_C.H OS_CPU_A.S
2)退出和进入临界状态的相关宏定义 3)堆栈的增长方向定义
5
6
1
µC/OS简介(续)

µC/OS简介(续)

OS_CPU_C.C 的移植
OS_CPU_A.S
1)任务堆栈的初始化 返回新的栈顶指针 OSTaskStkInit(): 返回新的栈顶指针 :将 保存在任务的 中 OSTaskCreate() : :将SP 将SP SP保存在任务的 OS_TCB OS_TCB中 ;将 保存在任务的 中 OSTaskCreateExt() ; ;将SP 将SP SP保存在任务的 OS_TCB OS_TCB中 hook 函数 2)系统 )系统hook hook函数 无特殊要求时为空函数,用户定义。 3)中断级任务切换函数 OSIntExit() OSExIntExit() (中断服务例程)中发现更高优先级任务等待时,中断退 在时钟中断 ISR ISR(中断服务例程)中发现更高优先级任务等待时,中断退 出不返回被中断的任务,而是直接调度就绪的高优先级任务执行,保证实时 性。
7
8
µC/OS的性能特点(一)
� � �
µC/OS的性能特点(二)
) 占先式( Preemptive Preemptive) 多任务
可以管理 64 个任务,然而,目前这一版本保留 µC/OS-II C/OS-II可以管理 可以管理64 64个任务,然而,目前这一版本保留 8 个给系统。应用程序 56 个任务 最多可以有 最多可以有56 56个任务
� �
公开源代码 可移植性( Portable ) 的源码是用移植性很强的 ANSI C 写的。和微处 绝大部分µ C/OS-II C/OS-II的源码是用移植性很强的 C写的。和微处 理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压 便于移植到其他微处理器上。µ C/OS-II 到最低限度,使得 µ C/OS-II C/OS-II便于移植到其他微处理器上。 16 位、 32 位以至 64 位微处理器、微控制器 、数 可以在绝大多数 8位、 位、16 16位、 位、32 32位以至 位以至64 64位微处理器、微控制器 )上运行。 字信号处理器( DSP DSP)上运行。
相关文档
最新文档