自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(222)
  • 收藏
  • 关注

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-service实现分析(2)

本文接续上文继续对service.c中相关函数的实现进行分析。获取feature的身份标识。获取feature实例对象。删除服务中指定的子功能。

2025-05-13 18:12:01 43

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-service实现分析(1)

本文主要针对service部分进行分析,这部分代码的分析囊括了interfaces\kits\samgr\service.h、samgr\source\service_impl.h和samgr\source\service.c。service.h的代码在service赏析一篇中已经进行过分析。

2025-05-13 17:14:10 103

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-feature赏析及实现

本文分析了feature部分的代码,主要涉及feature.h、feature_impl.h和feature.c三个文件。在feature.h中,定义了Feature基类,包含获取名称、初始化、停止和处理消息等函数。feature_impl.h中声明了FeatureImpl结构体及相关方法,如判断Feature和IUnknown是否有效、添加/删除/获取接口等。feature.c中实现了这些方法,包括添加、删除、获取接口以及创建FeatureImpl实例等操作。通过这些代码,实现了对Feature的管理和接

2025-05-13 15:18:06 121

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-samgr_lite赏析

在samgr_lite.h文件中,定义了用于向Samgr注册服务、特性和功能的宏和结构体。宏定义包括BOOTSTRAP_SERVICE用于启动引导服务,MAX_SYSCAP_NUM定义功能最大数目,MAX_SYSCAP_NAME_LEN定义功能名的最大长度。结构体SamgrLite提供了注册和注销服务、特性、API的方法,以及添加、检查和获取系统功能的方法。这些功能对于系统服务开发人员实现和管理系统能力至关重要。此外,文中还提供了鸿蒙开发学习资源的链接,帮助开发者深入掌握鸿蒙开发技术。

2025-05-13 14:18:42 187

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-service赏析

在service中提供了服务的基本类型和常量。头文件位于distributedschedule_samgr_lite\interfaces\kits\samgr\service.h。该文件主要用于服务开发,提供基本功能,如服务的生命周期功能、继承宏、任务配置等。📑往期推文全新看点(附带最新·鸿蒙全栈学习笔记)【鸿蒙全栈开发学习指南】

2025-05-12 21:50:23 97

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-message实现分析(2)

本文详细分析了消息处理系统中的几个关键函数实现。SAMGR_FreeMsg函数用于释放Exchange对象的内存,首先检查引用数,若引用数不大于0,则释放request.data和response.data指向的内存。SAMGR_SendSharedRequest函数用于向多个服务或特性发送请求,初始化Exchange对象并将其发送到指定队列中,返回引用计数。SAMGR_SendSharedDirectRequest函数直接调用处理程序处理请求和响应,而不使用消息处理函数。SAMGR_SendRespons

2025-05-12 20:51:33 139

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-message实现分析(1)

本文分析了基于消息队列的消息通信实现,主要涉及message.c文件中的相关函数。消息传递通过Exchange结构体进行,该结构体包含请求、响应、消息类型等信息。文章详细介绍了三个核心函数:SAMGR_SendRequest用于发送请求消息,根据是否有回调函数决定是否发送响应;SAMGR_SendResponse用于发送响应消息,处理消息的确认与共享;SAMGR_MsgRecv用于从消息队列中接收消息,采用阻塞式操作。通过这些函数,实现了消息的发送、接收与响应处理,确保消息在服务或特性间的有效传递。

2025-05-12 19:50:42 175

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-message赏析

内存对齐有什么作用?这里涉及到内存边界问题,它们的地址分别是可被2/4/8整除的。当CPU读取这个数据时,第一次获取了前半段,发现数据不完整,会再发起一次操作,读取下半段。而内存对齐的好处就在于数据可以被一次操作读取完成就不会发生第二次读取操作,这样就减少了CPU的工作,提高效率。编译器在默认情况下会对结构体进行内存对齐,内存对齐的规则一般如下: 1.结构体的第一个成员放在偏移量为0的地址处。2.结构体的其他成员要在对齐数的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小中的较小值。

2025-05-12 17:51:15 301

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理-samgr:iunknown实现分析

承接上一篇iunknown.h的赏析,本文接着对iunknown.c中的实现进行分析。在分析iunknown的实现之前,先介绍一下关于iunknown的相关背景,便于读者对后续代码的理解。

2025-05-12 15:58:19 661

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理-samgr:iunknown赏析

在上一篇中,针对common的头文件以及实现进行了分析,本文先对上一篇的内容进行补充。再对新的iunknown部分进行分析。本篇文章首先对common剩余部分的内容进行了分析,然后对iunknown头文件中的一些内容进行介绍。要想深入的理解iunknown是什么以及有什么作用,可以继续阅读下一篇文章,关于iunknown的实现分析。

2025-05-12 14:57:49 368

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理-samgr:common赏析及实现

本文分析了distributedschedule_samgr_lite模块中common.h文件提供的简化vector容器及其相关操作函数。vector结构体包含最大容量、当前数据量、已释放数据量、数据指针及键值转换和比较函数指针。通过宏定义GET_OFFSIZE和GET_OBJECT,实现了结构体成员偏移量的计算和结构体首地址的获取。函数实现部分包括vector的创建、清空、添加元素、获取元素及元素交换等操作。VECTOR_Make用于初始化vector对象,VECTOR_Clear释放内存并重置vect

2025-05-12 13:49:47 546

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理-samgr主要接口思维导图(1)

模块提供了面向服务体系结构(SOA)的开发框架基础。可以基于。

2025-05-11 21:48:38 327

原创 鸿蒙openharmony南向开发 POSIX和CMSIS接口适配层解读adapter(2):thread/memory/time

本文详细解读了OpenHarmony中samgr/adapter下的thread_adapter、memory_adapter和time_adapter模块,这些模块为POSIX和CMSIS提供了统一的接口声明和具体实现,确保了系统的可移植性。thread_adapter模块负责线程的创建、锁操作和线程本地存储管理;memory_adapter模块处理内存的分配与释放;time_adapter模块则涉及时间的获取。文章还对比了POSIX和CMSIS在实现上的差异,特别是在时间获取方面的不同处理方式。通过这些

2025-05-11 20:45:32 706

原创 鸿蒙OpenHarmony南向开发 POSIX和CMSIS接口适配层解读(1):queue_adapter

本文主要介绍了POSIX和CMSIS接口适配层在队列操作中的应用,重点分析了queue_adapter部分的实现。文章首先对头文件中的队列操作进行了声明,包括创建、入队、出队和销毁队列等函数。接着,详细解读了CMSIS和POSIX两种接口下队列操作的函数实现,包括队列的创建、入队、出队和销毁等操作。在CMSIS接口中,使用了osMessageQueueNew、osMessageQueuePut、osMessageQueueGet和osMessageQueueDelete等函数来实现队列操作。而在POSIX接

2025-05-11 19:38:17 350

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|消息广播功能实例操作详解

本文详细分析了广播功能的实现代码,主要涉及数据结构、宏定义及函数实现。广播功能通过Consumer、Provider、Subscriber等结构体管理消息的接收、发布和订阅。核心函数包括BCE_CreateInstance(创建广播实例)、AddTopic(添加主题)、Subscribe(订阅主题)、ModifyConsumer(修改消费者)、Unsubscribe(取消订阅)、Publish(发布消息)等。代码通过链表管理主题与消费者的关系,确保消息的发布与订阅高效进行。此外,ImmediatelyPub

2025-05-09 21:24:16 284

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|消息广播服务及其子功能详解

本文详细介绍了广播服务的实现,主要涉及broadcast_service.c和pub_sub_feature.c两个文件中的数据结构与函数。BroadcastService结构体用于管理广播服务,包含初始化、消息处理等功能。PubSubFeature结构体则用于管理广播子功能,包含消费者、主题及其关系的管理。文章详细解析了广播服务的注册、初始化、消息处理等函数,以及广播子功能的初始化、消息处理、关系获取等操作。通过这些数据结构与函数,广播服务能够有效地管理消息的发布与订阅,确保消息的传递与处理。

2025-05-09 18:54:22 254

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|系统服务管理之系统功能管理器详解

本文概述了分布式调度框架中的轻量级服务管理代码,特别是Samgr部分。Samgr代码分为基础代码和核心代码,基础代码提供鸿蒙业务模型的基本函数操作,而核心代码负责系统功能管理器的初始化。Samgr_lite机制分析部分详细介绍了Samgr在服务和功能的维护、注册和发现中的核心作用,以及服务从创建到启动的全过程,包括服务的本地注册、任务池的绑定、服务的初始化和远程注册。文章还提到了进程间通信的概念,并总结了Samgr_lite的运行机制和服务的注册及初始化启动过程。

2025-05-09 17:53:33 959

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|系统服务管理之基础框架及功能详解

本文深入探讨了鸿蒙操作系统在分布式任务调度中的系统服务管理,特别是底层内存管理、队列操作、线程管理、时间操作、令牌桶操作、vector操作和系统功能存储结构。文章详细介绍了鸿蒙系统如何通过统一的内存管理、线程管理和队列管理等技术,屏蔽不同硬件架构和资源的差异,实现一套系统能力适配多种终端设备。此外,文章还分析了鸿蒙系统在消息处理流控机制、数据存储容器设计以及进程间通信存储结构等方面的创新和优势。通过这些基础操作,鸿蒙系统能够有效地支持上层服务和功能间的交互,实现复杂的逻辑操作,并确保上层代码与底层平台的解耦

2025-05-09 15:18:06 601

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|系统服务间调用之对外接口详解

本文概述了鸿蒙系统中IUnknown接口的设计与实现。IUnknown作为服务或功能间交互的核心接口,包含QueryInterface、AddRef和Release三个基本函数,用于接口查询和引用计数管理。开发者可以通过继承IUnknown基类,定义自定义接口并扩展业务功能。文章详细介绍了接口的定义、初始化、注册和使用流程,展示了如何通过宏定义和结构体实现类似C++的继承机制。此外,还探讨了同进程和跨进程交互的接口设计差异。通过统一的接口对象,鸿蒙系统实现了服务间的高效交互,同时保持了代码的封装性和可维护性

2025-05-09 13:58:53 925

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|同进程及跨进程间通信的数据结构及过程详解

上一篇介绍了鸿蒙业务模型中的三大概念以及简单的注册过程,相信读者已经对鸿蒙的业务逻辑有了一定的了解。简单的来说,就是将多个子功能注册到服务中,再把服务注册到全局系统功能管理器(Samgr)中。这样,一个服务包含零个或多个功能,而功能又绑定了对外接口,然后我们可以向暴露的接口发送消息,等服务执行特定的处理后再将响应消息发送回来。这是最简单最直观的一次交互过程,但是要完成这样的交互,鸿蒙的底层还需要做许多基础工作,比如服务的初始化、功能的初始化、消息传输对象的构建等等。

2025-05-08 21:34:37 662

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|鸿蒙业务模型重要性

在针对鸿蒙模块二的源代码分析中,发现它业务逻辑的实现围绕着三大概念展开,分别是服务(Service)、功能(Feature)和功能接口API(Iunknown所以理解并掌握这三个概念对于我们深入学习鸿蒙底层代码的业务逻辑有极大的帮助。下面我将结合前期分析鸿蒙代码的经验,通过图文并茂的方式为读者讲解它们的基类和实例对象以及相应的作用。

2025-05-08 20:07:54 728

原创 鸿蒙Openharmony南向开发 平台驱动指南【I3C】

I3C可连接单个或多个I3C、I2C从器件,它主要用于:与传感器通信,如陀螺仪、气压计或支持I3C协议的图像传感器等;通过软件或硬件协议转换,与其他接口(如 UART 串口等)的设备进行通信。

2025-05-08 17:21:16 724

原创 鸿蒙OpenHarmony 南向开发 平台驱动指南【I2C】

I2C(Inter Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。由于其硬件连接简单、成本低廉,因此被广泛应用于各种短距离通信的场景。I2C通常用于与各类支持I2C协议的传感器、执行器或输入输出设备进行通信。

2025-05-08 16:06:27 739

原创 鸿蒙OpenHarmony 南向开发 平台驱动指南【HDMI】

HDMI(High Definition Multimedia Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频Source到TV、显示器等Sink设备的传输。HDMI以主从方式工作,通常有一个Source端和一个Sink端。HDMI接口定义了完成HDMI传输的通用方法集合,包括:HDMI控制器管理:打开或关闭HDMI控制器HDMI启动/停止传输:启动或停止HDMI传输HDMI控制器设置:设置音频、视频及HDR属性,设置色彩深度、声音图像消隐等。

2025-05-08 14:42:30 959

原创 鸿蒙OpenHarmony南向开发 平台驱动指南【GPIO】

GPIO(General-purpose input/output)即通用型输入输出。通常,GPIO控制器通过分组的方式管理所有GPIO管脚,每组GPIO有一个或多个寄存器与之关联,通过读写寄存器完成对GPIO管脚的操作。GPIO接口定义了操作GPIO管脚的标准方法集合,包括:设置、获取管脚方向:方向可以是输入或者输出(暂不支持高阻态)。读、写管脚电平值:电平值可以是低电平或高电平。设置、取消管脚中断服务函数:设置一个管脚的中断响应函数,以及中断触发方式。取消一个管脚的中断服务函数。

2025-05-07 21:48:01 880

原创 鸿蒙OH南向开发 平台驱动指南【DAC】

DAC(Digital to Analog Converter)是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备,主要用于:作为过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自动控制。在利用反馈技术的模数转换器设计中,作为重要的功能模块呈现。DAC接口定义了完成DAC传输的通用方法集合,包括:DAC设备管理:打开或关闭DAC设备。DAC设置目标值:设置DAC设备需要将数字信号转成模拟信号的目标值。

2025-05-07 18:49:44 950

原创 鸿蒙OpenHarmony 平台驱动指南【 ADC】

ADC(Analog to Digital Converter),即模拟-数字转换器,可将模拟信号转换成对应的数字信号,便于存储与计算等操作。图 1ADC物理连线示意图ADC接口定义了完成AD转换的通用方法集合,包括:ADC设备管理:打开或关闭ADC设备。ADC读取转换结果:读取AD转换结果。ADC设备通常用于将模拟电压或电流转换为数字量,例如与NTC电阻搭配进行温度测量,或者将其他模拟传感器的输出量转换为数字量的场景。

2025-05-07 16:57:53 1008

原创 鸿蒙南向开发 平台驱动开发【Watchdog】

看门狗(Watchdog),又称看门狗计时器(Watchdog timer),是一种硬件计时设备。一般有一个输入、一个输出,输入叫做喂狗,输出连接到系统的复位端。当系统主程序发生错误导致未及时清除看门狗计时器的计时值时,看门狗计时器就会对系统发出复位信号,使系统从悬停状态恢复到正常运作状态。对于无法直接观测到的软件异常,我们可以使用看门狗进行自动检测,并在异常产生时及时重置。当驱动开发者需要将Watchdog设备适配到OpenHarmony时,需要进行Watchdog驱动适配。

2025-05-07 15:34:48 789

原创 鸿蒙OpenHarmony 平台驱动开发【UART】

UART指异步收发传输器(Universal Asynchronous Receiver/Transmitter),是通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输。TX:发送数据端,和对端的RX相连。RX:接收数据端,和对端的TX相连。RTS:发送请求信号,用于指示本设备是否准备好,可接受数据,和对端CTS相连。CTS:允许发送信号,用于判断是否可以向对端发送数据,和对端RTS相连。图 12线UART设备连接示意图图 24线UART设备连接示意图。

2025-05-07 14:33:01 1004

原创 鸿蒙南向开发 平台驱动开发【SPI】

SPI即串行外设接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线。SPI是由Motorola公司开发,用于在主设备和从设备之间进行通信。SPI通常用于与闪存、实时时钟、传感器以及模数/数模转换器等支持SPI协议的设备进行通信。当驱动开发者需要将SPI设备适配到OpenHarmony时,需要进行SPI驱动适配,下文将介绍如何进行SPI驱动适配。

2025-05-06 20:07:51 705

原创 鸿蒙南向开发 平台驱动开发【SDIO】

SDIO(Secure Digital Input and Output)由SD卡发展而来,与SD卡统称为MMC(MultiMediaCard),二者使用相同的通信协议。SDIO接口兼容以前的SD卡,并且可以连接支持SDIO接口的其他设备。SDIO的应用比较广泛,目前,有许多手机都支持SDIO功能,并且很多SDIO外设也被开发出来,使得手机外接外设更加容易。常见的SDIO外设有WLAN、GPS、CAMERA、蓝牙等。

2025-05-06 18:16:09 731

原创 鸿蒙OpenHarmony 平台驱动开发【RTC】

RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。RTC主要用于提供实时时间和定时报警功能。当驱动开发者需要将RTC设备适配到OpenHarmony时,需要进行RTC驱动适配,下文将介绍如何进行RTC驱动适配。

2025-05-06 16:53:11 787

原创 鸿蒙OpenHarmony 平台驱动开发【Regulator】

Regulator模块用于控制系统中各类设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过Regulator关闭其电源供应;或者降低提供给该模块的电压、电流大小。Regulator模块用于控制系统中某些设备的电压/电流供应。当驱动开发者需要将Regulator设备适配到OpenHarmony时,需要进行Regulator驱动适配,下文将介绍如何进行Regulator驱动适配。

2025-05-06 15:26:35 743

原创 鸿蒙OpenHarmony 平台驱动开发【PWM】

PWM(Pulse Width Modulation)即脉冲宽度调制,是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。通常情况下,在使用马达控制、背光亮度调节时会用到PWM模块。PWM用于脉冲宽度调制,当驱动开发者需要将PWM设备适配到OpenHarmony时,需要进行PWM驱动适配。下文将介绍如何进行PWM驱动适配。

2025-05-06 14:17:25 1009

原创 鸿蒙OpenHarmony 平台驱动开发【PIN】

PIN即管脚控制器,用于统一管理各SoC的管脚资源,对外提供管脚复用功能。PIN模块主要用于管脚资源管理。在各SoC对接HDF框架时,需要来适配PIN驱动。下文将介绍如何进行PIN驱动适配。

2025-04-30 21:52:08 532

原创 蒙鸿OpenHarmony 平台驱动开发【MMC】

MMC(MultiMedia Card)即多媒体卡,是一种用于固态非易失性存储的小体积大容量的快闪存储卡。MMC后续泛指一个接口协定(一种卡式),能符合这种接口的内存器都可称作MMC储存体。主要包括几个部分:MMC控制器、MMC总线、存储卡(包括MMC卡、SD卡、SDIO卡、TF卡)。MMC、SD、SDIO总线,其总线规范类似,都是从MMC总线规范演化而来的。MMC强调的是多媒体存储;SD强调的是安全和数据保护;

2025-04-30 19:47:33 885

原创 鸿蒙OpenHarmony 平台驱动开发【MIPI DSI】

DSI(Display Serial Interface)是由移动行业处理器接口联盟(Mobile Industry Processor Interface (MIPI) Alliance)制定的规范,旨在降低移动设备中显示控制器的成本。它以串行的方式发送像素数据或指令给外设(通常是LCD或者类似的显示设备),或从外设中读取状态信息或像素信息;它定义了主机、图像数据源和目标设备之间的串行总线和通信协议。

2025-04-30 16:43:29 958

原创 鸿蒙Openharmony 平台驱动开发【MIPI CSI】

CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,主要由应用层、协议层、物理层组成,最大支持4通道数据传输、单线传输速度高达1Gb/s。物理层支持HS(High Speed)和LP(Low Speed)两种工作模式。HS模式下采用低压差分信号,功耗较大,但数据传输速率可以很高(数据速率为80M~1Gbps);LP模式下采用单端信号,数据速率很低(<10Mbps),但是相应的功耗也很低。

2025-04-30 15:27:20 878

原创 鸿蒙OpenHarmony 平台驱动开发【I3C】

I3C(Improved Inter Integrated Circuit)总线是由MIPI Alliance开发的一种简单、低成本的双向二线制同步串行总线。I3C是两线双向串行总线,针对多个传感器从设备进行了优化,并且一次只能由一个I3C主设备控制。相比于I2C,I3C总线拥有更高的速度、更低的功耗,支持带内中断、从设备热接入以及切换当前主设备,同时向后兼容I2C从设备。

2025-04-30 13:53:47 655

原创 鸿蒙OpenHarmony 平台驱动开发【I2C】

I2C(Inter Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。由于其硬件连接简单、成本低廉,因此被广泛应用于各种短距离通信的场景。I2C通常用于与各类支持I2C协议的传感器、执行器或输入输出设备进行通信。当驱动开发者需要将I2C设备适配到OpenHarmony时,需要进行I2C驱动适配,下文将介绍如何进行I2C驱动适配。

2025-04-26 21:40:59 601

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除