这里主要分享的问题主要是在通讯芯片的设计中遇到的一些

ChibiOS 是一款支持可抢占调度的多任务RTOS。

支持 Mutex 互斥锁、Semaphore 信号量、Mailbox 邮箱、Virtual Timer 定时器、Message 消息(事件机制)。

实现了基于单链表的Heap内存管理方式。

-------------------------------------------------------------------------------------------

OSAL为Operating System Abstraction Layer,即操作系统抽象层,支持多任务运行,所有的应用程序(app)都在其上运行,它并不是一个传统意义上的操作系统,但是实现了部分类似操作系统的功能。

OSAL是一种基于事件驱动的轮询式"操作系统"。

现有的嵌入式操作系统可以分为两类,即通用的多任务操作系统(General purpose Multi-tasking OS)和事件驱动的操作系统(Event-driven OS)。前者能够很好地支持多任务或者多线程,但是会随着内部任务切换频率的增加而产生很大的开销,这类操作系统有:uC/OS-II、嵌入式Linux、WinCE等。后者支持数据流的高效并发,并且考虑了系统的低功耗要求,在功耗、运行开销等方面具有优势,典型的代表如TinyOSl291。

OSAL的调度机制分为三部分:1、任务调度;2、时间管理;3、原语通信。

1、任务调度:osal采用一个链表结构来管理协议栈各层相应任务。相关操作函数有,添加任务到链表中;获取下一个活动任务;根据taskID查找下一个任务。osal采用轮询任务调度队列(任务链表),通过两个函数:调度程序主循环函数和设置事件发生标志函数。

在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。

事件发生 ->

被打包为消息 ->

存放到消息队列 ->

OSAL轮寻任务中的事件状态 ->

有事件发生 ->

事件处理函数执行对应功能

2、时间管理:通过为事件设置超时等待时间,一旦等待时间结束,便为对应任务设置事件发生标志,从而达到对事件进行延时处理目的。

3、原语通信:请求响应原语操作:一旦调用了下层相关函数后,就立即返回。下层处理函数在操作结束后,将结果以消息的形式发送到上层并产生一个系统事件,调度程序发现这个事件后就会调用相应的事件处理函数对它进行处理。两个相关函数:向目标任务发送消息的函数;消息提取函数。

当有一个事件发生的时候,OSAL负责将此事件分配给能够处理此事件的任务,然后此任务判断事件的类型,调用相应的事件处理程序进行处理。

(ChibiOS )嵌入式操作系统 与 (OSAL)操作系统抽象层相关推荐

  1. OSAL(操作系统抽象层)

    OSAL为Operating System Abstraction Layer,即操作系统抽象层,支持多任务运行,所有的应用程序(app)都在其上运行,它并不是一个传统意义上的操作系统,但是实现了部分 ...

  2. CC2540/CC2541/CC254x之OSAL操作系统抽象层

    测试环境 协议栈版本:BLE-CC254x-1.4.0 开发环境IAR版本:IAR 8.20 硬件设备:CC2540/CC2541开发板 示例测试Demo工程:simpleBLEPeripheral工 ...

  3. ZigBee学习之7——OSAL(操作系统抽象层)API解读

    根据Z-Stack1.4.3-1.2.0中OSAL API_F8W-2003-0002_.pdf文档翻译. Z-Stack1.4.3及以后的版本中引入了一个OS的概念,把应用层和堆栈层进行了分离,但是 ...

  4. WSF操作系统抽象层学习笔记 (五)---事件处理及运行方式

    事件处理 事件管理会创建一个OS的事件,用于进行WSF无运行需求时任务的阻塞. //事件管理结构 typedef struct {uint16_t param; //参数uint8_t event; ...

  5. zigbee之OSAL操作系统

    概述 OSAL(Operating System AbstractionLayer),即操作系统抽象层. OSAL是一种基于事件驱动的轮询式操作系统,所提供的管理功能有: (1)任务登记.任务初始化. ...

  6. OSAL操作系统实验学习笔记04

    相信很多人接触了OSAL操作系统之后对它的任务资源分配机制还是很模糊,我细看了很多遍也还是略知一二,现在分享一篇我觉得写得特别好的文章. 深入浅出Z-Stack OSAL多任务资源分配机制 一 概述 ...

  7. 5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

    本文根据一周CC2541笔记汇总得来-- 适合概览和知识快速索引-- 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...

  8. Z-Stack + OSAL操作系统

    Z-Stack + OSAL操作系统 Zigbee协议栈与Zigbee协议 协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收.协议栈是协议的具体实现形式,简单地说就是协议栈 ...

  9. NCRE - 嵌入式系统开发工程师 – 操作系统(随笔)

    1.基本知识 (1)嵌入式系统的定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统. (2)嵌入式系统发展的4个阶段:无操作系统 ...

  10. OpenWrt项目:针对嵌入式设备的Linux操作系统

    欢迎来到OpenWrt项目 OpenWrt项目是针对嵌入式设备的Linux操作系统.OpenWrt不会尝试创建单个静态固件,而是提供具有包管理功能的完全可写文件系统.这使您从供应商提供的应用程序选择和 ...

最新文章

  1. CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群
  2. 设置DVD为CentOS6安装源
  3. 分类模型的评估方法-正确率(Accuracy)
  4. MySQL锁的用法之行级锁
  5. 疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统
  6. Windows xp 定时关机命令
  7. 今天我的天空瞬间明亮了
  8. Evaluate that you caught up with the price cut
  9. bwlabel和bwconncomp区别
  10. Blog说明--WaaSinn的专业窝
  11. kernel32.dll动态链接库报错解决方法win7,怎么修复kernel32.dll文件缺失
  12. 单片机学习笔记(数码管)
  13. 离散型Hopfield神经网络(DHNN)
  14. APS Interview - Digital Circuit and Digital Logic I
  15. kubectl源码分析之rollout restart
  16. php简单论坛登录注册,php登录注册求救
  17. Spark入门实战系列--1.Spark及其生态圈简介
  18. 使用 CSS Color-Mix() 简化你的调色板
  19. 树模型之三种常见的决策树:CART,…
  20. 忘记手机密码怎么用计算机解开,手机忘记密码怎么办?教你三种方法帮你搞定!...

热门文章

  1. JMeter使用教程(一)
  2. Mysql Workbench使用教程
  3. ASCII码二进制对照表及其规律
  4. 董付国python题库_1000道Python题库系列分享四(40道)
  5. 固态硬盘用软件测试掉速严重,SSD固态硬盘掉速怎么办?手动执行TRIM指令缓解固态硬盘掉速方法...
  6. 清晰的史密斯圆图 wiki上的
  7. NoteExpress 3.2下载
  8. cache数据库入门教程 数据库m语言常用函数和命令
  9. 关系抽取(relation extraction)综述
  10. 最短路径spfa算法