z-stack软件构架分析

z-stack软件构架分析

ID:6155181

大小:146.00 KB

页数:7页

时间:2018-01-04

z-stack软件构架分析_第1页
z-stack软件构架分析_第2页
z-stack软件构架分析_第3页
z-stack软件构架分析_第4页
z-stack软件构架分析_第5页
资源描述:

《z-stack软件构架分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Z-Stack软件架构分析      Z-Stack的main函数在Zmain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即有启动代码来初始化硬件系统和软件架构需要的各个模块,另一个作用就是开福寺执行操作系统实体。1.系统初始化  系统启动代码需要完成初始化硬件平台和软件架构所需要的各个模块,为操作系统的运行做好准备工作,主要分为初始化系统时钟,检测芯片工作电压、初始化堆栈、初始化各个硬件模块、初始化FLASH存储、形成芯片MAC地址、初始化非易失量、初始化MAC层协议、初始化化应用帧层协议、初始化操作系统等十余部分,其具体流程图和对应的函数如下:    

2、                                                                                      图1系统初始化流程图2.操作系统的执行  启动代码为操作系统的执行做好准备工作后,就开始执行操作系统入口程序,并由此彻底将控制权移交给操作系统。其实,操作系统实体只有一行代码:Osal_start_system();//NoReturnfromhere   在这句话后面有一条注释,意思是本函数不会返回,也就是说它是一个死循环,永远不可能执行完。这个函数就是osal系统轮转查询操作的主体部分,它所做的工

3、作就是不断的查询每个任务中是否有事件发生,如果有事件发生,就调用相应的事件处理函数,如果没有任何事件发生就一直查询。我们可以看到下面就是这个函数的实现,其实这个函数的就是在一个无限的循环中。voidosal_start_system(void){#if!defined(ZBIT)  for(;;)//ForeverLoop#endif  {    uint8idx=0;    Hal_ProcessPoll();//ThisreplacesMT_SerialPoll()andosal_check_timer().    do{      if(tasksEvents[i

4、dx])//最高优先级任务被找到      {        break;      }    }while(++idx

5、XIT_CRITICAL();      HAL_ENTER_CRITICAL_SECTION(intState);      events=tasksEvents[idx];      tasksEvents[idx]=0;//CleartheEventsforthistask.      HAL_EXIT_CRITICAL_SECTION(intState);//通过指针调用来执行对应的任务处理函数      events=(tasksArr[idx])(idx,events);    //进入/退出临界区,保存尚未处理的事件          HAL_ENTER_

6、CRITICAL_SECTION(intState);      tasksEvents[idx]

7、=events;//Addbackunprocessedeventstothecurrenttask.          HAL_EXIT_CRITICAL_SECTION(intState);      }//本次事件处理结束,#ifdefined(POWER_SAVING)    else//所有的任务事件都被查询结束后,没有任何事件被激活    {      osal_pwrmgr_powerconserve();//系统进入休眠状态。    }#endif    

8、}}操作系统专门分配了存放所有任务事件的tasksEvents[]数组,每一个单元对应存放着每一个任务的所有事件,在这个函数中首先通过一个do—while循环来遍历tasksEvents[],找到一个具有待处理事件的优先级最高的任务,序号低的任务优先级高,然后跳出循环,此时,就得到了最高优先级任务的序号idx,然后通过events=tasksEvents[idx]语句,将这个当前具有最高优先级的任务的事件取出,接着就调用(tasksArr[idx])(inx,events)函数来执行具体的处理函数了,taskArr[]是一个函数指针数组,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。