首先上图,跟着图中的函数顺序来感受Z-Stack的工作流程:

Z-Stack协议栈总的来说做了两件事,系统的初始化和启动OSAL操作系统。
系统初始化:从main函数看,首先是调用了osal_init_system()函数,它的主要功能是初始化操作系統所有的任务,通过IAR的跟踪功能,得到它的函数体如下图:

其中最主要的函数是osalInitTasks(),它初始化了系统的任务,跟踪到其函数体如下如图:

首先为事件任务数组申请了内存空间,可以看到有个变量taskID,这是用于事件处理的任务号,这里初始化好任务号后,紧接着开始OSAL,在main函数中调用osal_start_system()函数。跟踪到函数体中发现是一个死循环:

在osal_run_system()函数中会循环遍历系统所有任务的事件,不为0则有事件发生,然后再去处理相应的事件。跟踪到函数中可以看到其使用一个do while语句实现循环遍历:

如果有任务事件产生,则调用相应的事件处理进程,

事件处理使用的是函数指针处理,tasksArr数组中存放的都是函数指针,如下图:

为了使其能够准确的调用相应的任务事件处理函数,tasksEvents[]与tasksArr[]的元素必须相对应。

根据元素的排列顺序就可知他们的优先级,排在前面的优先级更高。
对于用户事件的处理函数在APP应用层下的MyApp.c(每个人的文件名可能不一样)文件中的MyApp_ProcessEvent函数:

MyApp_ProcessEvent函数是我们用户自定义的函数,比如我们定义的按键事件等都需要在该函数下实现,首先利用(afIncomingMSGPacket_t
*)osal_msg_receive( MyApp_TaskID )从消息队列中获取消息,如果有消息则用switch结构根据消息的子事件,判断是什么事件的发生,处理完事件后需要释放空间,然后接着从消息队列接收消息,最后返回处理后的events(events ^ SYS_EVENT_MSG)。将events重新赋值到tasksEvents中,继续轮询。

简述Z-Stack的基本工作原理与流程(OSAL操作系统)相关推荐

  1. ARKit从入门到精通-ARKit工作原理及流程介绍

    2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1.2-ARKit与SceneKit ...

  2. ARKit从入门到精通(2)-ARKit工作原理及流程介绍

    转载请注明出处:ARKit从入门到精通(2)-ARKit工作原理及流程介绍 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARKit工作原理 1.3.1-ARSCNView ...

  3. springmvc工作流程_springMVC工作原理及流程详细讲解

    简述 本文主要介绍springMVC工作原理. 工作原理 客户端发送HTTP请求,DispatcherServlet控制器拦截到请求,调用HandlerMapping 解析请求对应的Handler,H ...

  4. JVM 工作原理和流程

    转 Java 详解 JVM 工作原理和流程 <div class="article-info-box"><div class="article-bar- ...

  5. Spark SQL架构工作原理及流程解析

    Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析.逻辑执行计划翻译.执行计划优化等逻辑. Sp ...

  6. 身份证OCR识别工作原理及流程

    随着互联网科技.移动互联科技的发展和云端计算服务.移动智能设备的普及(性能提升),智能OCR识别技术在云端.服务器端及移动端的应用也得到了长足的发展.今天为大家介绍下身份证OCR识别如何快捷.准确的识 ...

  7. SSM三大框架+SpringMVC的工作原理及其流程

    SSM三大框架+SpringMVC的工作原理及其流程 一.SSM中各层作用及关系 1.持久层:DAO层(mapper层)(属于mybatis模块)     DAO层(Mapper层):主要负责与数据库 ...

  8. 简述网卡的作用和工作原理_发电机调节器的作用及工作原理

    发电机由发动带动,其转速则是由发动机转速所决定.工作时,发动机转速变化范围很大,这势必对发电机输出电压的大小有很大影响,为使发电机电压 在不同的转速下均能保持一定,且能随发电机转速的变化而自动调节,使 ...

  9. 简述微型计算机的组成和工作原理,简述计算机系统组成及计算机工作原理

    计算机系统的组成 微型计算机由硬件系统和软件系统组成. 硬件系统:指构成计算机的电子线路.电子元器件和机械装置等物理设备,它包括计算机的主机及外部设备. 软件系统:指程序及有关程序的技术文档资料.包括 ...

  10. 简述路由器和路由器的工作原理

    路由器 解释路由器的概念,首先得知道什么是路由. 所谓"路由",是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,它的英文名称为Router, ...

最新文章

  1. c++回调函数 callback
  2. 怎么添加设置微信定位服务器,微信的定位怎么添加
  3. WebService、WCF、WebAPI、MVC的区别
  4. 苹果机器学习期刊首文:提升合成图像的真实性
  5. boost::detail::lowest_bit的测试程序
  6. 757计算机电子元件,飞行员的好帮手 波音757的发动机指示与机组报警系统简介...
  7. 计算机一级上机考试试题题库,2016年计算机一级上机考试题库
  8. wps居中对齐不在中间_WPS文字快捷键总结(Windows版本)--值得收藏
  9. spring(四):spring与mybatis结合
  10. 面向对象的Oracle用法
  11. 数学第一单元计算机思维导图,七年级下册数学第一单元思维导图
  12. (附源码)计算机毕业设计ssm房屋租赁管理系统
  13. 对于 ACM程序设计选修课的感想
  14. python隐藏部分代码_python源码隐藏
  15. 做了五套登录页,晒一下 自己比较满意的~ oh yeh~
  16. Bomblab(ICS课程回课pku)
  17. tensorflow XLA 笔记
  18. spacy依存分析模型
  19. mysql更改加密方式后密码错误_关于解决mysql 8.0及以上 修改加密方式以及密码
  20. SitePoint Smackdown:Atom,括号,Light Table,Sublime Text

热门文章

  1. 解决报错:The Module Root specified is not a module according to Intellij
  2. php 微信支付时 自定义的商户订单号 与 商户支付后台 查询到的不一样 的坑
  3. FMDB與SQLite 數據庫應用示範:打做一隻簡單的電影資料庫 App
  4. linux安装project lemon测评机
  5. 新手项目:黑马旅行网(踩坑bug集合以及笔记)
  6. 后缀自动机入门/基本概念
  7. [欣赏]——天长地久
  8. html 透明的圆形,CSS3 花蝴蝶形状的3D透明圆球旋转变幻
  9. 人工智能:从图灵到未来
  10. oracle utl_http.request,通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求