2022年ucos-iii知识点总结 .pdf
《2022年ucos-iii知识点总结 .pdf》由会员分享,可在线阅读,更多相关《2022年ucos-iii知识点总结 .pdf(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
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 )等。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第
3、1 页,共 17 页 - - - - - - - - - - 8、uC/OS-III 是一个抢占式内核,这意味着uC/OS-III 总是执行最重要的就绪任务9、ISR 响应中断请求设备,但是 ISR 只做非常少的工作。ISR 应该标记或发送消息到一个高优先级的任务,让中断能够快速处理完毕10、系统中加入内核需要额外的支出,因为内核提供服务时需要时间去处理。内核占用CPU 的时间介于2% 到 4% 之间。因为uC/OS-III 是一个软件,添加到目标系统中需要额外的ROM 和RAM 。11、。 uC/OS-III 内核需要 1K 到 4K 之间的 RAM , 加上每个任务自己所需的堆栈空间。至少
4、有 4K 大小 RAM 的处理器才有可能成功移植uC/OS-III 。12、: uC/OS-III 允许多个任务拥有相同的优先级。当多个相同优先级的任务就绪时,并且这个优先级是目前最高的uC/OS-III 会分配用户定义的时间片给每个任务去运行。每个任务可以定义不同的时间片 。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - - - 13、uC/OS-III 保护临界段可以通过锁定调度器代替关中断。因此关中断的时间会非常少。 这样就使uC/OS-III
5、可以响应一些非常快的中断源了。14、 uC/OS-III 允许用户在运行时配置内核。特别的,所有的内核对象如任务、堆栈、信号量、事件标志组、消息队列、消息、 互斥信号量、 内存分区、软件定时器等都是在运行时分配的, 以免在编译时的过度分配。15、uC/OS-III 对任务数量、任务大小、优先级数量无限制。每一个任务需要有自己的堆栈空间。实际上,任务的数量和大小限制于处理器能提供的内存大小。16、uC/OS-III 支持任何数量的任务、信号量、互斥信号量、事件标志组、 消息队列、软件定时器、内存分区。用户在运行时分配所有的内核对象。17、互斥信号量用于资源管理。 它是一个内置优先级的特殊类型信号
6、量, 用于消除优先级反转。互斥信号量可以被嵌套,因此,任务可申请同一个互斥信号量多达250 次。当然, 互斥信号量的占有者需要释放同等次数。18、: uC/OS-III 允许任务停止自身或者停止另外的任务。停止一个任务意味着这个任务将不再执行直到被其他的任务复。停止可以被嵌套到250 级。 换句话说,一个任务可以停止另外的任务多达精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - 250 次。 当然,这个任务必须被恢复同等次数才有资格再次获得CPU
7、 。19、可以定义任意数量的一次性的、周期性的、或者两者兼有的软件定时器。 定时器是倒计时的,执行用户定义的行为一直到计数减为0 。每一个定时器可以有自己的行为,如果一个定时器是周期性的,计数减为0 时会自动重装计数值并执行用户定义的行为。20、: uC/OS-III 允许任务等待多个事件的发生。等待中的任务在所有事件发生后被唤醒21、 uC/OS-III 允许 ISR 或者任务直接地发送信号量给其它任务。这样就避免了必须产生一个中间级内核对象如一个信号量或者事件标志组只为了标记一个任务。提高了内核性能。22、 : 每一个任务可以拥有用户可定义的任务寄存器,不同于 CPU 寄存器。 uC/OS
8、-III 能检测指针是否为NULL 、 在 ISR 中调用的任务级服务是否允许、参数在允许范围内、配置选项的有效性、函数的执行结果等。每一个uC/OS-III 的 API 函数返回一个对应于函数调用结果的错误代号23: uC/OS-III 有内置性能测量功能。能测量每一个任务的执行时间 , 每个任务的堆栈使用情况,任务的执行次数,CPU 的使用情精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 17 页 - - - - - - - - - - 况, ISR 到任务的切换时间, 任务到任务的切换时
9、间,列表中的对象的峰值数,关中断、锁调度器平均时间等。24、uC/OS-III 被设计于能够根CPU 的架构被优化uC/OS-III 所用的大部分数据类型能够被改变,以更好地适应CPU 固有的字大小。优先级调度法则可以通过编写一些汇编语言而获益于一些特 殊 的指令如位设置、位清除、计数器清零指令( CLZ ) 、 find-first-one(FF1) 指令25、uC/OS-III 中所有的挂起服务都可以有时间限制,预防死锁。26、 uC/OS-III 有时基任务, 时基 ISR 触发时基任务。 uC/OS-III 使27、uC/OS-III 使用了哈希列表结构,可以大大减少处理延时和任务超时
10、所产生的开支。28、uC/OS-III 允许程序员定义hook 函数。hook 函数允许用户扩展uC/OS-III 的功能。29、为了测量时间,uC/OS-III 需要一个16 位或者 32 位的时时间戳计数器。30、 每个 uC/OS-III 的内核对象有一个相关联的名字。这样就能很容易的识别出对象所指定的作用。对象的名字长度没有限制,但是必须以空字符结束。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 17 页 - - - - - - - - - - 31、每个任务需要创建自己的堆栈。堆栈
11、的数据类型CPU_STK 。堆栈可以被静态地分配或者通过malloc() 动态地分配。若任务将不会被删除,堆栈将一直被使用。32、在大部分处理器中,中断在启动时是关闭的。无论如何,在启动时关闭所有的外设中断是最安全的。33、uC/OS-III 须创建空闲任务OS_IdleTask (), 当没有其他任务运行时就运行空闲任务。根据 配 置 文 件 中 所 uC/OS-III 会创 建 统 务 OS_StatTask() 、 定 时 器任务 OS_TmrTask() 、 中断队 列 处 理任务 OS_IntQTask() 。34、OSTaskCreate() 的第四个参数, 第一次被调用时 OST
12、askCreate() 接收这个变量,传递给所创建的任务中的唯一参数p_arg。该参数可以是任意类型的指针。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 任务需要被设置为无限循环。精品资料 - - - 欢迎下载 - - - - -
13、- - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 17 页 - - - - - - - - - - 38、互斥信号量( mutex )是一个内核对象, 用于保护共享资源。任务要访问共享资源就必须先获得mutex 。mutex 的拥有者使用完这个资源后就必须释放这个mutex 。39、消息队列是一个内核对象,ISR 或任务可以直接发送消息到另一个任务。发送者制定一个消息并将其发送到目标任务的消息队列。 目标任务等待消息的到达。40、定义消息队列可接受消息的个数。这个值必须大于0 。如果消息者发送消息数超过了消息接收任务的承受能力。那么消息将会被丢失
14、。可以通过增加消息队列的大小或者提供消息接收任务的优先级提升其承受能力。41、uC/OS-III 定义了一个进入临界段的宏和两个出临界段的宏(退出临界段后是否调用调度器)。42、测得消息是什么时候被发送的,用户就能测得任务接收这个消息所用的时间。读取现在的时间戳并减去消息被发送时的时戳。需注意的是,消息被发送时,等待消息的任务可能不会立即接收到消息,因为ISR 或更高优先级的任务可能抢占了当前任务。显然,测出的时间还包括了测量时消耗的额外时间。然而减掉测量时所耗时间就是实际上的时间。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - -
15、- - - - - -第 7 页,共 17 页 - - - - - - - - - - 43、时间戳的控制单元位于CPU_TS 中。 例如, 如果 CPU 速率为 1MHz ,时间戳的速率为1MHz 。那么 CPU_TS 的分辨率为1 微秒44、当任务第一次执行时,会传入一个变量p_arg 。这是一个指向 void 的指针。 用于变量的地址、结构体地址、或者函数的地址等。 如果需要,可以创建多个相同的任务,使用相同的代码(相同任务体),而产生有不同的运行结果。45、只运行一次的任务结束时必须通过调用OSTaskDel() 删除自己。这样可以使系统中的任务数减少。46、一个任务可以创建其它任务(
16、调 OSTaskCreate() )、 停止或者恢复其它( 调用 OSTaskSuspned() 和 OSTaskResume() 、 提交信号量到其它任务、发送消息到其它任务、提供共享资源等。换句话说,任务不是只被限制于 “ 等待事件 ” 。47、在嵌入式系统中动态地分配堆栈是被允许的,但是,一旦堆栈被动态分配,它就不能被回收。换句话说,对于有些不需要被删除的任务, 动态分配它们的堆栈是一种很好的解决方法。48、可以人工地计算出任务需要的堆栈空间大小,逐级嵌套所有可能被调用的函数,添加被调用函数中所有的参数,添加上下文切换时的 CPU 寄存器空间,添加切换到中断时所需的CPU 寄存器空间,精
17、品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - 添加处理ISRs 所需的堆栈空间。把上述的全部相加,得到的值定义为最小的需求空间。因为我们不可能计算出精确的堆栈空间。通常是再乘以1.5 以确保任务的安全运行。49、另一种防止堆栈溢出的方法是分配的空间远大于可能需要的。首先, 当任务创建时其堆栈被清零。程序运行一段时间后,通过一个低优先级任务,计算该任务整个堆栈中值为0 的内存大小。这是一种非常有效的方法。注意的是, 程序需用运行很长的时间以让堆栈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年ucos-iii知识点总结 2022 ucos iii 知识点 总结
限制150内