鸿蒙小车之多任务调度实验
说到鸿蒙我们都会想到华为mate60:遥遥领先!我们一直领先!
我们这个小车也是采用的是鸿蒙操作系统,学习鸿蒙小车,让你遥遥领先于你的同学。
文章目录
- 前言
- 一、什么是任务?为什么要有任务
- 二、任务的状态
- 三、任务优先级
- 四、任务创建函数
- 五、任务创建实验
- 总结
前言
本专栏将依次介绍鸿蒙小车的内核实验,硬件实验,wifi 实验。
一、什么是任务?为什么要有任务
任务 是操作系统(RTOS)中的基本组成单元,它们为嵌入式系统提供了并发处理、实时性、模块化和资源管理等重要功能。通过任务,操作系统(RTOS)可以更好地管理系统资源和满足各种应用程序需求。
传统的裸机只有一个任务,处理不了多个事件,一次只能处理一个事件。
而操作系统(RTOS)可以支持多任务管理,可以处理多个事件提高了资源的利用率和性能。
任务概念举例:
以日常生活为例,比如这个母亲要同时做两件事:
喂饭:这是一个任务
回信息:这是另一个任务
对比裸机和RTOS同时完成上面的任务:
裸机只有在完成其中一个任务后才能够去完成下一个任务,这样就会导致整体性能下降。
RTOS可以在不同任务之间进行切换,这样可以提高系统的响应能力和实时性,使得多个任务可以并发执行。
二、任务的状态
任务分别有四个状态:
- 就绪态(Ready):任务准备运行
- 运行态(Running):该任务正在执行。
- 阻塞态(Blocked):该任务不在就绪队列中。还有任务被挂起、任务被延时、任务正在等待信号量、读写队列或者等待读写事件等,都会处于阻塞状态。
- 退出态(Dead):该任务运行结束,等待系统回收资源。
任务的状态之间可以进行转换,每一个任务在某一时刻都有属于自己的状态。
任务状态转换图:
任务状态切换说明:
就绪态→ 运行态
任务创建时进入就绪态,当进行任务切换时,最高优先级的任务会从就绪态切换到运行态。
运行态→ 阻塞态
正在运行的任务被挂起,延时,信号量等影响时,由运行态变为阻塞态。
三、任务优先级
优先级指的是任务执行顺序的概念。
在鸿蒙操作系统中,任务有32个优先级(0~31)最高优先级为 0,最低优先级为 31。
优先级越高的任务越先执行。优先级高的可以打断优先级低的执行。
厨房着火:
当面对厨房着火和吃饭时,先去灭火再回来吃饭,因为厨房着火的事情更加紧急,需要尽快处理。
四、任务创建函数
创建任务函数原型:
// 创建任务osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const
osThreadAttr_t *attr);
各个参数:
osThreadFunc_t func :这是一个指向任务函数的指针,表示要在任务中执行的代码。
void * argument :这是一个指向传递给任务函数的参数的指针。
const osThreadAttr_t * attr :这是一个指向任务属性的指针,用于配置任务的各种属性。任务属性可以包括任务的优先级、堆栈大小、堆栈指针、任务名字等。这些属性可以根据应用程序的需求进行配
置。
osThreadNew 函数的返回值是一个标识新创建任务的ID,这个ID可以用于管理和控制任务。
五、任务创建实验
修改app下的BUILD.gn文件.
static_library("Task") {//定义一个名为Task的静态库sources = ["Task.c"//指定静态库中包含的源文件]
include_dirs = ["//utils/native/lite/include","//domains/iot/link/libbuild"]
}
任务创建代码:
//包含头文件,头文件中有需要使用到的函数
#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"osThreadId_t Task1_ID; // 任务1 ID
osThreadId_t Task2_ID; // 任务2 ID//任务1
void Task1 (void *argument)
{while(1){printf("Task1\n");sleep(1);//释放CPU,延时1s}
}//任务2
void Task2 (void *argument)
{while(1){printf("Task2\n");sleep(1);//释放CPU,延时1s}
}static void entry(void)
{osThreadAttr_t attr;attr.name = "Task1"; // 任务的名字attr.stack_size = 1024; // 栈空间大小 单位:字节attr.priority = osPriorityNormal; // 任务的优先级,数据越大,优先级越高Task1_ID = osThreadNew(Task1, NULL, &attr);attr.name = "Task2";// 任务的名字attr.priority = osPriorityNormal1; // 任务的优先级,数据越大,优先级越高Task2_ID = osThreadNew((osThreadFunc_t)Task2, NULL, &attr);
}SYS_RUN(entry);//声明入口函数
将生成的镜像文件拷贝到共享文件夹当中:
cp out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin
/mnt/hgfs/HarmonyOS/镜像/
总结
下一篇文章继续为大家介绍 鸿蒙小车的内核实验 ----- 软件定时器实验。
相关文章:
鸿蒙小车之多任务调度实验
说到鸿蒙我们都会想到华为mate60:遥遥领先!我们一直领先! 我们这个小车也是采用的是鸿蒙操作系统,学习鸿蒙小车,让你遥遥领先于你的同学。 文章目录 前言一、什么是任务?为什么要有任务二、任务的状态三、任…...
【报错栏】(vue)Module not found: Error: Can‘t resolve ‘element-ui‘ in xxx
Module not found: Error: Cant resolve element-ui in xxx 报错原因是: 未安装 element-ui 依赖 解决: npm install element-ui 运行...
seaborn库图形进行数据分析(基于tips数据集)
Seaborn 是一个基于 matplotlib 的数据可视化库,可以用来绘制各种统计图表,包括散点图、条形图、折线图、箱线图等。Seaborn 提供了一些用于美化图表的默认样式和颜色主题,使得生成的图表更具有吸引力。下面是一些 Seaborn 库的常用功能和用法…...
AC843. n皇后问题--60
我们只需要把蓝色的往上移动就行了 if(!col[i][j]&&!dg[ui]&&!udg[])//1y(i)向下,x(u)向右为正。yxb的by-x一定>0,y-xb的bxy可能>0,这个不考虑,只看-bxy....
Js WebSocket类,收发Json,带心跳,断线重连
如题 心跳:4秒发一次 断线:2秒后自动重连 收发:发送和返回json,处理粘包断包等情况,json字符串最大长度9999 缓存:未连接时,自动缓存100个包,当连接时会自动发出 JS代码 var MyWeb…...
VBA技术资料MF96:单字段多条件高级筛选
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...
电子取证中Chrome各版本解密Cookies、LoginData账号密码、历史记录
文章目录 1.前置知识点2.对于80.X以前版本的解密拿masterkey的几种方法方法一 直接在目标机器运行Mimikatz提取方法二 转储lsass.exe 进程从内存提取masterkey方法三 导出SAM注册表 提取user hash 解密masterkey文件(有点麻烦不太推荐)方法四 已知用户密…...
Axure元件基本介绍进阶
Axure元件基本介绍进阶 1.Axure元件基本介绍1.在 Axure 中,元件是构建原型的基本构成单元,能够帮助设计师快速创建、重复使用和管理设计元素。以下是 Axure 中元件的基本介绍:1.基本元件: 2.基本元件的使用一.【举例说明】积木&am…...
安卓11添加切换以太网动态静态方法
客户要在app中自由切换动态,静态方法,直接把系统jar-api给他搞了半天搞不定,只有在系统里给他实现一个接口,方法如下: Index: packages/apps/Settings/AndroidManifest.xml--- packages/apps/Settings/AndroidManifes…...
初级数据结构(五)——树和二叉树的概念
文中代码源文件已上传:数据结构源码 <-上一篇 初级数据结构(四)——队列 | NULL 下一篇-> 1、树结构(Tree) 1.1、树结构的特点 自然界中的树由根部开始向上生长,随机长出分支&…...
pdf读取内容缺失(漏字/文字丢失)问题
项目中遇到pdf文件漏字,由于文件涉密,不能展示,简单描述一下: 比如原pff中 姓名:张三 读取结果中:空白:张三 即:原文件说是银行出具的打款证明,银行内部设置了文件权限&a…...
c#面试基础语法——现有⼀个整数number,请写⼀个⽅法判断这个整数是否是2的N次⽅
1.number%20 取余(取模)只能判断number是不是2的倍数但不一定是2的N次方,如:6%20但是他并不是2的N次方 2.(number&(number-1))0 原理:如果number是2的N次方则表示2进制位只有一位是1。如:2 (…...
27系列DGUS智能屏发布:可实时播放高清模拟信号摄像头视频
针对高清晰度的模拟信号摄像头视频画面的显示需求,迪文特推出27系列DGUS智能屏。该系列智能屏可适配常见的AHD摄像头、CVBS摄像头,支持单路1080P高清显示、两路720P同屏显示(同一类型摄像头)。用户通过DGUS简单开发即可实现摄像头…...
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
一、本文介绍 本文给大家带来的改进内容是LSKNet(Large Kernel Selection, LK Selection),其是一种专为遥感目标检测设计的网络架构,其核心思想是动态调整其大的空间感受野,以更好地捕捉遥感场景中不同对象的范围上下…...
【工具】VUE 前端列表拖拽功能代码
【工具】VUE 前端列表拖拽功能代码 使用组件 yarn add sortablejs --save Sortable.js中文网 (sortablejs.com) 以下代码只是举个例子, 大家可以举一反三去实现各自的业务功能 <template><div><el-button type"primary" click"切换…...
人工智能与量子计算:开启未知领域的智慧之旅
导言 人工智能与量子计算的结合是科技领域的一场创新盛宴,引领我们进入了探索未知领域的新时代。本文将深入研究人工智能与量子计算的交汇点,探讨其原理、应用以及对计算领域的深远影响。 量子计算的崛起为人工智能领域注入了新的活力,开启了…...
2023了,前端实现AI电子秤思路分析
前景小知识: 这几年ai这个话题非常火爆,笔者从事零售行业软件开发也接到了新需求,希望实现ai电子秤,老规矩,先看需求 举个栗子: 或许,你已经留意到,当你在某些大型超市超市或生鲜类…...
CSS学习
CSS学习 1. 什么是css?2.css引入方式2.1 内嵌式2.2 外联式2.3 行内式2.4 引入方式特点 3. 基础选择器3.1 标签选择器3.2 类选择器3.3 id选择器3.4 通配符选择器 4. 文字基本样式4.1 字体样式4.1.1 字体大小4.1.2 字体粗细4.1.3 倾斜4.1.4 字体4.1.5 字体font相关属性连写 4.2 …...
Flask基本用法:一个HelloWorld,搭建服务、发起请求
目录 1、简介 2、安装 3、Flask使用示例 参考 1、简介 官网文档 Flask是一个轻量的web服务框架,我们可以利用它快速搭建一个服务,对外提供接口,其他人可以轻松调用我们的服务。这对算法工程师来说比较关键,我们通常不擅长搞开发…...
Tomcat-安装部署(源码包安装)
一、简介 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说,Tomcat是一个WEB应用程序的托管平台…...
【Hadoop_06】MapReduce的概述与wc案例
1、MapReduce概述1.1 MapReduce定义1.2 MapReduce优点1.3 MapReduce缺点1.4 MapReduce核心思想1.5 MapReduce进程1.6 常用数据序列化类型1.7 源码与MapReduce编程规范 2、WordCount案例实操2.1 本地测试2.2 提交到集群测试 1、MapReduce概述 1.1 MapReduce定义 MapReduce是一…...
Qt点击子窗口时父窗口标题栏高亮设计思路
父窗口调用findChildren得到其子孙窗口的列表,列表元素统一为QWidget*,遍历列表元素,每个元素调用installEventFilter,过滤QEvent::FocusIn和QEvent::FocusOut事件,做相应处理即可: QWidget* parent; QLis…...
掌握iText:轻松处理PDF文档-高级篇-添加水印
前言 iText作为一个功能强大、灵活且广泛应用的PDF处理工具,在实际项目中发挥着重要作用。通过这些文章,读者可以深入了解如何利用iText进行PDF的创建、编辑、加密和提取文本等操作,为日常开发工作提供了宝贵的参考和指导。 掌握iText&…...
深度学习基本概念
1.全连接层 全连接层就是该层的所有节点与输入节点全部相连,如图所 示。假设输入节点为X1, X 2, X 3,输出节点为 Y 1, Y 2, Y 3, Y 4。令 矩阵 W 代表全连接层的权重, W 12也就代表 …...
2023年最详细的:本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录
📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一…...
基于ssm金旗帜文化培训学校网站的设计与开发论文
摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对培训学校展示信息管理混乱,出错率高,信息安全…...
【Java】猜数字小游戏
规则 游戏开始随机生成4位数字符串,每个数字从0到9各不相同,比如0123玩家10次猜数机会,输入4位数字符串,每个数字从0到9各不相同游戏判断玩家输入与所猜谜底数,给出结果nAnB,A表示位置和数字都猜对的个数&…...
汽车EDI:Chrysler EDI项目案例
菲亚特克莱斯勒汽车Fiat Chrysler Automobiles(FCA)是一家全球性汽车制造商,主营产品包括轿车、SUV、皮卡车、商用车和豪华车等多种车型。其旗下品牌包括菲亚特、克莱斯勒、道奇、Jeep、Ram、阿尔法罗密欧和玛莎拉蒂等。 Chrysler通过EDI来优化订单处理、交付通知、…...
Locust:可能是一款最被低估的压测工具
01、Locust介绍 开源性能测试工具https://www.locust.io/,基于Python的性能压测工具,使用Python代码来定义用户行为,模拟百万计的并发用户访问。每个测试用户的行为由您定义,并且通过Web UI实时监控聚集过程。 压力发生器作为性能…...
用23种设计模式打造一个cocos creator的游戏框架----(十八)责任链模式
1、模式标准 模式名称:责任链模式 模式分类:行为型 模式意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处…...
外国出名的设计网站/兰州seo快速优化报价
1 先创建虚拟机 1 新建虚拟机 3 使用已有的虚拟磁盘 4 点击创建 5 完成 本文转自zhang25yun51CTO博客,原文链接: http://blog.51cto.com/1585654/1673214,如需转载请自行联系原作者...
做电商网站用什么技术/百度广告代运营
高级选择器分为:后代选择器、子代选择器、并集选择器、交集选择器 后代选择器 使用空格表示后代选择器。顾名思义,父元素的后代(包括儿子,孙子,重孙子) 1 .container p{ 2 color: red; 3 } 4 .…...
搭建一个网站需要多久/自媒体平台大全
1.Mi 快传 https://www.lanzous.com/i69ty9c 2.快牙(跨平台) https://www.lanzous.com/i69tybe 3.Mi互传(Win10(verson>1903)) http://lanzous.com/i6wiuef 4.百灵快传(跨平台-有二进制包) 基于Go https://github.com/bitepeng/b0pass 国内可以到介绍的gitee地址直接…...
便宜做外贸网站/深圳海外推广
第6周 文章目录第6周[toc] 十、应用机器学习的建议(Advice for Applying Machine Learning)10.1 决定下一步做什么10.2 评估一个假设10.3 模型选择和交叉验证集10.4 诊断偏差和方差10.5 正则化和偏差/方差10.6 学习曲线10.7 决定下一步做什么十一、机器学习系统的设计(Machine …...
转转怎么做钓鱼网站/阳西网站seo
推土机很好,请参阅Jean-Remy的回答.此外,如果变量根据JavaBeans标准具有getter和setter,那么有许多技术可以帮助您,例如: Apache Commons / BeanUtils示例代码(未测试):final Map aProps BeanUtils.describe(a);final Map bProps BeanUtils.describe(b…...
西宁网站制作哪里好/新媒体营销案例ppt
属性striped设置为true,即striped:true。 如果想更改颜色,可以更改easyui.css中的.datagrid-row-alt样式。转载于:https://www.cnblogs.com/hubing/p/3969599.html...