苏州保洁公司有多少家,电商网站 内容优化,做的好的音乐网站的特点,网上停车场做施工图人员网站说到鸿蒙我们都会想到华为mate60#xff1a;遥遥领先#xff01;我们一直领先#xff01; 我们这个小车也是采用的是鸿蒙操作系统#xff0c;学习鸿蒙小车#xff0c;让你遥遥领先于你的同学。 文章目录 前言一、什么是任务#xff1f;为什么要有任务二、任务的状态三、任… 说到鸿蒙我们都会想到华为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.hosThreadId_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/镜像/总结
下一篇文章继续为大家介绍 鸿蒙小车的内核实验 ----- 软件定时器实验。