uC/OS-III系统的一些知识(4)(根据《嵌入式实时操作系统uC/OS》--Jean J. Labrosse)

来源:互联网 发布:制作工作牌软件 编辑:程序博客网 时间:2024/05/29 15:46

1,定时器的管理:定时器本质上是递减计数器。定时器服务需要在os_cfg.h中设定OS_CFG_TMR_EN为1。uC/OS中定时器的时间分辨率由一个常数--定时器任务频率来配置(OS_CFG_TMR_TASK_RATE_HZ),单位为HZ。定时器的时间分辨率通常比较粗。常用推荐值为1/10s,即10HZ。定时器中不能有任何阻塞调用。

2,临界代码的访问有三种方式:开关中断,信号量,互斥型信号量,其中互斥型信号量可以解决优先级翻转的问题。

3,任务的同步:两种同步机制:信号量和事件标志组。

信号量可以用作发信号的一种机制同时也能用于保护共享资源,区别是前者前者一般情况向信号量的初值为0,而当用作访问共享资源时,信号量的初值通常是不为0,表示资源的可用数。

事件标志组:任务与多个事件发生同步时,可以使用事件标志组。其分为两种,与同步和或同步。当任务或ISR向任务标志组发布事件标志时,所有满足等待条件的任务都会进入就绪状态。事件标志组主要有两种用途:状态信息监控和瞬时事件监控。

4,消息传递:全局变量和发布消息,在uC/OS-III系统中,每一个任务都有一个内建的消息队列。任务之间通常涉及到数据的传递,一个任务生产数据,另一个任务消费数据。如果消费者的速度较慢,那么生产者往消息队列中放的数据就有可能溢出,解决该问题的方法是在数据传递的过程中加上流量控制。使用消息队列发布数据时,发布的数据必须一致保持其可见性,因为数据传递采用的是引用传递,而不是值传递,也就是说发布的数据本身并不产生拷贝。

5,同时等待多个内核对象,uC/OS-III系统仅允许同时等待多个信号量和过个消息队列,而不允许等待多个事件标志组或互斥性信号量。OSPendMulti();

6,存储管理,uC/OS系统中将大块的存储空间进行分区管理,每个分区中包含整数个大小相同的存储块,该种方式可能会出现存储空间溢出的问题!


0 0