梅科尔工作室OpenHarmony设备开发培训笔记-第3章学习笔记 原创
华为设备开发第三章笔记
第三章:内核开发
3.1任务管理

任务管理简介: 
任务状态相关的概念

任务状态迁移(必须去了解)

任务接口简介

创建任务接口详情
Func:任务函数,argument:作为启动参数传递给任务函数的指针,attr:任务入口函数的参数列表,返回值:任务id。
3.2软件定时器

软件定时器,是基于系统Tick时钟中断且有软件来模拟的定时器,当经过设定的Tick时钟计数值后,会触发用户的回调函数。定时精度与系统Tick的时钟有关。
软件定时器为了解决硬件定时器的受限制问题而开发的。LiteOS提供软件定时器。
以下是软件定时器的运作机制

下一步通过操作来实现软件计时器
首先修改一下build.gn进行如下修改

其次在此文件中 
取消一个注释如下 ,之后在mobaXterm中输入hpm dist进行编译,再用hiburn进行烧录,操作与之前的一样。
之后会对定时器相关的函数进行修改以达到其他的功能,
在Time_example中将原有的代码进行修改,如下
,

之后进行编译在进行烧录,之后如果出问题的话,将延时代码osdelay时间改变位50,在进行编一个烧录即可成功
总结:单次定时器想停止定时器需要在定时器运行期间,删除定时器是可以在任意时间。
3.3信号量

信号量基本概念: 
运作原理: 
(6)信号量允许多个任务在同一时刻访问同一资源
之后进行实际操作
在vscode中打开
下图红色的文件。
之后对此文件的代码进行编译和烧录,
之后会注释一部分来进行代码的改变和现象的改变

之后重复上面的编译和烧录操作
3.4事件管理

事件基本概念: 
任务的与和或是一个重要的机制,通常来说,一个事件对应多个任务的话,先让或的先来,而与的是一种两个或者多个事件显现的时候才会触发。
实际操作:
在build.gn中将一些取消注释另一个进行注释 
之后进行常规的编译和烧录,观察程序是否正常运行
,正常之后对代码进行修改


之后在进行常规的代码的编译和烧录
发现事件有阻塞,在对代码进行如下修改 
再进行烧录和编译不过和上述的不太一样需要在vscode中编译,如果把all改成any一个事件也可以调度任务。
3.5互斥锁
,下面是互斥锁的基本概念

互斥锁的运作原理

仍然打开此文件夹 
之后对这里面的代码编译和烧录,之后可以进行一些相关的修改来删除此互斥锁,相关操作如下


修改好后进行编译和烧录,重复之前的操作。
3.6消息队列

消息队列基本概念

消息队列运作原理

编译前需要先修改一下代码 
之后进行相关的烧录,观察现象。
在修改一下相关的代码,如下 
,之后在进行编译和烧录检验修改的操作是否成功




















