版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenHarmony物联网开发教程第4章内核开发实践教材章节定位与授课安排本章围绕“内核开发实践”展开,课堂重点是把教材步骤、接口表、接线图、代码实现和实验现象连成完整开发流程。模块课堂内容授课方式学习产出4.1任务管理讲解+演示能复述流程并定位关键文件/接口4.2软件定时器讲解+演示能复述流程并定位关键文件/接口4.3信号量讲解+演示能复述流程并定位关键文件/接口4.4事件讲解+演示能复述流程并定位关键文件/接口4.5互斥锁讲解+演示能复述流程并定位关键文件/接口4.6消息队列讲解+演示能复述流程并定位关键文件/接口OpenHarmony物联网开发教程|第4章内核开发实践学习目标与考核关注1理解任务、定时器、信号量、事件、互斥锁、消息队列的基本概念2能按总体设计完成内核实验流程3能阅读接口表并解释核心API调用4能通过串口和硬件现象验证实验结果本章重点教材中的截图、流程表、接线图、电路原理图和核心接口调用。考核关注能把操作步骤、硬件连接、代码位置和运行结果讲清楚,而不是只照着截图操作。OpenHarmony物联网开发教程|第4章内核开发实践本章知识地图4.1任务管理教材模块4.2软件定时器教材模块4.3信号量教材模块4.4事件教材模块4.5互斥锁教材模块4.6消息队列教材模块•建议按“目标-准备-设计-实现-验证-排错”的课堂线索串讲。•图片页均采用Word版教材内嵌原图,表格页根据Word原生表格重排。•实验章节要让学生明确:每一步操作对应哪个工程文件、接口或硬件现象。OpenHarmony物联网开发教程|第4章内核开发实践4.1任务管理按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.1任务管理实验主线本节学习线索14.1.1任务管理的基本概念24.1.2总体设计34.1.3实现软件代码44.1.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.1.1任务管理的基本概念•从系统角度看,任务是竞争系统资源的最小运行单元。•任务可以使用或等待CPU、使用内存空间等系统资源,各任务的运行相互独立。•OpenHarmony内核的任务模块可以给用户提供多个任务,实现任务间的切换,帮助用户管理业务程序流程。•任务模块具有如下特性:它支持多任务,其中每个任务代表一个线程。•采用抢占式调度机制,使得高优先级的任务能够打断低优先级的任务,而低优先级任务必须等到高优先级任务阻塞或结束后才能得到调度。OpenHarmony物联网开发教程|第4章内核开发实践4.1.1任务管理的基本概念图4.1任务状态机示意图操作要点•图4.1任务状态机示意图OpenHarmony物联网开发教程|第4章内核开发实践4.1.2总体设计•1.确定开发目标•创建两个不同优先级的任务,并在每个任务中编写打印信息,最后通过运行程序,观察任务的切换过程。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.1系统流程设计序号流程说明流程所使用接口1锁任务调度,防止高优先级任务调度LOS_TaskLock2创建任务LOS_TaskCreate3解锁任务,让任务按照优先级进行调度LOS_TaskUnlock4延时任务,任务延时等待LOS_TaskDelay5挂起指定的任务,任务挂起等待恢复操作LOS_TaskSuspendOpenHarmony物联网开发教程|第4章内核开发实践表4.1系统流程设计(续)序号流程说明流程所使用接口6恢复挂起的任务LOS_TaskResume•表格内容来自Word版教材原生表格,课堂中建议结合对应截图和代码逐项解释。OpenHarmony物联网开发教程|第4章内核开发实践4.1.2总体设计图4.2系统接线简图操作要点•图4.2系统接线简图OpenHarmony物联网开发教程|第4章内核开发实践4.1.3实现软件代码•将软件实现代码存放到如下路径:•//applications/sample/wifi-iot/app/01_kernel_experiment/01_Task_Manage•---------------------------------------------------------------------------------------------------------…•static_library("task_manage"){•sources=[OpenHarmony物联网开发教程|第4章内核开发实践4.1.3实现软件代码:代码讲解重点•先定位示例工程目录、源文件和BUILD.gn构建文件,再讲解核心接口调用。•按“初始化-配置-读写/控制-日志输出-异常处理”的顺序阅读代码。•强调接口返回值检查、延时/任务调度、资源释放和串口日志定位问题。•让学生把代码执行结果与接线图、电路原理图和编程流程表对应起来。OpenHarmony物联网开发教程|第4章内核开发实践4.1.4成果展示•将程序编译、烧录后,通过串口查看运行结果,终端打印如下信息。•---------------------------------------------------------------------------------------------------------…•LOS_TaskLock()Success!•High_Pri_Task()createSuccess!•Low_Pri_Task()createSuccess!OpenHarmony物联网开发教程|第4章内核开发实践4.2软件定时器按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.2软件定时器实验主线本节学习线索14.2.1软件定时器的基本概念24.2.2总体设计34.2.3实现软件代码44.2.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.2.1软件定时器的基本概念•软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。•软件定时器的定时精度与系统Tick时钟的周期有关。•硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,OpenHarmony内核提供软件定时器功能。•软件定时器扩展了定时器的数量,允许创建更多的定时业务。•软件定时器支持的功能如下。OpenHarmony物联网开发教程|第4章内核开发实践表4.2软件定时器模块常见接口说明接口功能接口描述创建定时器LOS_SwtmrCreate删除定时器LOS_SwtmrDelete启动定时器LOS_SwtmrStart停止定时器LOS_SwtmrStop获得软件定时器剩余Tick数LOS_SwtmrTimeGetOpenHarmony物联网开发教程|第4章内核开发实践4.2.2总体设计•1.确定开发目标•创建一个软件定时器,并实现超时打印信息函数,最后通过运行程序,观察软件定时器不同的运行模式。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.3系统流程序号流程说明流程所使用接口1配置软件定时器确认配置项LOSCFG_BASE_CORE_SWTMR和LOSCFG_BASE_IPC_QUEUE为1打开状态;配置LOSCFG_BASE…2创建定时器LOS_SwtmrCreate创建一个指定计时时长、指定超时处理函数、指定触发模式的软件定时器。3启动定时器LOS_SwtmrStart4获得软件定时器剩余Tick数LOS_SwtmrTimeGet5停止定时器LOS_SwtmrStopOpenHarmony物联网开发教程|第4章内核开发实践表4.3系统流程(续)序号流程说明流程所使用接口6删除定时器LOS_SwtmrDelete•表格内容来自Word版教材原生表格,课堂中建议结合对应截图和代码逐项解释。OpenHarmony物联网开发教程|第4章内核开发实践4.2.3实现软件代码•将软件实现代码存放到如下路径:•//applications/sample/wifi-iot/app/01_kernel_experiment/02_Software_Timer•---------------------------------------------------------------------------------------------------------…•static_library("software_timer"){•sources=[OpenHarmony物联网开发教程|第4章内核开发实践4.2.3实现软件代码:代码讲解重点•先定位示例工程目录、源文件和BUILD.gn构建文件,再讲解核心接口调用。•按“初始化-配置-读写/控制-日志输出-异常处理”的顺序阅读代码。•强调接口返回值检查、延时/任务调度、资源释放和串口日志定位问题。•让学生把代码执行结果与接线图、电路原理图和编程流程表对应起来。OpenHarmony物联网开发教程|第4章内核开发实践4.2.4成果展示•将程序编译、烧录后,通过串口查看运行结果,终端运行结果打印信息如下所示。•---------------------------------------------------------------------------------------------------------…•StartTimer1success.•StopTimer1success.•Timer_One_Callback()timer_one_counter=1.OpenHarmony物联网开发教程|第4章内核开发实践4.3信号量按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.3信号量实验主线本节学习线索14.3.1信号量的基本概念24.3.2总体设计34.3.3实现软件代码44.3.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.3.1信号量的基本概念•信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务间同步或共享资源的互斥访问。•一个信号量的数据结构中,通常有一个计数值,用于对有效资源数的计数,表示剩下的可被使用的共享资源数,其值的含义分两种情况:•(1)0,表示该信号量当前不可获取,可能存在正在等待该信号量的任务。•(2)正值,表示该信号量当前可被获取。•信号量可用于同步或者互斥。OpenHarmony物联网开发教程|第4章内核开发实践表4.4信号量模块常见接口说明接口功能接口描述创建信号量LOS_SemCreate:创建信号量,返回信号量ID。LOS_BinarySemCreate:创建二值信号量,其计数值最大为1。删除信号量LOS_SemDelete:删除指定的信号量。申请信号量LOS_SemPend:申请指定的信号量,并设置超时时间。释放信号量LOS_SemPost:释放指定的信号量。OpenHarmony物联网开发教程|第4章内核开发实践4.3.1信号量的基本概念图4.4信号量运作示意图操作要点•图4.4信号量运作示意图OpenHarmony物联网开发教程|第4章内核开发实践4.3.2总体设计•1.确定开发目标•创建一个信号量和两个任务,两个任务同时申请该信号量,最后通过运行程序,观察任务间同步或共享资源的互斥访问过程。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.5系统流程设计序号流程说明流程所使用接口1创建信号量LOS_SemCreate,若创建二值信号量则用LOS_BinarySemCreate2申请信号量LOS_SemPend3释放信号量LOS_SemPost4删除信号量LOS_SemDeleteOpenHarmony物联网开发教程|第4章内核开发实践4.3.3实现软件代码•将软件实现代码存放到如下路径:•//applications/sample/wifi-iot/app/01_kernel_experiment/03_Semaphore•---------------------------------------------------------------------------------------------------------…•static_library("semaphore"){•sources=[OpenHarmony物联网开发教程|第4章内核开发实践4.3.3实现软件代码:代码讲解重点•先定位示例工程目录、源文件和BUILD.gn构建文件,再讲解核心接口调用。•按“初始化-配置-读写/控制-日志输出-异常处理”的顺序阅读代码。•强调接口返回值检查、延时/任务调度、资源释放和串口日志定位问题。•让学生把代码执行结果与接线图、电路原理图和编程流程表对应起来。OpenHarmony物联网开发教程|第4章内核开发实践4.3.4成果展示•将程序编译、烧录后,通过串口查看运行结果,终端运行结果打印如下信息。•---------------------------------------------------------------------------------------------------------…•Semaphore_Task_Two()trygetsemaphore_handlerwaitforever.•Semaphore_Task_Two()getsemaphore_handlerandthendelay20ticks.•Semaphore_Task_One()trygetsemaphore_handler,timeout10ticks.OpenHarmony物联网开发教程|第4章内核开发实践4.4事件按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.4事件实验主线本节学习线索14.4.1事件的基本概念24.4.2总体设计34.4.3实现软件代码44.4.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.4.1事件的基本概念•事件(Event)是一种任务间的通信机制,可用于任务间的同步操作。•其特点是支持任务间的事件同步,既可以一对多,即一个任务可以等待多个事件,也可以多对多,即多个任务可以等待多个事件,但一次写事件最多只能触发一个任务从阻塞状态中醒来;•同时,事件具有读超时机制;•并且它仅用于任务间的同步,不传输具体数据。•鸿蒙系统的事件机制包括事件控制块、写事件、读事件、事件清零和事件销毁,对其分别介绍如下。OpenHarmony物联网开发教程|第4章内核开发实践表4.6事件模块常见接口说明接口功能接口描述事件检测LOS_EventPoll:根据eventID,eventMask(事件掩码),mode(事件读取模式),检查用户期待的事件是否发生。注意:当mode含LOS_WAITMODE_CLR,且用户期待的事件发生时…初始化LOS_EventInit:事件控制块初始化。事件读LOS_EventRead:读事件(等待事件),任务会根据timeOut(单位:tick)进行阻塞等待;未读取到事件时,返回值为0;正常读取到事件时,返回正值(事件发生的集合);其他情况返回特定错误码。事件写LOS_EventWrite:写一个特定的事件到事件控制块。事件清除LOS_EventClear:根据events掩码,清除事件控制块中的事件。OpenHarmony物联网开发教程|第4章内核开发实践表4.6事件模块常见接口说明(续)接口功能接口描述事件销毁LOS_EventDestroy:事件控制块销毁。•表格内容来自Word版教材原生表格,课堂中建议结合对应截图和代码逐项解释。OpenHarmony物联网开发教程|第4章内核开发实践4.4.1事件的基本概念图4.6事件运作原理图操作要点•图4.6事件运作原理图OpenHarmony物联网开发教程|第4章内核开发实践4.4.2总体设计•1.确定开发目标•初始化事件与创建读事件任务完成后,写入相关事件,然后清除并销毁事件,最后通过运行程序,观察事件的读写过程。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.7系统流程设计说明序号流程说明1初始化事件控制块2阻塞读事件控制块3写入相关事件4阻塞任务被唤醒,读取事件并检查是否满足要求5处理事件控制块OpenHarmony物联网开发教程|第4章内核开发实践表4.7系统流程设计说明(续)序号流程说明6事件控制块销毁•表格内容来自Word版教材原生表格,课堂中建议结合对应截图和代码逐项解释。OpenHarmony物联网开发教程|第4章内核开发实践4.4.3实现软件代码•将软件实现代码存放到如下路径:•//applications/sample/wifi-iot/app/01_kernel_experiment/04_Event_Manage•---------------------------------------------------------------------------------------------------------…•static_library("event_manage"){•sources=[OpenHarmony物联网开发教程|第4章内核开发实践4.4.3实现软件代码:代码讲解重点•先定位示例工程目录、源文件和BUILD.gn构建文件,再讲解核心接口调用。•按“初始化-配置-读写/控制-日志输出-异常处理”的顺序阅读代码。•强调接口返回值检查、延时/任务调度、资源释放和串口日志定位问题。•让学生把代码执行结果与接线图、电路原理图和编程流程表对应起来。OpenHarmony物联网开发教程|第4章内核开发实践4.4.4成果展示•将程序编译、烧录后,通过串口查看运行结果,终端运行结果打印如下信息。•---------------------------------------------------------------------------------------------------------…•Example_Event:waitevent0x1.•Example_Eventwriteevent.•Example_Event:readevent->0x1.OpenHarmony物联网开发教程|第4章内核开发实践4.5互斥锁按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.5互斥锁实验主线本节学习线索14.5.1互斥锁的基本概念24.5.2总体设计34.5.3实现软件代码44.5.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.5.1互斥锁的基本概念•互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。•任意时刻互斥锁的状态只有两种,开锁或闭锁。•当任务持有互斥锁时,该互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。•当该任务释放互斥锁时,该互斥锁被开锁,任务失去该互斥锁的所有权。•当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。OpenHarmony物联网开发教程|第4章内核开发实践表4.8互斥锁模块常见接口说明接口功能接口描述互斥锁的创建和删除LOS_MuxCreate:创建互斥锁。LOS_MuxDelete:删除指定的互斥锁。互斥锁的申请和释放LOS_MuxPend:申请指定的互斥锁。LOS_MuxPost:释放指定的互斥锁。•表格内容来自Word版教材原生表格,课堂中建议结合对应截图和代码逐项解释。OpenHarmony物联网开发教程|第4章内核开发实践4.5.1互斥锁的基本概念图4.8互斥锁运作示意图操作要点•图4.8互斥锁运作示意图OpenHarmony物联网开发教程|第4章内核开发实践4.5.2总体设计•1.确定开发目标•创建一个互斥锁和两个任务,两个任务同时申请该互斥锁,最后通过运行程序,观察各任务对互斥锁的申请与释放过程。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.9系统流程设计说明序号流程说明流程所使用接口1创建互斥锁LOS_MuxCreate2申请互斥锁LOS_MuxPend3释放互斥锁LOS_MuxPost如果有任务阻塞于指定互斥锁,则唤醒被阻塞任务中优先级高的,该任务进入就绪态,并进行任务调度;如果没有任务阻塞于指定互…4删除互斥锁LOS_MuxDeleteOpenHarmony物联网开发教程|第4章内核开发实践4.5.3实现软件代码•将软件实现代码存放到如下路径:•//applications/sample/wifi-iot/app/01_kernel_experiment/05_Mutex_Lock•---------------------------------------------------------------------------------------------------------…•static_library("mutex_lock"){•sources=[OpenHarmony物联网开发教程|第4章内核开发实践4.5.3实现软件代码:代码讲解重点•先定位示例工程目录、源文件和BUILD.gn构建文件,再讲解核心接口调用。•按“初始化-配置-读写/控制-日志输出-异常处理”的顺序阅读代码。•强调接口返回值检查、延时/任务调度、资源释放和串口日志定位问题。•让学生把代码执行结果与接线图、电路原理图和编程流程表对应起来。OpenHarmony物联网开发教程|第4章内核开发实践4.5.4成果展示•将程序编译、烧录后,通过串口查看运行结果,终端运行结果打印如下信息。•---------------------------------------------------------------------------------------------------------…•Mutex_Two_Task()trytogetmutex,waitforever.•Mutex_Two_Task()getmutex_handlerandsuspend100ticks.•Mutex_One_Task()trytogetmutex,wait10ticks.OpenHarmony物联网开发教程|第4章内核开发实践4.6消息队列按“基本概念/应用场景-总体设计-代码实现-成果展示”组织授课4.6消息队列实验主线本节学习线索14.6.1消息队列的基本概念24.6.2总体设计34.6.3实现软件代码44.6.4成果展示OpenHarmony物联网开发教程|第4章内核开发实践4.6.1消息队列的基本概念•消息队列又称队列,是一种任务间通信的机制。•消息队列接收来自任务或中断的不固定长度的消息,并根据不同的接口确定传递的消息是否存放在队列空间中。•任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务;•当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。•任务也能够往队列里写入消息,当队列已经写满消息时,挂起写入任务;OpenHarmony物联网开发教程|第4章内核开发实践表4.10消息队列模块的常见接口说明接口功能接口描述创建/删除消息队列LOS_QueueCreate:创建一个消息队列,由系统动态申请队列空间。LOS_QueueDelete:根据队列ID删除一个指定队列,静态消息队列删除后,队列空间需要用例自行处理。读/写队列(不带拷贝)LOS_QueueRead:读取指定队列头节点中的数据(队列节点中的数据实际上是一个地址)。LOS_QueueWrite:向指定队列尾节点中写入入参bufferAddr的值(即buffer的地址)。LOS_Q…读/写队列(带拷贝)LOS_QueueReadCopy:读取指定队列头节点中的数据。LOS_QueueWriteCopy:向指定队列尾节点中写入入参bufferAddr中保存的数据。LOS_QueueWriteHeadCopy:…获取队列信息LOS_QueueInfoGet:获取指定队列的信息,包括队列ID、队列长度、消息节点大小、头节点、尾节点、可读节点数量、可写节点数量、等待读操作的任务、等待写操作的任务。OpenHarmony物联网开发教程|第4章内核开发实践4.6.1消息队列的基本概念图4.10队列读写数据操作示意图操作要点•图4.10队列读写数据操作示意图OpenHarmony物联网开发教程|第4章内核开发实践4.6.2总体设计•1.确定开发目标•创建一个消息队列和两个任务,两个任务分别对消息队列进行读写,最后通过运行程序,观察消息队列的读写过程。•2.准备开发工具•(1)硬件准备:Windows系统主机1台、OpenHarmony鸿蒙开发主板1块、USB-TypeC线1根。•(2)开发实践前提:OpenHarmony物联网开发教程|第4章内核开发实践表4.11系统流程设计说明序号流程说明流程所使用接口1创建队列。创建成功后,可以得到队列ID。LOS_QueueCreate2写队列LOS_QueueWrite或者LOS_QueueWriteCopy3读队列LOS_QueueRead或者LOS_Queue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业人力资源管理流程与制度手册
- 通讯设备技术研发部成员绩效考评表
- 小型企业备份电子数据丢失恢复计划
- 交通运输设备制造业智能化船舶与港口设备方案
- 运动小小赛:健康与成长小学主题班会课件
- 品书香扬美德-小学主题班会课件
- 数字化供应链风险防控全流程管理手册
- 明史故事:倾听历史的声音小学主题班会课件
- 年度销售总结及新计划沟通函(4篇)
- 传承中华美德弘扬家国情怀小学主题班会课件
- TCIDADS00013-2023物联网云组态应用界面设计指南
- 2026年安全生产月培训
- 雨课堂学堂在线学堂云《海军常见病的人体结构基础与防治(中国人民解放军海军军医)》单元测试考核答案
- 设计院内部管理规章制度
- 施工现场危险化学品管理方案
- 三管三必须课件
- 研发工程师年终总结及研发计划
- 人教版小学五年级数学下册期末学业水平试卷含答案
- 干细胞向血管内皮细胞分化的诱导策略
- 机场贵宾休息室租赁协议
- 民营医疗机构员工劳动合同范本
评论
0/150
提交评论