OSAL运行原理:
前提:OSAL是按照不同层运行的。分别是应用层(App)、硬件层(HAL)、mac层(MAC).......等多个层。我们现在把每一层可以当成一个任务。也可以比喻每一层是一个房间。
开始运行:程序从main函数开始执行,一开始是初始化各个模块。然后初始化osal_init_system(),在这个函数里主要给各个层(各个房间)定义任务ID号。从0开始 假设应用层被分到的任务号是8。开始运行OSAL也就是这个函数osal_start_system();在这个函数里用了一个for循环这条语句for(;;),for循环就是来观察哪一层(哪个房间)有事件发生就去处理哪个层(房间)。这就是像高中老师查宿舍一下,如果哪个房间有声音、不熄灯等, 老师就去处理,否则一直在走廊来回检查。
重点内容:我们人很复杂可以通过眼睛、耳朵等知道房间有事情发生,但是程序不知道。它是怎么处理的呢?
先来介绍 每一层(房间)可能发生的事情或者处理的事情怎么表示。
其中tasksArr[]是函数指针。每个层(房间)会发生或者处理各种事情,比如应用层(应用房间)会处理模块类型,还有其他的事情。所有应用层能处理的事情用一个函数a来运行,所有硬件层处理的事物也用一个函数b表示,其它层分别是函数c、函数d等等那么我们把函数a,函数b,函数c。。。他们的地址放到tasksArr[]