uCOS-III 知识点总结二
21、 uC/OS-III 允许 ISR 或者任务直接地发送信号量给其它任务。 这样就避免了必须产生一个中间级内核对象如一个信号量或者事件标志组只为了标记一个任务。提高了内核性能。
22、每一个任务可以拥有用户可定义的任务寄存器,不同于 CPU 寄存器。uC/OS-III 能检测指针是否为 NULL 、 在 ISR 中调用的任务级服务是否允许、 参数在允许范围内、 配置选项的有效性、 函数的执行结果等。每一个 uC/OS-III 的 API 函数返回一个对应于函数调用结果的错误代号
23、uC/OS-III 有内置性能测量功能。 能测量每一个任务的执行时间 , 每个任务的堆栈使用情况, 任务的执行次数, CPU的使用情况, ISR 到任务的切换时间 , 任务到任务的切换时间, 列表中的对象的峰值数,关中断、锁调度器平均时间等。
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使用了哈希列表结构, 可以大大减少处理延时和任务超时所产生的开支。
28、uC/OS-III 允许程序员定义 hook 函数。hook 函数允许用户扩展 uC/OS-III 的功能。
29、为了测量时间, uC/OS-III 需要一个 16 位或者 32 位的时时间戳计数器。
30、 每个 uC/OS-III 的内核对象有一个相关联的名字。 这样就能很容易的识别出对象所指定的作用。对象的名字长度没有限制,但是必须以空字符结束。
31、每个任务需要创建自己的堆栈。 堆栈的数据类型 CPU_STK 。堆栈可以被静态地分配或者通过 malloc() 动态地分配。若任务将不会被删除,堆栈将一直被使用。
32、在大部分处理器中, 中断在启动时是关闭的。 无论如何, 在启动时关闭所有的外设中断是最安全的。
33、uC/OS-III 须创建空闲任务 OS_IdleTask (), 当没有其他任务运行时就运行空闲任务。根 据 配 置 文 件 中 所 uC/OS-III 会 创 建 统 务OS_StatTask() 、 定 时 器任务 OS_TmrTask() 、 中 断队 列 处 理任务OS_IntQTask() 。
34、OSTaskCreate() 的第四个参数, 第一次被调用时OSTaskCreate() 接收这个变量, 传递给所创建的任务中的唯一参数"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 任务需要被设置为无限循环。
38、互斥信号量( mutex )是一个内核对象,用于保护共享资源。 任务要访问共享资源就必须先获得 mutex 。mutex的拥有者使用完这个资源后就必须释放这个 mutex 。
39、消息队列是一个内核对象, ISR 或任务可以直接发送消息到另一个任务。 发送者制定一个消息并将其发送到目标任务的消息 队列。 目标任务等待消息的到达。
40、定义消息队列可接受消息的个数。 这个值必须大于 0 。如果消息者发送消息数超过了消息接收任务的承受能力。那么消息将会被丢失。可以通过增加消息队列的大小或者提供消息接收任务的优先级提升其承受能力。
                    
                
                
            
        
浙公网安备 33010602011771号