概述
这里主要分享的问题主要是在通讯芯片的设计中遇到的一些
ChibiOS 是一款支持可抢占调度的多任务RTOS。
支持 Mutex 互斥锁、Semaphore 信号量、Mailbox 邮箱、Virtual Timer 定时器、Message 消息(事件机制)。
实现了基于单链表的Heap内存管理方式。
-------------------------------------------------------------------------------------------
OSAL为Operating System Abstraction Layer,即操作系统抽象层,支持多任务运行,所有的应用程序(app)都在其上运行,它并不是一个传统意义上的操作系统,但是实现了部分类似操作系统的功能。
OSAL是一种基于事件驱动的轮询式"操作系统"。
现有的嵌入式操作系统可以分为两类,即通用的多任务操作系统(General purpose Multi-tasking OS)和事件驱动的操作系统(Event-driven OS)。前者能够很好地支持多任务或者多线程,但是会随着内部任务切换频率的增加而产生很大的开销,这类操作系统有:uC/OS-II、嵌入式Linux、WinCE等。后者支持数据流的高效并发,并且考虑了系统的低功耗要求,在功耗、运行开销等方面具有优势,典型的代表如TinyOSl291。
OSAL的调度机制分为三部分:1、任务调度;2、时间管理;3、原语通信。
1、任务调度:osal采用一个链表结构来管理协议栈各层相应任务。相关操作函数有,添加任务到链表中;获取下一个活动任务;根据taskID查找下一个任务。osal采用轮询任务调度队列(任务链表),通过两个函数:调度程序主循环函数和设置事件发生标志函数。
在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。
事件发生 ->
被打包为消息 ->
存放到消息队列 ->
OSAL轮寻任务中的事件状态 ->
有事件发生 ->
事件处理函数执行对应功能
2、时间管理:通过为事件设置超时等待时间,一旦等待时间结束,便为对应任务设置事件发生标志,从而达到对事件进行延时处理目的。
3、原语通信:请求响应原语操作:一旦调用了下层相关函数后,就立即返回。下层处理函数在操作结束后,将结果以消息的形式发送到上层并产生一个系统事件,调度程序发现这个事件后就会调用相应的事件处理函数对它进行处理。两个相关函数:向目标任务发送消息的函数;消息提取函数。
当有一个事件发生的时候,OSAL负责将此事件分配给能够处理此事件的任务,然后此任务判断事件的类型,调用相应的事件处理程序进行处理。
最后
以上就是天真长颈鹿为你收集整理的(ChibiOS )嵌入式操作系统 与 (OSAL)操作系统抽象层的全部内容,希望文章能够帮你解决(ChibiOS )嵌入式操作系统 与 (OSAL)操作系统抽象层所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复