ucos-iii知识点总结.docx

上传人:Che****ry 文档编号:13060911 上传时间:2022-04-27 格式:DOCX 页数:16 大小:55.63KB
返回 下载 相关 举报
ucos-iii知识点总结.docx_第1页
第1页 / 共16页
ucos-iii知识点总结.docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《ucos-iii知识点总结.docx》由会员分享,可在线阅读,更多相关《ucos-iii知识点总结.docx(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品名师归纳总结1、其中最有用的功能应当是时间片轮转法(roundrobin, 这个是uC/OS-II 中不支持的,但是现在已经是uC/OS-III 的一个功能了2、uC/OS-III被设计用于 32 位处理器, 但是它也能在16 位或 8位处理器中很好的工作。3、一共有 2 种类型的实时系统:软实时系统和硬实时系统。硬实时系统中,运算超时是不答应发生的,运算超时会导致严峻后果。但是在软实时系统中 , 超时不会导致严峻后果4、前后台系统:包含一个无限循环的模块实现需要的操作(后台)。中断处理程序实现异步大事(前台)。前台也叫做中断级,后台也叫作任务级。5、临界操作应当在任务级中被执行,不行防止

2、的必需在中断处理程序中执行也要确保是在很短的时间内完成。由于这会导致 ISR 占用更长的时间。 通常的, ISR 中使能相关的信息而在后台程序中执行相应的操作。6、ucos-iii 中的任务(也叫做线程)是一段简洁的程序, 运行时完全的占用 CPU 。在单 CPU 中,任何时候只有 1 个任务被执行。7、内核的责任是治理任务,和谐和切换多个任务依次享用CPU 。让我们感觉是多个 CPU 在同时运行,也有利于处理模块化的应用它也负责治理任务间的沟通,系统资源的治理(内存和 I/O )等。可编辑资料 - - - 欢迎下载精品名师归纳总结8、uC/OS-III是一个抢占式内核, 这意味着 uC/OS

3、-III总是执行最重要的就绪任务9、ISR 响应中断恳求设备, 但是 ISR 只做特别少的工作。 ISR应当标记或发送消息到一个高优先级的任务,让中断能够快速处理完毕10、系统中加入内核需要额外的支出, 由于内核供应服务时需要时间去处理。内核占用 CPU 的时间介于 2% 到 4% 之间。 由于uC/OS-III 是一个软件,添加到目标系统中需要额外的ROM 和RAM。11、。 uC/OS-III 内核需要 1K 到 4K 之间的 RAM , 加上每个任务自己所需的堆栈空间。 至少有 4K 大小 RAM 的处理器才有可能胜利移植 uC/OS-III 。12、: uC/OS-III答应多个任务拥

4、有相同的优先级。当多个相同优先级的任务就绪时, 并且这个优先级是目前最高的 uC/OS-III 会安排用户定义的时间片给每个任务去运行。每个任务可以定义不同的时间片 。可编辑资料 - - - 欢迎下载精品名师归纳总结13、uC/OS-III 爱护临界段可以通过锁定调度器代替关中断。因此关中断的时间会特别少。 这样就使 uC/OS-III可以响应一些特别快的中断源了。14、 uC/OS-III答应用户在运行时配置内核。特殊的, 全部的内核对象如任务、堆栈、信号量、大事标志组、消息队列、消息、 互斥信号量、 内存分区、 软件定时器等都是在运行时安排的, 以免在编译时的过度安排。15、uC/OS-I

5、II 对任务数量、任务大小、优先级数量无限制。每一个任务需要有自己的堆栈空间。实际上,任务的数量和大小限制于处理器能供应的内存大小。16、uC/OS-III 支持任何数量的任务、信号量、 互斥信号量、 大事标志组、 消息队列、 软件定时器、 内存分区。 用户在运行时安排全部的内核对象。17、互斥信号量用于资源治理。 它是一个内置优先级的特殊类型信号量, 用于排除优先级反转。 互斥信号量可以被嵌套,因此,任务可申请同一个互斥信号量多达250 次。当然, 互斥信号量的占有者需要释放同等次数。18、: uC/OS-III 答应任务停止自身或者停止另外的任务。 停止一个任务意味着这个任务将不再执行直到

6、被其他的任务复。 停止可以被嵌套到 250 级。 换句话说, 一个任务可以停止另外的任务多达可编辑资料 - - - 欢迎下载精品名师归纳总结250 次。 当然, 这个任务必需被复原同等次数才有资格再次获得CPU 。19、可以定义任意数量的一次性的、周期性的、或者两者兼有的软件定时器。 定时器是倒计时的,执行用户定义的行为始终到计数减为0 。每一个定时器可以有自己的行为, 假如一个定时器是周期性的, 计数减为 0 时会自动重装计数值并执行用户定义的行为。20、: uC/OS-III 答应任务等待多个大事的发生。 等待中的任务在全部大事发生后被唤醒21、 uC/OS-III答应 ISR 或者任务直

7、接的发送信号量给其它任务。这样就防止了必需产生一个中间级内核对象如一个信号量或者大事 标志组只为了标记一个任务。提高了内核性能。22、:每一个任务可以拥有用户可定义的任务寄存器, 不同于 CPU 寄存器。 uC/OS-III 能检测指针是否为 NULL、 在 ISR 中调用的任务级服务是否答应、 参数在答应范畴内、 配置选项的有效性、 函数的执行结果等。每一个uC/OS-III的 API 函数返回一个对应于函数调用结果的错误代号23: uC/OS-III有内置性能测量功能。 能测量每一个任务的执行时间 , 每个任务的堆栈使用情形,任务的执行次数, CPU 的使用情可编辑资料 - - - 欢迎下

8、载精品名师归纳总结况, ISR 到任务的切换时间 , 任务到任务的切换时间,列表中的对象的峰值数,关中断、锁调度器平均时间等。24 、uC/OS-III 被设计于能够根 CPU 的架构被优化 uC/OS-III 所用的大部分数据类型能够被转变, 以更好的适应 CPU 固有的字大小。优先级调度法就可以通过编写一些汇编语言而获益于一些 特 殊 的指令如位设置、位清除、计数器清零指令( CLZ )、find-first-oneFF1 指令25、uC/OS-III 中全部的挂起服务都可以有时间限制, 预防死锁。26、uC/OS-III 有时基任务, 时基 ISR 触发时基任务。 uC/OS-III使2

9、7、uC/OS-III 使用了哈希列表结构, 可以大大削减处理延时和任务超时所产生的开支。28、uC/OS-III答应程序员定义 hook 函数。hook 函数答应用户扩展uC/OS-III 的功能。29、为了测量时间, uC/OS-III 需要一个 16 位或者 32 位的时时间戳计数器。30、 每个 uC/OS-III 的内核对象有一个相关联的名字。 这样就能很简洁的识别出对象所指定的作用。对象的名字长度没有限制, 但是必需以空字符终止。可编辑资料 - - - 欢迎下载精品名师归纳总结31、每个任务需要创建自己的堆栈。堆栈的数据类型 CPU_STK 。堆栈可以被静态的安排或者通过mallo

10、c 动态的安排。如任务将不会被删除,堆栈将始终被使用。32、在大部分处理器中, 中断在启动时是关闭的。无论如何, 在启动时关闭全部的外设中断是最安全的。33、uC/OS-III 须创建闲暇任务 OS_IdleTask (), 当没有其他任务运行时就运行闲暇任务。根据 配 置 文 件 中 所 uC/OS-III 会创 建 统 务 OS_StatTask 、 定 时 器任务 OS_TmrTask 、 中断队 列 处 理任务 OS_IntQTask 。34、OSTaskCreate 的第四个参数, 第一次被调用时 OSTaskCreate 接收这个变量, 传递给所创建的任务中的唯独参数 p_arg。

11、该参数可以是任意类型的指针。35、参数值越小优先级越高。可以设置优先级数值为1 到OS_CFG_PRIO_MAX-2。 要防止使用优先级 #0 和优先级OS_CFG_PRIO_MAX-1。 因 为 这些是为 uC/OS-III 保留的。36、任务的堆栈大 以 CPU_STK 为数据类型而不是字节 。 例如, 假如要安排 1KB 大小的堆栈空间,由于 CPU_STK 是 32 位的,所以这个其值为 256.37、)全部的 uC/OS-III 任务需要被设置为无限循环。可编辑资料 - - - 欢迎下载精品名师归纳总结38、互斥信号量( mutex )是一个内核对象, 用于爱护共享资源。 任务要拜访

12、共享资源就必需先获得mutex 。mutex 的拥有者使用完这个资源后就必需释放这个mutex 。39、消息队列是一个内核对象, ISR 或任务可以直接发送消息到另一个任务。 发送者制定一个消息并将其发送到目标任务的消息 队列。 目标任务等待消息的到达。40、定义消息队列可接受消息的个数。 这个值必需大于 0 。假如消息者发送消息数超过了消息接收任务的承担才能。那么消息将会被丢失。可以通过增加消息队列的大小或者供应消息接收任务的优先级 提升其承担才能。41、uC/OS-III 定义了一个进入临界段的宏和两个出临界段的宏(退出临界段后是否调用调度器)。42、测得消息是什么时候被发送的,用户就能测

13、得任务接收这个消息所用的时间。 读取现在的时间戳并减去消息被发送时的时戳。需留意的是, 消息被发送时, 等待消息的任务可能不会立刻接收到消息,由于 ISR 或更高优先级的任务可能抢占了当前任务。明显,测出的时间仍包括了测量时消耗的额外时间。然而减掉测量时所耗时间就是实际上的时间。可编辑资料 - - - 欢迎下载精品名师归纳总结43、时间戳的掌握单元位于 CPU_TS 中。 例如, 假如 CPU 速率为 1MHz , 时间戳的速率为 1MHz 。 那么 CPU_TS 的辨论率为 1 微秒44、当任务第一次执行时, 会传入一个变量 p_arg 。这是一个指向 void 的指针。 用于变量的的址、结

14、构体的址、 或者函数的的址等。 假如需要,可以创建多个相同的任务,使用相同的代码(相同任务体),而产生有不同的运行结果。45、只运行一次的任务终止时必需通过调用OSTaskDel 删除自己。这样可以使系统中的任务数削减。46、一个任务可以创建其它任务( 调 OSTaskCreate )、 停止或者复原其它 调用 OSTaskSuspned 和 OSTaskResume 、 提交信号量到其它任务、 发送消息到其它任务、 供应共享资源等。 换句话说, 任务不是只被限制于 “等待大事 ”。47、在嵌入式系统中动态的安排堆栈是被答应的,但是,一旦堆栈被动态安排,它就不能被回收。 换句话说, 对于有些不

15、需要被删除的任务, 动态安排它们的堆栈是一种很好的解决方法。48、可以人工的运算出任务需要的堆栈空间大小,逐级嵌套全部可能被调用的函数, 添加被调用函数中全部的参数,添加上下文切换时的 CPU 寄存器空间,添加切换到中断时所需的CPU 寄存器空间,可编辑资料 - - - 欢迎下载精品名师归纳总结添加处理 ISRs 所需的堆栈空间。 把上述的全部相加,得到的值定义为最小的需求空间。 由于我们不行能运算出精确的堆栈空间。通常是再乘以 1.5 以确保任务的安全运行。49、另一种防止堆栈溢出的方法是安排的空间远大于可能需要的。 第一, 当任务创建时其堆栈被清零。程序运行一段时间后,通过一个低优先级任务

16、, 运算该任务整个堆栈中值为0 的内存大小。 这是一种特别有效的方法。 留意的是, 程序需用运行很长的时间以让堆栈达到其需要的最大值。50、从用户的观点来看,任务可以是有5 种状态,休眠状态,就绪状态,运行状态,挂起状态,中断状态。51、调用 OSTaskSuspend 会任务无条件的停止运行。有些时候调用 OSTaskSuspend不是为了等待某个大事的发生,而是等待另一个任务调用 OSTaskResume 函数复原这个任务。52、任务掌握块是被uC/OS-III用于爱护任务的一个结构体。每个任务都必需有自的己 TCB 。TCB 中的一些变量可以依据详细应用进行裁剪。用户程序不应当拜访这些变

17、量(特殊不能更换它们)53、有些处理器有硬件寄存器可以自动的检测并确保堆栈不发生溢 出, 假如处理器没有这些硬件施, ucos-iii 的堆栈检测可以用软件模拟。 然而, 软件模拟不如硬件牢靠。可编辑资料 - - - 欢迎下载精品名师归纳总结54、在 uC/OS-III初始化的时候,它会创建至少2 个内部的任务OS_IdleTask 和 OS_TickTask , 3 个可挑选的任务( OS_StatTask , OS_TmrTaks , OS_IntQTask )。这些可挑选的任务在编译时由 OS_CFG.H 中的配置打算。55、当 CPU 中没有其它就绪任务运行时,闲暇会被运行。闲暇任务是

18、一个无限循环的不会等待任何大事的任务。闲暇任务的每次循环, 都会调用 OSIdleTaskHook 函数,这个函数供应应用户扩展应用, 如让处理器进入低功耗模式等。56、) 使用硬件定时器并被设置为以10 到 1000Hz 之间的频率产生时基中断,时基中断并不是肯定要用CPU 产生, 事实上, 它可以从其他的具有较精确的周期性时间源中获得,比如电源线( 50-60Hz )等。57、当时基任务执行时, 它会遍历挂起队列中全部等待期满的任务或等待大事超时的任务。 它会就绪时基列表中的那些期满、超时的任务。使用轮转法遍历队列(此队列为二维数组的形式)大大削减了遍历队列所占用 CPU 的时间。58、统

19、计任务能够统计总的CPU 使用率, 每个任务的 CPU 使用率, 每个任务的堆栈使用量。可编辑资料 - - - 欢迎下载精品名师归纳总结59 软件定时器通常需要的频率可由用户设置,通过软件将时基分频。换句话说假如时基速率为1000Hz, 但是想要的定时器速率为10Hz, 软件定时器任务会每 100 个时基被标记一次。时基任务的优先级要高于定时器任务,定时器任务的优先级需要于统计任务60、当一个任务创建了一个具有相同优先级的任务,这个新任务会被添加到该优先级队列的尾部(由于具有相同优先级情形下,没有理由让新任务先运行)。然而,当一个任务创建了一个具有不同优先级 的任务时,这个新的任务就会放到对应

20、优先级列表中的首部。留意: 正在运行的任务也被放在就绪列表中。61 会发生调度的调度点:任务被标记或发送消息给另一个任务、任务调用 OSTimeDly或 OSTimeDlyHMSM 、任务所等待的大事发生或超时、任务被取消挂起、新任务被创建 、任务被删除 、内核对象被删除 、任务转变自身的优先级或其它任务的优先级、任务通过调用 OSTaskSuspend 停止自身、任务调用 OSTaskResume 复原其它停止了的任务、退出中断服务程序、通过调用OSSchedUnlock 调度器被解锁、调用 OSSchedRoundRobinYield 任务舍弃了安排给它的时间片、用户调用OSSched62

21、、任务提交一个大事后调用调度器。当然, 任务可以一次性提交多个大事, 但在最终一个大事提交后才调用调度器。可编辑资料 - - - 欢迎下载精品名师归纳总结63、uC/OS-III 有 2 种调度方式: OSSched 被用于任务级。OSIntExit 被用于中断级。由于中断产生时已经将任务A 的状态储存在任务 A 的堆栈中,所以ISR 返回时无需再储存任务 A 的状态,而是直接载入任务 B 的 CPU 寄存器到硬件 CPU 寄存器中即可64、当 uC/OS-III 转向执行另一个任务的时候,它储存了当前任务的CPU 寄存器到堆栈。并从新任务堆栈中 相关内容载入 CPU 寄存器。这个过程叫做上下

22、文切换。 上下文切换需要一些开支。 CPU 的寄存器越多, 开支越大。 上下文切换的时间基本取决于有多少个CPU 寄存器需要被储备和载人。 储存状态寄存器和程序指针寄存器到当前的任务堆栈。储存的次序与中断发生时CPU 储存寄存器的次序相同。65、CPU 处理中断有两种模式: 1 全部的中断指向同一个 ISR2 每个中断指向各自的 ISR 。) ISR 的工作完成后, 用户必需调用OSIntExit 告知 uC/OS-III 中断服务程序已经完成。66、uC/OS-III有两种方法处理来自于中断的时间。直接提交和推迟提交。 其区分在于如何处置中断中所产生的大事。 推迟提交的方式为大事不是直接发送

23、给任务, 而是先发送到中断队列。然后中断处理任务(其优先级为 0)被就绪,这样,大事的提交便可在任务级完成,从而削减了ISR 处理的时间。67、uC/OS-III 必需有系统时基是普遍的误会。事实上, 很多低功耗应用中没有系统时基, 由于需额外的能量用于爱护时基源。 换句话可编辑资料 - - - 欢迎下载精品名师归纳总结说 , 将能量用于爱护时基源是不合理的。由于uC/OS-III是一个可抢占式内核, 一个大事可以唤醒进入低功耗模式处理器(按键或其它大事)没有时基意味着用户不能再对任务进行延时或超时设置。用户在研发低功耗产品时可以考虑这个特性。68、任务在挂起队列中是依据优先级分类的。高优先级

24、任务被放置在队列的头部,低优先级任务被放置在队列的尾部。69、任务不是直接链接到挂起队列中,而是通过叫 OS_PEND_DATA 的结构体作为媒介。 这个媒介在任务被挂起时安排到任务堆栈的。挂起队列中的对应指针指向该结构体。70、延时函数 OSTimeDly ,任务调用这个函数后就会被挂起直到期满。以时基为单位,但需留意,当任务在时基中断将要到来时被挂起,那么实际的延时时基会少1 个时基。这个函数可以有设置为三种模式:相对延时模式,周期性延时模式,肯定延时模式(用于对时间要求很高的应用)。71、uC/OS-III 定 时 器 的 分 辨 率 决 定 于 时 基 频率。定时器可以被设置为 3 种

25、模式:一次性定时模式, 无初始定时周期模式, 有初始定时周期模式 。假如定时器被停止, 那其定时值也将被停止, 直到定时器被复原时, 定时器值连续被递减。 不能在定时器的执行代码中等待大事发生。 否就定时器任务会被挂起, 导致定时器任务崩溃。可编辑资料 - - - 欢迎下载精品名师归纳总结72、uC/OS-III 可能要爱护上百个定时器。 使用定时器列表会大大降低更新定时器列表所占用的 CPU 时间。 定时器列表类似于时基列表,以二维数组的形式储备记录。73、uC/OS-III 供应关中断方式、 锁调度器方式、 、信号量方式、 mutex 方式爱护共享资源。只有任务才答应使用信号量,ISR 是

26、不答应的。用信号量爱护共享资源不会导致中断推迟。 当任务在执行信号量所爱护的共享资源时, ISR 或高优先级任务可以抢占该任务。74、信号量常常被过度使用。很多情形下,拜访一个简短的共享资源 时不举荐使用信号量,恳求和释放信号量会消耗CPU 时间。通过关 / 开中断能更有效的执行这些操作。 信号量会导致一种严峻的问题: 优先级反转。75、优先级反转是实时系统中的一个常见问题, 仅存在于基于优先级的抢占式内核中。 uC/OS-III 支持一种特殊类型的二值信号量叫做mutex,用于解决优先级反转问题。76、死锁,就是两个任务相互等待对方所占用的资源的情形。除一般 的防死锁方式外, uC/OS-I

27、I 仍可以在申请信号量或mutex 时答应设置其期限,这样能防止死锁,但是同样的死锁可能稍后再次显现。77、uC/OS-III 中用于同步的两种机制:信号量和大事标志组。两个任务间可以用一个信号量实现单向同步,用两个信号量实现双向同步。当任务要与多个大事同步时可以使用大事标志。如其中的任意一可编辑资料 - - - 欢迎下载精品名师归纳总结个大事发生时任务被就绪, 叫做规律或 OR。如全部的大事都发生时任务被就绪,叫做规律与( AND )。78、有些情形下任务或 ISR 与另一个任务间进行通信, 这种信息交换叫做作业间的通信。可以有两种方法实现这种通信:全局变量、发送 消息。需留意的是: 任务与

28、 ISR 通信只能通过全局变量。 假如全局变量被 ISR 转变,任务将不会知道全局变量被转变, 除非该任务检测该变量或者 ISR 标记任务告知该变量被转变。79、消息可以被发送到媒介消息队列中,也可以直接发送给任务, 由于 uC/OS-III中每个任务都有其内建的消息队列。 假如多个任务等待这个消息时建议将该消息发送到外部的消息队列。当只有一个任务等待该消息时建议直接将消息发送给任务。80、消息中包含一个指向数据的指针、该数据的大小、时间戳变量。 该指针可以指向数据区域甚至是一个函数。 当然,消息的发送方和消息的接收方都应当知道消息所包含的意义。81、消息队列是先入先出模式( FIFO)。然而

29、, uC/OS-III也可以将其设置为后入先出模式( LIFO)。如任务或 ISR 发送紧急消息给另一个任务时,后入先出模式是特别有用的,在这种情形下,该紧急消息 绕过消息队列中的其他消息。82、任务 A 发送多个消息给任务 B,假如更高优先级的任务抢占了任务 B,那么任务 A 所存放在消息队列中的数据就可能被溢出。 解决可编辑资料 - - - 欢迎下载精品名师归纳总结这个问题的一种方法是在处理中添加流量掌握: 全部任务在发送消息给任务 B 之前必需获得信号量。任务 B 消息队列的空余量为多少, 信号量计数值就为多少。83、任务可以等待多个内核对象。然而, uC/OS-III只答应任务同时等待多个信号量或消息队列。 换句话说, 不能同时等待多个大事标志组或 mutex。但这将花费 uC/OS-III较多时间去处理。84、可以通过使用编译器供应的函数malloc和 free动态的安排和释放内存快。然而,在嵌入式实时系统中使用malloc和 free 可能是特别危急的。由于它可能会导致很多内存碎片。85、ucos-iii可以创建多个大小不同的内存分区,一个内存分区可 被设置为多个大小相同的任务块, 用于储备暂时性的数据。 依据需求设置,但内存块被安排后必需返回给它所在的内存分区,这种治理方式仅会导致内存块块内的碎片。从而削减了内存碎片。可编辑资料 - - - 欢迎下载

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com