uc/Os3的学习

花了时间,终于把贝贝的书看了两遍,争取在这段时间写个总结,自己使用cube生成底层的时候,发现freetos用的比较多,但是基本思想都是相通的。


在网上找了相关学习总结,自己对照着再学了一遍,今晚做个总结。uc/os3最重要的就是学习如何管理任务,第五章非常重要,后面几章属于展开的讲具体细节。


一·、一共有 2 种类型的实时系统:软实时系统和硬实时系统。硬实时系统中,运算超时是不允许发生的,运算超时会导致严重后果。但是在软实时系统中 , 超时不会导致严重后果 。即“软”意味着如果没有满足指定的时间约束并不会导致灾难性后果,而对硬实时系统来说却是灾难性的。

二、临界操作应该在任务级中被执行,不可避免地必须在中断处理程序中执行也要确保是在很短的时间内完成。 因为这会导致 ISR 占用更长的时间。 通常的, ISR 中使能相关的信息而在后台程序中执行相应的操作。

三、uc/os3中的任务(也叫做线程) 是一段简单的程序, 运行时完全地占用 CPU 。在单 CPU 中,任何时候只有 1 个任务被执行。 有两种任务,一种是一次性的,执行完后需要自己删除自己,另一种是无限循环的,每一定时间调用自己一次。

四、内核的责任是管理任务,协调和切换多个任务依次享用 CPU 。让我们感觉是多个 CPU 在同时运行,也有利于处理模块化的应用 它也负责管理任务间的交流, 系统资源的管理(内存 和I/O )等。

五、uC/OS-III 是一个抢占式内核, 这意味着 uC/OS-III 总是执行最重要的就绪任务 。

六、ISR 响应中断请求设备, 但是 ISR 只做非常少的工作。 ISR 应该标记或发送消息到一个高优先级的任务, 让中断能够快速处理完毕。

七、 uC/OS-III 内核需要 1K 到 4K 之间的 RAM , 加上每个任务自己所需的堆栈空间。 至少有 4K 大小 RAM 的处理器才有可能成功移植 uC/OS3.

八、uC/OS-III 允许多个任务拥有相同的优先级。 当多个相同优先级的任务就绪时, 并且这个优先级是目前最高的uC/OS-III 会分配用户定义的时间片给每个任务去运行。 每个任务可以定义不同的时间片 ,时间片轮转法( roundrobin)。

九、uC/OS-III 保护临界段可以通过锁定调度器代替关中断。 因此关中断的时间会非常少。这样就使 uC/OS-III 可以响应一些非常快的中断源了。

十、 uC/OS-III 允许用户在运行时配置内核。特别的,所有的内核对象如任务、堆栈、信号量、事件标志组、消息队列、 消息、 互斥信号量、 内存分区、 软件定时器等都是在运行时分配的 , 以免在编译时的过度分配。

十一、uC/OS-III 对任务数量、任务大小、优先级数量无限制。每一个任务需要有自己的堆栈空间。实际上, 任务的数量和大小限制于处理器能提供的内存大小。

十二、互斥信号量用于资源管理。它是一个内置优先级的特殊类型信号量, 用于消除优先级反转。 互斥信号量可以被嵌套,因此,任务可申请同一个互斥信号量多达 250 次。当然, 互斥信号量的占有者需要释放同等次数。

十三、当任务第一次执行时, 会传入一个变量 “p_arg” 。这是一个指向 void的指针。 用于变量的地址、 结构体地址、 或者函数的地址等。 如果需要,可以创建多个相同的任务,使用相同的代码(相同任务体),而产生有不同的运行结果。

十四、、一个任务可以创建其它任务( 调 OSTaskCreate() )、 停止或者恢复其它 ( 调用 OSTaskSuspned() 和 OSTaskResume()) 、 提交信号量到其它任务、 发送消息到其它任务、 提供共享资源等。 换句话说, 任务不是只被限制于“等待事件”。

十五、当 uC/OS-III 转向执行另一个任务的时候,它保存了当前任务的 CPU 寄存器到堆栈。并从新任务堆栈中 相关内容载入CPU 寄存器。这个过程叫做上下文切换。上下文切换需要一些开支。 CPU 的寄存器越多, 开支越大。 上下文切换的时间基本取决于有多少个 CPU 寄存器需要被存储和载人。保存状态寄存器和程序指针寄存器到当前的任务堆栈。保存的顺序与中断发生时 CPU 保存寄存器的顺序相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值