OSAL操作系统

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSAL操作系统相关的知识,希望对你有一定的参考价值。

事件驱动型OSAL操作系统原理分析




任务就是一个函数,每一个任务都要有一个函数,形成函数列表(函数指针数组)

以上就是任务处理函数,都是任务调度之前做的事情。

那事件是怎么来的?



操作系统轮询,发现不为0的事件,怎么发现的?


osal_set_event设置这个事件,轮询的时候就会发现这个事件,发现这个事件就会去调用某个任务,任务处理完就会osal_clear_event清除这个事件,清除的本质就是取反操作


OSAL消息收发过程

以串口通信为例


进入osal_msg_send函数


进入osal_msg_receive函数



消息收发的本质:
往消息队列里面放了一块自己申请的空间,通过事件的机制osal_set_event把某个事件置位,让操作系统在轮询调度的过程中发现这个事件从而去调度相应的任务去处理这个消息。

向OSAL系统添加自定义任务



OSAL创建任务:

1、添加任务的本质就是创建一个自己的任务函数,返回值和参数要遵循函数指针数组里面的定义,发生了某件事(事件被置位)这个函数就被执行

2、还要定义任务初始化函数并保存相应的任务ID

任务个数通过计算任务数组得到

数组里面的函数指针形式如下所示:


以前面讲的串口为例:

第372行:


编译运行:

打印端口、长度、数据

以上是关于OSAL操作系统的主要内容,如果未能解决你的问题,请参考以下文章

BLE 协议栈 之"消息传递""事件触发"谁与争锋

Zstack中任务,事件,消息之间的关系

如何快速理解一个全新的嵌入式操作系统(续)

CC2540/CC2541/CC254x之OSAL操作系统抽象层

CC2540/CC2541/CC254x之OSAL操作系统抽象层

OSAL工作机制分析