OSAL系统架构

OSAL操作系统抽象层 背景 我们知道操作系统可以简单的分为内核和上层应用。其中内核是用来管理计算机的各种硬件资源和软件资源,比如内存资源,cpu资源,网络资源,还有各种外设资源等等。而应用程序就是调用计算机的各种资源来完成特定的任务,比如需要申请内存来保存数据,需要申请网卡资源来发送数据等等。当然应用程序需要某个资源时需要向内核发出申请。而内核会向应用程序提供一些接口来申请资源,这些接口称之为系统调用。当然一般应用开发不会直接调用系统调用,因为使用不方便,一般调用的是各种标准库的接口,比如glibc.标准库对系统调用进行了封装, 阅读详情

本人现在还是zigbee的初学者。现在正在努力的学习之中。理解可能会有一些偏差和错误,希望各位能够指正。

1.Zigbee的任务调度

   首先找到zigbee协议的主函数,在主函数里面,大部分是以一些初始化函数。有关应用程序最主要的函数为osal_init_system()和osal_start_system()。

   在osal_init_system()进行了内存、消息队列、和系统时间的初始化。我们主要看osalInitTasks()(此函数为系统任务的初始化)。在函数里面为每个任务分配了任务ID。这个 ID和tasksEvents,tasksArr的ID是对应的,顺序不能错。

  tasksEvents这个数组存放的是从序号为0到tasksCnt,每个任务在本次循环中是否要被运行,需要运行的任务其值非0。

  而tasksArr数组则存放了对应每个任务的入口地址,只有在tasksEvents中记录的需要运行的任务,在本次循环中才会被调用到。

 void osal_start_system( void ) //系统任务开始
{
#if !defined ( ZBIT ) && !defined ( UBIT )
  for(;;)  // Forever Loop 死循环
#endif
  {
    uint8 idx = 0;
    
    osalTimeUpdate();       //更新系统时间
    
    Hal_ProcessPoll();       //轮询定时器和串口
   
    do {
      if (tasksEvents[idx])     //查找最高优先级任务就绪
      {                    
        break;
      }
    } while (++idx < tasksCnt);

    if (idx < tasksCnt)
    {
      uint16 events;
      halIntState_t intState;

      HAL_ENTER_CRITICAL_SECTION(intState);//中断临界状态:保存先前中断状态,然后关中断
      events = tasksEvents[idx];
      tasksEvents[idx] = 0;                // Clear the Events for this task.
      HAL_EXIT_CRITICAL_SECTION(intState); //跳出中断临界状态:恢复先前中断状态

      events = (tasksArr[idx])( idx, events ); //对应的任务函数运行

      HAL_ENTER_CRITICAL_SECTION(intState);
      tasksEvents[idx] |= events;  // Add back unprocessed events to the current task.
      HAL_EXIT_CRITICAL_SECTION(intState);
    }
#if defined( POWER_SAVING )
    else
    {
      osal_pwrmgr_powerconserve();  //没有任务运行时,处理器休眠
    }
#endif
  }
}


OSAL框架基础以及相关的系统架构实现的原理 1、任务的调度 实际就是循环遍历一个任务列表,检查任务的执行状态,可以执行的 就开始执行。循环遍历。 实际就是sfwd的实现原理 两个数组(指针)记录任务的调度 *tasksEvents记录序号从0到taskcnt对应的任务是否被执行; *tasksArr记录每个任务的入口地址; for(;???? // Forever Loop { uint8 idx = 0; Hal_ProcessPoll(); // 先不管1 do { if (tasksEvents[idx]) // 寻找最高优先级的任务来运行 { 阅读详情

相关推荐

OSAL系统及BLE源代码分析(原创)

基于CC51芯片逐行分析低功耗蓝牙代码,OSAL系统的构建原理,值得一看

【事件驱动框架OSAL】一.事件和任务管理

OSAL事件驱动框架:事件和任务管理简述

qq_34142812的博客 3852

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

ZigBee学习——浅析协议栈

学习Zigbee中的OSAL,并浅析Z-stack协议栈运行机制

struggle_success的博客 2717

YOLOv8冻结层的迁移学习 全网首发

在调用时会创建trainer此时的模型配置更新了,冻结了个p。

qq_42693842的博客 6586

dify智能体:日志管理与标注功能详解

日志管理与标注功能是优化聊天助手、Agent、文本生成应用、Chatflow 和工作流等工具交互体验的关键。日志管理允许用户查看、修改和标注日志,帮助回顾和优化交互内容。用户可以通过点击👍或👎按钮快速标注满意度,标注后的日志可用于后续优化和分析。标注功能则支持用户对交互内容进行标记和调整,以提升模型输出质量。此外,用户还可以调整界面语言和时区设置,确保在熟悉的环境中操作。这些功能共同作用,显著提升了交互体验和模型性能。

zyx_bx的博客 2711

蓝牙4.0和zigbee的协议栈BLE && Zstack详解(包括OSAL操作系统流程)

本文对TI公司的两个协议栈进行解析,包括BLE蓝牙4.0协议栈和Zstack Zigbee协议栈。二者均采用osal操作系统。本文也会对该系统基本操作流程进行解答。 协议 协议是一系列的通信标准,通信双方按照共同的标准进行数据的传输。 其实说白了协议就是在给每一层的数据进行封装打包,假设收集的数据是一个数组,那就再数组的前面或者后面或者两者加上一些冗余的数据,包括包头包尾校验码等。(物理层除外...

交汇的理想与现实的博客 3543

Geant4 学习笔记(一):实现multi-thread多线程

简单修改实现Geant4多线程

weixin_52417815的博客 6084

蓝牙4.0之二 OSAL(操作系统抽象)层工作原理

1、BLE系统架构 2、OSAL启动流程 Main() ==> HAL_BOARD_INIT();//初始化硬件 ==> InitBoard( OB_COLD );//初始化板卡IO ==> HalDriverInit(); //hal层驱动初始化 ==> osal_snv_init();//初始化Flash ==> osal_init_system(); //初始化OSAL ===>osal_mem_init();//初始化内存分配系统 ===..

caofengtao1314的专栏 1179

《UDS协议从入门到精通》系列——图解0x27:安全访问

什么是安全访问服务?应用场景和基本原理是什么?全网最直观详细的图解UDS-0x27:安全访问服务!!

车载系统攻城狮 7233

【Python_Zebra斑马打印机编程学习笔记(二)】基于BarTender将btw文件转换为zpl文件

本文介绍如何基于 BarTender 软件将 btw 格式的文件转换为 zpl 格式的文件,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 3375

CC2541 OSAL工作原理

蓝牙为了实现同多个设备相连,或实现多功能,也实现了功能扩充,这就产生了调度问题。因为,虽然软件和协议栈可扩充,但终究最底层的执行部门只有一个。为了实现多事件和多任务切换,需要把事件和任务对应的应用,并起一个名字OSAL操作系统抽象层。   OSAL管理的实现   如果实现软件和硬件的低耦合,使软件不经改动或很少改动即可应用在另外的硬件上,这样就方便硬件改造、升级、迁移后,软件的移植。H

free wind 3732

【声纳与人工智能融合——从理论前沿到自主系统实战】第一章 声纳AI的数据基础:仿真、数据集与表征学习

该数据集的特点是包含了多种底质背景(沙地、泥地、碎石区)与噪声条件,适合验证模型的背景抑制能力。Urashima数据集由日本海洋研究开发机构(JAMSTEC)发布,基于自主水下航行器(AUV)采集,包含前视声纳序列数据,主要用于水下导航与避障算法评估,其数据包含了精确的姿态与深度标注,支持三维场景重建算法的训练。北约海洋研究与实验中心(CMRE)发布的CMRE datasets包含侧扫与合成孔径声纳数据,特别适用于跨传感器域自适应研究,数据集中包含了同一区域的多种声纳成像结果,为跨模态学习提供了基准。

u012133341的博客 103

ble低功耗蓝牙介绍-2

I低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用自该文档,不一一说明。初稿,待修改。 一、概述 1、BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主

huariylee的博客 1085

基于YOLOv11的气象目标检测系统:台风眼与钩状回波检测

气象目标检测是计算机视觉在气象领域的重要应用,对台风预警和强对流天气监测具有重要意义。本文详细介绍了一种基于YOLOv11的气象目标检测系统,能够有效识别卫星云图中的台风眼和雷达图中的钩状回波。系统包含完整的数据处理流程、模型训练策略以及用户友好的Web界面。我们使用了公开的气象数据集进行训练和验证,并提供了完整的实现代码。实验结果表明,本系统在气象目标检测任务中达到了较高的准确率和实用性。关键词:气象目标检测;YOLOv11;台风眼检测;钩状回波;深度学习;计算机视觉台风眼检测数据集。

YOLO 474

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OSAL操作系统资源文件详细介绍:项目核心功能/场景

OSAL操作系统资源文件详细介绍:项目核心功能/场景 去发现同类优质开源项目:https://gitcode.com/ 初学者福利!深入了解操作系统底层原理的宝藏资源——OSAL操作系统资源文件,为你的学习之路保驾护航。 项目介绍 OSAL操作系统资源文件是一份面向操作系统开发初学者的宝贵资料。它不仅包含了详尽的开发文档,更提供了清晰的代码注释,帮助读者从系统架构到具体实现,逐步理解并掌握操作系统...

gitblog_06774的博客 288

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CC2530学习(五)Z-stack Sample源码分析

文章目录一、Zigbee协议二、Z-stack三、TI Sample程序解析(一)、main()(二)、osal_init_system()(三)、osalInitTasks()(四)、osal_start_system()(五)、osal_run_system()四、总结 一、Zigbee协议 想要了解Zigbee协议栈,首先要了解Zigbee协议。ZigBee的协议分别为下面两部分。 IEE...

oyzy_Sean的篝火 2054

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

CC2540低功耗的内幕

一、概述 1、BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主机。对于4.0以前的蓝牙,这两部分是分开的。所有profile(姑且称为剧本吧,用来定义设备或组件的角色)和应用都建构在GAP或GATT之上。下面由结构图的底层组件开始介绍。 · PHY层,工作车间,1Mbps自适应跳频GFSK(高斯频移键控),运行在免证的2.4GHz ·...

weixin_30445169的博客 188

TI低功耗蓝牙(BLE)介绍

一、概述   1、BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主机。对于4.0以前的蓝牙,这两部分是分开的。所有profile(姑且称为剧本吧,用来定义设备或组件的角色)和应用都建构在GAP或GATT之上。下面由结构图的底层组件开始介绍。  ·        PHY层,工作车间,1Mbps自适应跳频GFSK(高斯频移键控),运行在

maggie_lu 2502

蓝牙4.0 OSAL层工作原理

BLE系统架构 // OSAL_SimpleBLEPeripheral.c const pTaskEventHandlerFn tasksArr[] = { LL_ProcessEvent, // task 0 HAL_ProcessEvent, HCI_ProcessEvent, #if defined(OSAL_CBTIMER_NUM_TASKS)...

记录点点滴滴 968

TI_ble低功耗蓝牙

TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用自该文档,不一一说明。初稿,待修改。 一、概述 1、BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主机。对于4.0以前的蓝牙,这两部分

ge23456789的专栏 4220

【事件驱动框架OSAL】二.消息的管理机制

OSAL 事件驱动框架中消息的管理,包括消息内存的分配,和消息的发送和接收流程。

qq_34142812的博客 1891
下一篇: Zigbee串口初始化的解析1
muzhen
博客等级 码龄16年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值