谈谈OSAL

      Z-Stack1.4.3及以后的版本中引入了一个OSAL(Operating System Abstraction Layer 操作系统抽象层)但在我们整个的ZigBee协议栈的结构图中我并没有能够发现这个层在哪个位置。但是整个的协议栈都要在OS的基础上才能运行。OSAL和我们通常所说的RTOSpc上的操作系统还是有很大的不同ZigBee2006中只是利用了操作系统的概念和思想利用OS把Z-Stack软件组件从特殊的处理过程相分离并将软件成分保护了起来。它提供了如下的管理功能

 ◆任务的注册、初始化、开始 

 ◆ 任务间的消息交换 

 ◆任务同步

 ◆ 中断处理 

◆时间管理 

◆ 内存分配

        在ZigBee协议中协议本身已经定义了大部分内容。在基于ZigBee协议的应用开发中用户只需要实现应用程序框架即可。从ZigBee的协议架构图中我们也可以看到,其中的应用程序框架中包含了最多的240个应用程序对象,如果我们把一个应用程序对象看做为一个任务的话,那么应用程序框架将包含一个支持多任务的资源分配机制。于是OSAL便有了存在的必要性,它正是Z-Stack为了实现这样一个机制而存在的。 OSAL主要是这样一种机制,一种任务分配资源的机制,从而形成了一个简单多任务的操作系统。

首先,osal初始化系统,包括软件系统初始化和资源初始化,其中软件系统初始化就是初始化一些变量,比如osal重要的组成部分任务表,任务结构体和序列号,资源初始化主要包括内存,中断等各种设备模块资源。这就和我们嵌入式系统中的RTOS操作系统μC/OS-II有了很大的相似处。μC/OS-II中也是通过建立任务把一个问题进行分解,任务之间可以通过消息队列的方式进行通信。

接着,osal通过osal_add_task添加任务到任务表中,形成一个任务链表,这个任务链表是以任务的优先级先后排序的,优先级高的排在前,低者排于后。

最后,开始运行系统,系统是以一个死循环的形式工作的在循环体当中不断地检测各个任务看是否要运行等这就相当于我们平时用的linux和window等多任务系统,分成多个时间片,有多少任务就分成多少时间片,只要处理频率高,就相当于多任务同时运行了。总之,OSAL实现了类似操作系统的某些功能但我认为并不能称之为真正意义上的操作系统。它的复杂性和功能性和通常的操作系统都有所不同。OSAL层是与协议栈独立的,但是整个协议都要基于OS才能运行。 

 

参考: http://wenku.baidu.com/view/691c004ae518964bce847c00.html###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值