OSAL操作系统分析(添加自定义任务)

目录

  • 事件驱动型OSAL操作系统原理分析
  • OSAL消息收发过程
  • 向OSAL系统添加自定义任务

事件驱动型OSAL操作系统原理分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

任务就是一个函数,每一个任务都要有一个函数,形成函数列表(函数指针数组)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上就是任务处理函数,都是任务调度之前做的事情。

那事件是怎么来的?

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
操作系统轮询,发现不为0的事件,怎么发现的?

在这里插入图片描述
osal_set_event设置这个事件,轮询的时候就会发现这个事件,发现这个事件就会去调用某个任务,任务处理完就会osal_clear_event清除这个事件,清除的本质就是取反操作

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OSAL消息收发过程

以串口通信为例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述进入osal_msg_send函数
在这里插入图片描述

在这里插入图片描述
进入osal_msg_receive函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
消息收发的本质:
往消息队列里面放了一块自己申请的空间,通过事件的机制osal_set_event把某个事件置位,让操作系统在轮询调度的过程中发现这个事件从而去调度相应的任务去处理这个消息。

向OSAL系统添加自定义任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OSAL创建任务:

1、添加任务的本质就是创建一个自己的任务函数,返回值和参数要遵循函数指针数组里面的定义,发生了某件事(事件被置位)这个函数就被执行

2、还要定义任务初始化函数并保存相应的任务ID

在这里插入图片描述

任务个数通过计算任务数组得到
在这里插入图片描述

在这里插入图片描述

数组里面的函数指针形式如下所示:

在这里插入图片描述
在这里插入图片描述

以前面讲的串口为例:

在这里插入图片描述

第372行:

在这里插入图片描述
编译运行:

打印端口、长度、数据

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正点原子FreeRTOS(上)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

Vue通过build打包后 打开index.html页面是空白的

最近在build打包vue项目遇到了几个问题,如下: 1、npm run build打包项目之后,我们通常是把dist文件里面被压缩后的static文件跟index.html提交到服务器,但最近发现直接打开index.html页面是空白的,还会报几个错&#x…

centos 5.8 升级php5.1至5.3

为什么80%的码农都做不了架构师?>>> 1.先查看当前php版本 #php -v 2.升级php版本 #rpm --import http://repo.webtatic.com/yum/RPM-GPG-KEY-webtatic-andy #wget -P /etc/yum.repos.d/ http://repo.webtatic.com/yum/webtatic.repo #yum --enablere…

redis集群部署及常用的操作命令_01

简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能需要…

ubuntu网络环境搭建

参考:https://www.bilibili.com/video/BV1n541197rk?spm_id_from333.999.0.0 目录开发板网线直连电脑网口,电脑WIFI上网有的公司保密性强,可能要找网络管理员协助 开发板网线直连电脑网口,电脑WIFI上网 开发板一定要上电并连接到…

高级 IO(非阻塞、多路复用、异步、存储映射、文件锁)

目录非阻塞I/O阻塞I/O 与非阻塞I/O 读文件阻塞I/O 的优点与缺点使用非阻塞I/O实现并发读取I/O 多路复用何为I/O多路复用select()函数poll()函数总结非阻塞I/O 关于“阻塞”一词前面已经给大家多次提到,阻塞其实就是进入了休眠状态,交出了CPU 控制权。前…

程序员---我的读书列表

2019独角兽企业重金招聘Python工程师标准>>> 1、JAVA核心技术 2、knuth《The Art of program》四卷,辅导书《基本数学》 转载于:https://my.oschina.net/muyexia/blog/225376

用SHA1或MD5 算法加密数据(示例:对用户身份验证的简单实现)

(一).功能 用哈希算法: SHA1或MD5 实现用户账号和密码验证. 数据库存储实现原理是: 用户账号直接存储在数据库中,密码经过加密后再存储到数据库中. 当用户登录时,密码要经过加密后再与数据库中的实际存储密码比较,确定是否合法用户…

https网络编程——HTTP协议的简介、HTTP报文结构和代理、HTTP加速解析方法(哈希加速、协议状态机)

参考:HTTP协议的简介及其工作原理等 地址:https://qingmu.blog.csdn.net/article/details/108046553?spm1001.2014.3001.5502 目录HTTP协议的简介及其工作原理1、HTTP简介1.1、什么是超文本(HyperText)?1.2、什么是URL&#xff…

c# 2.0 Factory的实现

用C#的范型建立一个Factory模式的模板: publicstructFactoryConverter<A, B>{ public static implicit operator A(FactoryConverter<A, B> conv) { return Activator.CreateInstance<A>(); } public static implici…

https网络编程——openssl安装(两个软链接库libssl、libcrypto)、openssl命令行方式实现CA和证书、介绍SSH

参考&#xff1a;openssl安装方式&#xff08;Ubuntu下&#xff09; 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/115454254?spm1001.2014.3001.5502 目录官方网站1、解压2、编译安装3、生成软连接(两个库)4、测试这是B站openssl视频教程&#xff1a;https…

[spring boot] 01 环境搭建 - 配置java和mvn环境

主要内容&#xff1a; 一、IntelliJ IDEA 安装 二、maven 安装 三、设置IDEA和mvn的关系 一、IntelliJ IDEA 安装 1.1. 下载编辑器&#xff1a;前往下载 (Ultimate和Community都是可以的&#xff0c;我一般下载前一个) 1.2. 注册码记得搜索 二、maven 安装 2.1. 下载mvn&#x…

https网络编程——HTTPS简介以及SSL协议详解

参考;HTTPS简介以及SSL协议详解 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108209248?spm1001.2014.3001.5502 目录1.HTTPS简介2.SSL协议介绍2.1、SSL协议的功能2.2、SSL协议在协议栈的位置2.3、SSL协议组成2.3.1、纪录协议的功能2.3.2、SSL记录协议的示…

D3---01基础的柱状图制作(转)

---文章转自 http://d3.decembercafe.org/index.html &#xff0c;Created by 十二月咖啡馆。 一个完整的柱形图包含三部分&#xff1a;矩形、文字、坐标轴。 首先要布置一个大小合适的 SVG 画布&#xff1a; 添加 SVG 画布 //画布大小 var width 400; var height 400;//在…

https网络编程——对称加密、非对称加密、单项加密的简单介绍

参考&#xff1a;对称加密、非对称加密、单项加密的简单介绍 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108213426?spm1001.2014.3001.5502 目录1、对称加密1.1、什么是对称加密&#xff1f;1.2、对称加密的优缺点是什么&#xff1f;1.3、常见的对称加密…

dnn中个性化服务的使用

1.什么是profiles(个性化服务)Profiles是系统面向用户提供的灵活性的个体信息的容器&#xff0c;一个用户的Profile可以使以下一种或多种的集合&#xff1a; &#xff08;1&#xff09; 简单的字符串或其他基础类型 &#xff08;2&#xff09; 一个序列化的实体 &#xff08;3&…

洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路&#xff0c;每条道路连接这 nn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mm 条道路中有一部分为单向通行的道路&#xff0c;一部分为双向通行的道路&#xff0c;双向通…

https网络编程——SSL的加密和解密过程

参考&#xff1a;SSL的加密和解密过程 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108214105?spm1001.2014.3001.5502 目录现在的加密/解密技术主要有三种&#xff1a;对称加密&#xff0c;非对称加密&#xff0c;和单向加密加密解密的流程图现在的加密/解…

IIS网站的权限设置问题

2019独角兽企业重金招聘Python工程师标准>>> IIS中的权限与NTFS权限设置的区别&#xff1a; 当浏览器访问被IIS禁止的页面时&#xff0c;返回404错误页面 但浏览器访问被NTFS禁止的文件时&#xff0c;提示用户登录界面 转载于:https://my.oschina.net/changeme/blog…

关于.Net2.0下配置架构的使用

上次用到配置文件,就花了一些时间研究了一下.Net2.0下的配置文件架构,当时感觉确实很强大,完善,但看的有些头晕.迷迷糊糊把实现了要求,就没有再深入研究.最近,想在配置文件里实现一个复杂的配置,多层次嵌套的配置文件,再把.Net中的配置文档研究了一下&#xff0c;经过这两次的研…