- 博客(412)
- 收藏
- 关注
原创 鸿蒙开发之USB驱动开发全解析:Host与Device双视角
本文详细介绍了华为鸿蒙系统USB驱动开发框架,包含Host和Device双端DDK接口设计。Host侧提供设备管理、数据传输等核心功能,支持同步/异步通信;Device侧可实现各类USB外设开发。文章展示了系统架构图、接口说明表及目录结构,涵盖驱动开发、测试用例和应用示例,为开发者提供鸿蒙生态下的USB全栈开发指南。
2025-07-13 20:32:23
726
原创 鸿蒙开发之跨系统Light驱动:一次开发多端部署
本文介绍了鸿蒙系统中的Light驱动模型,该模型为上层硬件服务提供灯控能力接口,包括获取灯类型、配置闪烁效果等功能。文章详细说明了Light驱动的目录结构、核心接口(GetLightInfo/TurnOnLight/TurnOffLight)及使用示例,展示了如何获取设备灯列表、设置常亮/闪烁模式等操作。该驱动基于HDF框架开发,实现"一次开发,多系统部署"的目标,支持跨系统迁移和设备差异配置。
2025-07-13 19:14:23
530
原创 揭秘OpenHarmony相机驱动架构
OpenHarmony相机驱动框架概述 OpenHarmony相机驱动框架采用分层架构设计,包含HDI实现层、框架层和设备适配层。该框架实现了相机标准接口,管理设备数据流,并支持多平台适配。主要功能包括:设备管理、流控制、元数据处理、闪光灯控制等。框架提供了丰富的HDI接口,如获取流控制器、更新设备参数、设置回调模式等,为上层应用提供完整的相机功能支持。目录结构清晰划分了HAL层、适配层和接口层,便于开发者进行功能扩展和平台适配。 (字数:150)
2025-07-12 21:23:08
447
原创 鸿蒙GPIO中断实战:按键控制LED
本文介绍了鸿蒙开发中GPIO中断接口的使用案例,通过按键控制LED灯的开关效果。案例详细解析了GPIO中断函数IoTGpioRegisterIsrFunc的使用方法,并提供了包含软件防抖机制的中断回调函数实现代码。文章还指导了如何修改BUILD.gn文件进行编译调试,以及运行结果的预期效果。特别提示了开发板使用前需要短接核心板引脚的操作注意事项。该案例是鸿蒙设备开发中GPIO中断应用的典型示例,具有实用参考价值。
2025-07-12 20:23:14
551
原创 鸿蒙GPIO接口全解析,硬件开发必看
这篇文章介绍了鸿蒙全栈开发中的GPIO接口使用指南。主要内容包括: GPIO接口概述:定义了操作GPIO管脚的标准方法集合,如设置方向、读写电平、中断配置等。 接口分类说明:详细列出了初始化、方向配置、读写操作、中断配置等各类接口的功能描述。 使用指导: 提供了GPIO使用流程图 强调需要结合开发板电路图确定GPIO管脚号 包含开发板电路原理图示例 注意事项: 方向暂不支持高阻态 电平值可为低电平或高电平 需从厂商获取开发板电路资料
2025-07-12 19:03:57
437
原创 Niobe开发板消息队列实战指南
本文介绍了在Niobe WiFi IoT开发板上使用CMSIS 2.0接口进行消息队列开发的示例。主要内容包括:通过osThreadNew()创建两个线程Thread_MsgQ1和Thread_MsgQ2,分别负责发送和接收消息;使用osMessageQueueNew()创建消息队列,osMessageQueuePut()发送"hello niobe"消息,osMessageQueueGet()接收消息并打印。
2025-07-11 20:37:13
456
原创 鸿蒙设备开发之Niobe开发板信号量开发实战
本文详细介绍了在Niobe WiFi IoT开发板上使用CMSIS 2.0接口实现信号量开发的完整过程。文章首先分析了osThreadNew()、osSemaphoreNew()、osSemaphoreRelease()和osSemaphoreAcquire()等核心API的功能参数,然后通过Thread_Semp1和Thread_Semp2两个线程的交互示例,展示了信号量的创建、释放和获取操作。代码中Thread_Semp1周期性地释放信号量,而Thread_Semp
2025-07-11 18:01:02
560
原创 Niobe开发板:CMSIS 2.0互斥锁实战
本文介绍了在Niobe WiFi IoT开发板上使用CMSIS 2.0接口进行互斥锁开发的方法。主要内容包括如何使用osThreadNew()创建线程、osMutexNew()创建互斥锁、osMutexAcquire()获取锁和osMutexRelease()释放锁等API函数。通过示例代码展示了三个线程的创建和互斥锁的使用场景,并提供了编译调试的具体步骤。该示例有助于开发者理解如何在鸿蒙系统中实现线程同步和资源共享。
2025-07-11 16:39:16
537
原创 Niobe Wifi IoT开发板CMSIS 2.0事件标志同步教程
这篇文章介绍了在Niobe Wifi IoT开发板上使用CMSIS 2.0接口实现线程事件标志同步的方法。主要内容包括: 详细解析了三个关键API: osEventFlagsNew():创建和初始化事件标志对象 osEventFlagsSet():设置指定的事件标志 osEventFlagsWait():等待事件标志信号 软件设计部分展示了如何实现线程间同步: 通过OS_Thread_EventSender线程每隔100ms设置事件标志 OS_Thread_EventReceiver线程等待事件标志并处理
2025-07-11 15:52:42
261
原创 鸿蒙开发实战:定时器API全解析
本文介绍了在鸿蒙Niobe Wifi IoT开发板上使用CMSIS 2.0接口进行定时器开发的方法。文章首先分析了osTimerNew()和osTimerStart()两个核心API的功能和使用要点,然后详细讲解了软件设计思路:通过创建两个周期性定时器(1秒和3秒间隔),分别触发对应的回调函数打印日志。编译调试部分说明了如何修改BUILD.gn文件将示例代码加入编译,最后展示了运行结果:定时器1每秒输出一次日志,定时器3每三秒输出一次日志。本文为开发者提供了鸿蒙系统下定时器开发的完整实现方案和技术细节。
2025-07-11 14:42:53
394
原创 鸿蒙多线程开发实战:cmsis 2.0接口解析
本文核心内容:详细解析如何在Niobe WiFi IoT开发板上使用CMSIS 2.0接口实现多线程开发,包括osThreadNew()函数原理、代码实现及调试方法;
2025-07-11 13:43:50
387
原创 鸿蒙开发:二进制文件集成全攻略
本文介绍了在OpenHarmony北向应用中集成第三方二进制库的方法。重点包括:1)使用OpenHarmony SDK交叉编译生成二进制文件;2)在工程目录中合理组织库文件和头文件;3)动态库的特殊处理要求;4)通过CMake配置链接库和头文件路径;5)结合NAPI接口开发实现业务逻辑。适用于开发者快速将预编译好的第三方库集成到鸿蒙应用项目中,注意必须使用SDK交叉编译的二进制文件而非ROM编译版本。
2025-07-10 20:53:33
714
原创 鸿蒙开发:x86_64架构支持全攻略
本文介绍了如何在鸿蒙系统开发中新增对x86_64架构的支持。主要从构建框架层、cmake构建、makefile构建和configure构建四个方面进行了详细说明: 在构建框架层,需要添加x86_64的工具脚本和编译环境配置; 对于cmake构建,只需在HPKBUILD文件的archs变量中增加x86_64; 对于makefile构建,除了增加x86_64架构外,还需在prepare()函数中配置工具链; 对于configure构建,需要在多个函数中增加x86_64的相关配置和环境清理。 文章提供了具体修改示
2025-07-10 17:51:04
778
原创 如何在MacOS上使用OpenHarmony SDK交叉编译?
本文介绍了如何在Mac平台上使用OpenHarmony SDK对cJSON三方库进行交叉编译的方法。主要内容包括: 环境准备:下载对应架构的OpenHarmony SDK,安装系统cmake工具并添加OHOS配置,获取cJSON v1.7.15源码。 编译过程: 新建独立编译目录 配置交叉编译参数生成Makefile 执行make进行编译 验证编译结果 安装生成文件到指定目录 测试验证:建议使用原生库测试用例,通过OH测试环境进行功能验证。
2025-07-10 17:04:02
592
原创 鸿蒙C库移植实战:一小时搞定minizip
本文介绍了如何将C/C++三方库快速移植到OpenHarmony系统的完整流程。主要内容包括: 通过风险识别工具分析三方库的运行时依赖 使用lycium工具在Linux环境下完成交叉编译构建,支持cmake/configure/make等多种构建方式 测试验证方法及库文件使用方式 详细说明了编译脚本模板规则和关键函数实现 以minizip-ng为例展示快速适配过程 文章提供了从分析、编译到测试的完整解决方案,帮助开发者高效完成C/C++三方库的OpenHarmony移植工作。
2025-07-10 15:38:29
975
原创 鸿蒙全栈开发:异步接口实现详解
本文介绍了OpenHarmony Napi标准系统中异步接口的两种实现方式:Callback方式和Promise方式。异步实现通过napi_create_async_work()创建异步工作项,将耗时操作放在worker线程执行,避免阻塞主线程。 异步处理流程分为: 接收参数并初始化上下文数据 创建异步工作项 将工作项加入调度队列 worker线程执行业务逻辑 完成回调处理结果 对于Callback方式,需要将回调函数转换为napi_ref类型,在业务逻辑完成后调用回调返回结果
2025-07-10 14:50:10
383
原创 鸿蒙NAPI开发:数据类型转换全解析
本文介绍了OpenHarmony NAPI中数据类型转换的相关内容,主要包括: NAPI将ECMAScript标准数据类型统一封装为napi_value类型,用于JS与C/C++间的数据传递; 提供了双向数据类型转换接口,如napi_create_double、napi_get_value_double等; 通过add()同步调用示例,详细说明了参数获取、类型转换、业务计算和结果返回的处理流程; 介绍了napi_get_cb_info函数的使用方法及参数说明。
2025-07-10 13:57:44
1031
原创 napi系列学习基础篇——如何通过DevEco Studio开发一个NAPI工程
NAPI(Native API)是OpenHarmony系统中的一套原生模块扩展开发框架,它基于Node.js N-API规范开发,为开发者提供了JavaScript与C/C++模块之间相互调用的交互能力。如下图所示:OpenHarmony系统系统可以将框架层丰富的模块功能通过js接口开放给上层应用使用。应用开发者也可以选择将一些对性能、底层系统调用有要求的核心功能用C/C++封装实现,再通过js接口使用,提高应用本身的执行效率。
2025-07-09 20:39:59
953
1
原创 鸿蒙开发必看:三方库引用全攻略
本文探讨了在DevEco Studio的native工程中引用第三方C/C++库的三种方式:find_package、add_subdirectory和target_link_libraries。重点分析了开源三方库在DevEco Studio中的适用性,指出无依赖库可直接使用add_subdirectory,而有依赖库则需要配置搜索路径或提前构建安装依赖项。文章建议在native工程中优先采用target_link_libraries模式引用三方库,并提供了相关配置示例。
2025-07-09 17:41:19
671
原创 鸿蒙开发:固件与应用库混用问题解析
OpenHarmony开发中,三方库使用存在固件集成和应用集成两种方式。当尝试混用两种方式构建的库时,会出现符号找不到的编译错误。分析发现,这是由于IDE SDK和OpenHarmony SDK中基础库(libc++.so/libc.so)的命名空间隔离和函数差异导致的。工具链负责人表示,系统侧和NDK侧版本不一致,为避免API不兼容问题,两种集成方式的库不能混用。开发者需注意区分使用场景,选择正确的集成方式。
2025-07-09 16:40:10
1097
原创 鸿蒙开发全栈指南:CMake构建与实战技巧
本文介绍了CMake构建脚本编写的主要步骤和规范,包含版本声明、工程命名、语言配置、变量定义、库编译、文件安装等关键环节。重点强调命名规范(工程名大写、变量名大写不以CMAKE开头)、版本管理(主次补丁版本号)、构建选项(动态/静态库选择)、测试用例配置等重要实践。文章还详细说明了如何引用第三方库(源码或二进制)以及通过install命令实现库的标准化安装,为开发者提供了一套完整的CMake脚本编写指南。
2025-07-09 15:36:25
1020
原创 鸿蒙全栈开发:非cmake库移植实战
本文详细介绍了如何将非cmake构建的第三方库tinyxpath移植到鸿蒙DevEco Studio开发环境中。首先分析了tinyxpath的源码结构和依赖关系,确定其不依赖其他库。然后通过编写cmake构建脚本实现移植,包括设置工程基本信息、定义变量、配置库属性和安装选项等关键步骤。文中提供了完整的cmake脚本示例,并特别说明如何处理测试用例编译选项。最后还介绍了如何使用IDE工具验证移植效果,为开发者提供了将非cmake项目集成到鸿蒙生态的实用方法。
2025-07-09 14:40:30
697
原创 鸿蒙IDE集成cJSON三方库实战指南
本文介绍了在DevEco Studio中集成cmake构建的第三方库cJSON的方法。主要内容包括:下载cJSON源码并放入工程目录;修改CMakeLists文件,通过add_subdirectory添加cJSON编译,并使用target_link_libraries链接;最后通过IDE的Run entry按钮完成编译运行。文章简明扼要地展示了如何在鸿蒙开发环境中适配cmake构建的第三方库。
2025-07-09 13:37:39
260
原创 鸿蒙三方库napi接口测试实战
本文介绍了在OpenHarmony北向应用中集成C/C++三方库minizip的验证方法。由于需要通过napi接口进行调用,文章详细阐述了如何自定义napi接口来覆盖主要功能,包括压缩和解压缩操作,并设计了对应的参数结构。同时提供了接口测试示例,展示了如何通过按钮点击实现文件压缩/解压缩功能,包括普通操作和密码保护操作。测试结果表明,该方法能够有效验证hap包中集成的C/C++三方库功能,为开发者提供了一种可行的验证方案。
2025-07-08 20:43:03
1113
原创 鸿蒙全栈开发指南与HAP包解析
本文介绍了OpenHarmony应用程序包(HAP)的开发与管理机制。主要内容包括:HAP的概念与类型(Entry和Feature),应用程序包的开发调试流程(通过DevEco Studio、hdc_std和bm工具),以及发布部署过程(上架应用市场、云端分发和终端安装)。文章还详细说明了OpenHarmony如何支持多设备类型、模块化开发、跨平台兼容等功能特性,为开发者提供了完整的应用包管理解决方案。通过清晰的流程图展示了从开发到用户安装的完整生命周期,帮助开发者更好地理解OpenHarmony应用生态。
2025-07-08 17:44:16
1039
原创 鸿蒙开发新利器:AKI框架极简跨语言互调
本文介绍了AKI (Alpha Kernel Interacting)框架,这是一款针对OpenHarmony Native开发的ArkTs FFI开发框架,提供JS与C/C++跨语言互调解决方案。文章首先推荐了7篇相关技术文章,涵盖鸿蒙开发前景、岗位需求等内容。随后详细介绍了AKI框架的优势、兼容环境、安装配置以及核心功能。AKI支持极简语法糖实现跨语言调用,提供数据类型转换、线程安全等特性,并兼容多种OpenHarmony SDK版本。文章还展示了具体的使用示例和语法说明,包括插件注册、全局函数绑定等关
2025-07-08 16:55:49
1082
原创 鸿蒙开发实战:Napi调用C++三方库全解析
本文介绍了OpenHarmony应用如何调用C/C++三方库的方法,重点讲解了通过napi框架实现JS/ETS与C/C++交互的流程。文章以openjpeg库为例,展示了如何将C++接口封装为napi接口,包括参数解析、类型转换和接口注册等关键步骤。通过具体代码示例,详细说明了openjpeg_compress和openjpeg_create_j2k两个接口的实现过程,为开发者提供了在鸿蒙应用开发中集成原生库的实践指导。
2025-07-08 15:40:14
1151
原创 鸿蒙开发进阶:NAPI导出类对象全攻略
本文详细介绍了如何通过NAPI将C++类对象导出为JS可调用的模块。以NapiTest类为例,说明导出流程:1)定义类及方法;2)通过napi_define_class将C++类定义为JS类,并设置导出方法;3)实现构造函数和析构函数。关键点包括:使用napi_wrap绑定C++实例到JS对象、管理生命周期、处理属性描述符等。文章提供了完整代码示例,涵盖类定义、方法导出、构造/析构实现等核心环节,帮助开发者掌握NAPI复杂对象导出技术。
2025-07-08 14:43:41
955
原创 鸿蒙NAPI生命周期管理全解析
本文系统介绍了NAPI(原生API)的生命周期管理机制及其实现方法。首先解释了NAPI生命周期的概念,即从对象创建到释放的整个过程。然后详细讲解了两种生命周期管理方法:局部生命周期(通过napi_open_handle_scope和napi_close_handle_scope限定作用域)和全局生命周期(使用napi_create_reference创建持久化引用)。文章还以TestNapi为例,展示了如何在实际开发中应用这些生命周期管理技术,包括模块注册、类定义和接口
2025-07-08 13:41:52
895
原创 鸿蒙Napi异步接口开发全解析
本文详细介绍了OpenHarmony Napi标准系统的异步接口实现机制,包括Callback和Promise两种方式。主要内容包括: 异步实现原理:通过napi_create_async_work创建异步工作项,在worker线程执行计算任务,避免阻塞主线程,完成后通过EventLoop回调返回结果。 Callback方式实现: 定义上下文数据结构存储参数和结果 使用napi_create_reference管理回调函数生命周期 创建异步工作项并加入调度队列 在complete回调中处理结果并调用J
2025-07-07 20:36:39
672
原创 鸿蒙开发必看:NAPI数据类型转换全解析
本文介绍了OpenHarmony NAPI中数据类型转换的关键内容,包括: NAPI将JS八种数据类型统一封装为napi_value类型 常用数据类型转换接口,如数值、字符串等双向转换 同步调用实现流程,通过add()函数示例详细说明: 获取JS参数(napi_get_cb_info) 类型转换(napi_get_value_double) 业务计算 结果转换返回(napi_create_double)
2025-07-07 17:47:53
1116
原创 手把手教你创建新的OpenHarmony 三方库
本文介绍了OpenHarmony三方库的创建与发布方法。开发者可通过两种方式创建三方库:1)使用DevEco Studio的Static Library模板新建Module;2)通过ohpm命令行工具初始化。重点说明了oh-package.json5文件的配置要点,包括包名、版本等元数据字段。完成开发后,可通过Build命令编译生成HAR包,并配置.ohpmignore文件控制打包内容。该HAR包既可本地引用,也可上传至ohpm仓库共享
2025-07-07 17:03:37
515
原创 鸿蒙全栈开发:分布式软总线解析
分布式软总线是OpenHarmony实现多设备通信的核心能力,提供设备发现、组网和传输功能。其架构主要包括: SDK层:提供设备发现、连接等接口 核心层:实现认证、连接、传输等关键功能 适配层:针对不同设备和系统进行适配 关键技术点: 采用设备认证机制确保安全连接 支持多种连接方式(TCP/IP、蓝牙等) 提供消息、文件等多种数据传输能力 设备需在同一二层网络才能互相发现 该技术为分布式硬件和分布式能力提供基础通信支持,是实现鸿蒙"超级终端"概念的重要技术支撑。
2025-07-07 15:43:58
602
原创 OpenHarmony编译构建全解析
OpenHarmony编译构建与系统架构解析 本文详细介绍了OpenHarmony的编译构建系统架构和工作原理。系统采用GN+Ninja构建基座,支持部件化独立编译和三种系统方案构建。文章分析了hb命令行工具的使用,以及GN生成Ninja文件的流程,并通过WiFi组件案例说明组件的配置规则。同时,阐述了OpenHarmony的分层架构设计(系统>子系统>组件),可灵活裁剪以适应不同设备需求。最后,讲解了芯片解决方案和产品解决方案的配置规则,以HiSilicon Pegasus开发板为例展示了产品
2025-07-07 15:09:03
759
原创 鸿蒙全栈学习笔记:编译构建全解析
本文介绍了OpenHarmony编译子系统的架构与使用方法。编译子系统基于GN和Ninja构建,提供部件化抽象功能,支持轻量、小型、标准三种系统版本构建。系统架构分为模块、部件、子系统、产品四个层级,通过配置文件实现编译和打包。编译流程包括hb设置产品和hb编译两步,环境配置需安装相关软件包。文章还详细说明了命令行和hb两种编译方式的操作命令,并指出产品、部件等配置需遵循的规则。整体呈现了OpenHarmony编译系统的核心功能和操作流程。
2025-07-07 13:53:59
853
原创 鸿蒙全栈开发:应用启动流程深度解析
本文详细解析了OpenHarmony应用启动流程,从appspawn进程创建应用子进程到JS运行环境的初始化过程。文章首先介绍了应用启动的整体流程,包括appspawn孵化应用进程、创建AceAbility实现类和AceContainer等关键步骤。随后深入分析了启动流程的具体实现,包括应用主线程初始化Ability、AceContainer创建JS运行时环境(js_engine、native_engine、ets_runtime)以及调度js引擎读取字节码文件的过程。特别指出JS引擎类型由编译宏开关控制,
2025-07-06 22:03:19
1122
原创 鸿蒙全栈学习笔记:分布式开发深度分析~
文章系统介绍了HarmonyOS分布式应用框架的核心技术。该框架通过分布式调度、数据管理和硬件虚拟化等能力,实现多设备协同、跨端迁移和硬件自动跟随等创新功能。架构分为五层,从底层软件到应用接口,为开发者提供统一编程模型。关键特性包括:3+1组件开发模式(PageAbility/DataAbility/ServiceAbility+AbilityForm)、多端协同框架(跨设备组件启动/数据传递/状态同步)、分布式窗口管理(虚拟窗口渲染)和分布式硬件
2025-07-06 20:47:59
747
原创 鸿蒙开发实战:车牌识别全流程解析
摘要: 本文介绍了基于OpenHarmony 3.1 Release的Hi3516DV300开发板实现车牌识别的项目。项目移植了开源车牌识别库EasyPR(依赖OpenCV),通过媒体子系统完成拍照、识别功能。开发过程包括OpenCV和EasyPR的三方库移植(使用GN构建系统调用Shell脚本和Makefile),以及车牌识别功能的实现:1)GN构建配置;2)调用OpenHarmony拍照接口(分辨率设置为1280*720);3)集成EasyPR进行车牌识别。项目代码结构清晰,包含摄像头控制、设备协同、日
2025-07-06 19:14:03
1204
原创 鸿蒙全栈学习笔记:yxml库移植实战
本文介绍了yxml库向OpenHarmony平台的移植过程,包括源码获取、交叉编译设置、测试验证及工程集成。通过修改Makefile配置工具链,生成适用于OpenHarmony的静态库和测试用例,并手动验证XML解析功能。最后通过GN脚本将yxml库整合到OpenHarmony工程中,为开发者提供了完整的移植方案。
2025-07-04 20:47:42
1180
原创 鸿蒙开发实战:CMake三方库移植指南
摘要 本文介绍了使用CMake和Makefile移植三方库到OpenHarmony平台的方法,重点以double-conversion库为例说明CMake方式的移植流程。首先获取源码并分析目录结构,然后通过修改工具链配置实现交叉编译,生成OpenHarmony平台的可执行文件。文章详细展示了工具链设置、编译执行步骤以及测试方法,包括环境搭建、测试用例执行等关键环节。该指南适用于Hi3516DV300和Hi3518EV300平台,为开发者提供将CMake/Makefile组织编译的三方库集成到OpenHarm
2025-07-04 18:02:16
813
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人