![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenHarmony
文章平均质量分 88
CTrup
这个作者很懒,什么都没留下…
展开
-
【FAQ问题定位】OpenHarmony执行TDD时 file not found 错误的处理
经过简单分析发现外部依赖的 cJSON:cjson 最像,下面就是在目标 BUILD.gn 中添加试试看…原创 2024-09-04 22:05:38 · 236 阅读 · 0 评论 -
【TEST测试】OpenHarmony unittest单元测试的编写
程序开发与单元测试二者密不可分,是每个开发人员的基本业务。当功能性代码开发完成后,要自行测试其是否满足设计预期,如果不满足就要回去完善代码,满足则可以提交功能代码及测试用例。测试用例的另一个重要作用就是阅读者了解代码的“一扇窗”,因为测试用例是程序的入口。测试用例要覆盖每个接口所有分支,即保证每个待测函数的功能是正常的。多个接口序列化功能需要提供完整序列化组合测试用例,例如:Open(), DoSomething(), Close()。原创 2024-09-04 20:35:34 · 972 阅读 · 0 评论 -
【SUBJECT技术】(MSDP)Rosen图层绘制的应用
本文结合实例说明 Rosen 图层绘制的若干细节,以点带面,若全面了解需要深入阅读 MSDP 和 Graphic2D 子系统相关代码。原创 2024-09-04 16:04:42 · 1105 阅读 · 0 评论 -
【FAQ问题定位】模块如何单独编译构建
众所周知,当前 OpenHarmony 模块十分庞大,非计算云全量编译代码十分耗时。如果修改、验证单一模块是没有必要全量编译的。注意镜像必须和本地代码日期尽量一致,代码可以稍晚于镜像。核心方法就是从每日构建下载烧录镜像,本地编译单一模块,烧录镜像,推送单一模块进行验证。以下以 RK3568 开发板,主线代码为例进行说明。原创 2024-09-04 15:19:13 · 1093 阅读 · 0 评论 -
【FAQ问题定位】查找代码片段提交者的PR
仓库中有一段代码我们不知道其意图,或者一个问题追踪到此处,需要定位这一段代码是何人、何时、何因、哪个 PR 添加的?下面提供了一套快捷的解决方案。这个方法通常用来定位“BUG 制造者”。了解代码幕后的动机,追溯代码变迁,学习软件迭代,寻找第一当事人是最直接有效的方式!原创 2024-09-04 14:23:48 · 396 阅读 · 0 评论 -
【SUBJECT技术】OpenHarmony IPC 之ServiceAbility应用(系统架构)
IPC 是用于进程间通信的技术,指的是进程间的数据交互过程。它包括各种形式的消息传递,共享资源,以及同步对象,如互斥量等,以确保安全的并发访问共享资源。IPC 通常使用 Binder 驱动,主要用于设备内的跨进程通信,如 OpenHarmony 系统中的进程间通信。IPC 与 RPC(Remote Procedure Call)机制用于实现跨进程通信,不同的是前者使用 Binder 驱动,用于设备内的跨进程通信,而后者使用软总线驱动,用于跨设备跨进程通信。原创 2024-09-04 13:56:05 · 1613 阅读 · 0 评论 -
【SUBJECT技术】epoll设计思路及在MSDP子系统中的应用举例
a. epoll 在 Linux 内核中构建了一个文件系统,该文件系统采用红黑树来构建,红黑树在增加和删除上面的效率极高,因此是 epoll 高效的原因之一。有兴趣可以百度红黑树了解,但在这里你只需知道其算法效率超高即可。b. epoll 提供了两种触发模式,水平触发(LT)和边沿触发(ET)。当然,涉及到 I/O 操作也必然会有阻塞和非阻塞两种方案。目前效率相对较高的是 epoll+ET+ 非阻塞 I/O 模型,在具体情况下应该合理选用当前情形中最优的搭配方案。原创 2024-09-03 22:29:32 · 1128 阅读 · 0 评论 -
【SUBJECT技术】定时器实现原理及应用举例
就是将 class TimerQueue 集成到 EventLoop 中,也就是作为 class EventLoop 的成员变量,这个很简单,不再赘述。原创 2024-09-03 21:52:31 · 1060 阅读 · 0 评论 -
【TEST测试】bad_variant_access 错误的处理
运行代码过程中出现 crash,用 addr2ling 反编译指令,对 lib.unstripped 未压缩的 so 进行反编译,出错地址和 so 来源于 crash 日志文件。DSoftbusStartCooperate notice = std::get(event.event) 报错。请使用 prebuilts 目录下的 llvm-addr2line 指令,否则解析不出来!增加 DSoftbusStartCooperate 赋值,问题解决。为了解决大家这些学习烦恼。原创 2024-09-03 21:04:20 · 547 阅读 · 0 评论 -
【TEST测试】CFI CHECK crash的处理
例如:运行 IntentionServiceTest 用例时,出现 RUN 字段后就异常退出,如下图。原创 2024-09-03 20:28:17 · 339 阅读 · 0 评论 -
【PREPARE工作准备】OpenHarmony 代码上库
到达这一步好比临门一脚,意义很大!您的代码被合入 OpenHarmony 平台,这是最后的一道关口,保证合入的是正确的,并且不会对系统造成意外。原创 2024-09-03 18:00:18 · 440 阅读 · 0 评论 -
【PREPARE工作准备】2.RK3568 开发板镜像烧录指南
一般是下载不完整造成的,即文件大小较小,所以重新下载完成再烧录即可解决。原创 2024-09-03 16:47:58 · 685 阅读 · 0 评论 -
【PRPARE工作准备】1.烧录Hi3516DV300开发板
如果手里不是 Hi3516DV300 这块开发板就不用往下看了。烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。本文基于 Windows10,以 Hi3516DV300 开发板为例,指导如何烧录 OpenHarmony 镜像,镜像也叫固件。这块开发板是 OpenHarmony 最早完全支持的开发板,属于小型系统和标准系统的开发板,整个烧录、IPOP 测试的过程较为繁琐和原始。原创 2024-09-03 16:03:03 · 421 阅读 · 0 评论 -
【PREPARE工作准备】下载、编译OpenHarmony代码
终于等到下载代码的时刻了,业内不叫下载代码叫“拉代码”,上传代码叫“上库”,编译叫构建。原创 2024-09-03 15:26:25 · 626 阅读 · 0 评论 -
【SUBJECT技术】探索 OpenHarmony libudev 设备热插拔机制
当前多模输入子系统处理设备热插拔事件的过程如图所示现有多模输入子系统框架中,设备原始输入事件要经由 libinput 处理,封装成 libinput 的事件类型。多模输入子系统接收并处理 libinput 封装的事件。特别地,libinput 依赖 udev 获得输入设备热插拔事件的通知。udev 将监听热插拔事件、读取热插拔的设备信息,连同枚举已加载设备等接口实现封装成 libudev 共享库。原创 2024-09-03 14:45:16 · 315 阅读 · 0 评论 -
【SUBJEC技术】(MSDP) 探索OpenHarmony 拖拽动画的技术实现
涉及动画的地方为开始拖拽,拖拽过程中,拖拽成功,拖拽失败。原创 2024-09-03 14:03:22 · 1148 阅读 · 0 评论 -
【移植】轻量级系统之移植验证
OpenHarmony 芯片移植完成后,需要开展 OpenHarmony 兼容性测试以及芯片 SDK 功能性测试。除可获得测试认证之外,还可以在开发阶段提前发现缺陷,大幅提高代码质量。原创 2024-09-02 22:19:41 · 390 阅读 · 0 评论 -
【移植】轻量级系统之启动恢复子系统移植
启动恢复子系统负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。原创 2024-09-02 22:04:03 · 147 阅读 · 0 评论 -
【移植】轻量级系统之配置其他子系统
除上述子系统之外,还有一些必要但是无需进行移植的子系统。如:分布式任务调度子系统、DFX 子系统。原创 2024-09-02 21:20:03 · 1184 阅读 · 0 评论 -
【移植】轻量级系统之文件子系统移植
utils 部件可被各业务子系统及上层应用使用,依赖芯片文件系统实现,需要芯片平台提供文件打开、关闭、读写、获取大小等功能。原创 2024-09-02 20:27:06 · 1327 阅读 · 0 评论 -
【移植】轻量级系统之外设驱动子系统移植
外设驱动子系统提供 OpenHarmony 专有的外部设备操作接口。本模块提供设备操作接口有:FLASH, GPIO, I2C, PWM, UART, WATCHDOG 等。OpenHarmony 提供了两种驱动适配方式:使用外设驱动子系统、使用 HDF 驱动框架。由于轻量级系统的资源有限,这里建议使用 IOT 子系统方式。原创 2024-09-02 18:04:47 · 701 阅读 · 0 评论 -
【移植】轻量级系统之通信子系统移植
通信子系统目前涉及 Wi-Fi 和蓝牙适配,厂商应当根据芯片自身情况进行适配。原创 2024-09-02 17:34:09 · 696 阅读 · 0 评论 -
【移植】轻量级系统移植准备
OpenHarmony 源码重要目录介绍见表 1 OpenHarmony 重要目录,其中 device 和 vendor 目录为芯片厂商和终端模组厂商工作区域(在 搭建编译框架 部分详细介绍)。表 1OpenHarmony 重要目录目录用途build编译框架所在目录。内核所在的目录,其中 arch 目录描述支撑的内核架构。device芯片厂商适配目录,其中“config.gni”描述当前芯片使用的 arch,工具链,编译链接选项等。vendor。原创 2024-09-02 16:37:35 · 1155 阅读 · 0 评论 -
【移植】轻量级系统移植概述
本文档从芯片适配的端到端视角,为芯片/模组制造商提供基于 OpenHarmony 的芯片适配指导。典型的芯片架构,例如 cortex-m、risc-v 系列都可以按照本文档进行适配移植。原创 2024-09-02 15:08:55 · 622 阅读 · 0 评论 -
【移植】轻量级系统内核移植
编译框架搭建完成后,需要将芯片厂商的 SDK 加入 OpenHarmony 编译框架,从而可以编译出带 SDK 的烧录文件(此时编译出的是不带系统的裸机工程),以便 OpenHarmony 可以调用 SDK 中的接口。参考文件路径:“device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/targets/hi3861v100/include/target_config.h”添加完内核子系统后,可以编译出带有系统的工程。原创 2024-09-02 14:32:51 · 1401 阅读 · 0 评论 -
【移植】标准系统移植指南
本文以移植名为 MyProduct 的开发板为例讲解移植过程,假定 MyProduct 是 MyProductVendor 公司的开发板,使用 MySoCVendor 公司生产的 MySOC 芯片作为处理器。在名称的目录下创建一个 config.json 文件,该文件用于描述产品所使用的 SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard 等)原创 2024-09-02 13:48:44 · 1280 阅读 · 0 评论 -
【移植】标准系统方案之扬帆移植案例
本文以 OpenHarmony 3.0 为基础,讲解基于 HDF(Hardware Driver Foundation)驱动框架开发的 Audio 驱动框架,包括 Audio 驱动的架构组成、功能部件的实现和服务节点详细介绍。音频驱动框架模型,向上服务于多媒体音频子系统,便于系统开发者能够更便捷的根据场景来开发应用。向下服务于具体的设备厂商,对于 Codec 和 DSP 设备厂商来说,可根据 ADM 模块提供的向下统一接口适配各自的驱动代码,就可以实现快速开发和适配 HOS 系统。原创 2024-09-01 22:35:25 · 1804 阅读 · 0 评论 -
【移植】Combo解决方案之W800芯片移植案例
文件下,描述了产品使用的内核、单板、子系统等信息。其中,内核、单板型号、单板厂商需提前规划好,是预编译指令hb set关注的。"product_name": "neptune_iotlink_demo", --- 产品名"ohos_version": "OpenHarmony 3.1", --- 使用的OS版本"type":"mini", --- 系统类型: mini"version": "3.0", --- 系统版本: 3.0。原创 2024-09-01 21:38:37 · 1368 阅读 · 0 评论 -
【移植】小型系统STM32MP1芯片移植案例
本文章基于意法半导体STM32MP157芯片的小熊派 BearPi-HM Micro 开发板 ,进行小型带屏开发板的移植,实现了aafwk_liteHDF等部件基于内核的适配。移植架构上采用Board与SoC分离的方案。原创 2024-09-01 21:00:01 · 1870 阅读 · 0 评论 -
【移植】轻量系统STM32F407芯片移植案例
介绍基于芯片在拓维信息 Niobe407 开发板上移植 OpenHarmony LiteOS-M 轻量系统,提供交通、工业领域开发板解决方案。移植架构采用Board与SoC分离方案,使用arm gcc工具链Newlib C库,实现了lwiplittlefshdf等子系统及组件的适配,开发了配套应用示例代码,支持通过 Kconfig 图形化配置编译选项。原创 2024-09-01 20:41:55 · 2658 阅读 · 0 评论 -
【移植】小型系统编译构建&小型系统移植须知
编译构建流程、编译脚本编写、目录规则、独立编译单个组件、独立编译芯片解决方案等介绍请见 编译构建子系统介绍。原创 2024-08-30 22:28:11 · 1063 阅读 · 0 评论 -
【移植】小型系统Linux内核
Linux 内核移植主要涉及基于 linux 内核基线合入三方芯片补丁后,进行基础的内核编译构建及验证。原创 2024-08-30 21:39:06 · 834 阅读 · 0 评论 -
【移植】小型系统平台驱动移植
目录下创建平台驱动,如果你要移植的 SOC 的厂商还没有创建仓库的话,请联系 sig_devboard 创建。HDF 为所有的平台驱动都创建了驱动模型,移植平台驱动的主要工作是向模型注入实例。这些模型你可以在源码目录。moduleName 要与驱动定义中的相同。在这一步,我们会在源码目录。原创 2024-08-30 21:11:04 · 331 阅读 · 0 评论 -
【移植】小型系统器件驱动移植
本章节讲解如何移植各类器件驱动。原创 2024-08-30 20:47:19 · 970 阅读 · 0 评论 -
【移植】一种快速移植OpenHarmony Linux内核的方法
本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带 Linux 内核的现有能力,快速移植 OpenHarmony 到三方芯片平台的方法。原创 2024-08-30 17:47:25 · 1103 阅读 · 0 评论 -
【移植】标准系统方案之瑞芯微RK3568移植案例(三)
调试 AP 模块时,无法正常开启 AP 功能的解决方法。原创 2024-08-30 16:52:52 · 1184 阅读 · 0 评论 -
【移植】标准系统方案之瑞芯微RK3568移植案例(二)
Camera 驱动框架所在的仓为:drivers_peripheral,源码目录为:“drivers/peripheral/camera”。|-- hal| |-- BUILD.gn #Camera驱动框架构建入口| |-- adapter #平台适配层,适配平台| |-- camera.gni #定义组件所使用的全局变量| |-- test #测试代码|-- hal_c #为海思平台提供专用C接口|-- interfaces #HDI接口。原创 2024-08-30 15:54:38 · 757 阅读 · 0 评论 -
【移植】标准系统方案之瑞芯微RK3568移植案例(一)
主要完成 Codec/DMA/I2S 驱动注册,使得 ADM 可以加载驱动节点;并注册 ADM 与 Drivers 交互的接口函数主要完成 ADM Drivers adapter 接口函数的实现,以及 Codec_config.hcs/dai_config.hcs 等配置信息的获取,并注册到对应的设备ADM Drivers impl 可以直接阅读硬件手册,完成驱动端到端的配置;也可以借用 Linux 原生驱动实现与接口,减少开发者工作量。原创 2024-08-30 15:45:22 · 522 阅读 · 0 评论