李东山:如何让 OpenHarmony 支持低功耗蓝牙芯片 GR551x

【鸿蒙南向开发】浅谈OpenHarmony蓝牙模块 ​ 蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多具有蓝牙模块的设备之间进行短距离无线信息交换,使得数据传输变得更加迅速高效。它是爱立信、IBM等5家公司在1998年联合推出的一项无线通信技术,随后成立的蓝牙技术特殊兴趣组织(SIG)来负责该技术的开发和技术协议的制定,如今全世界已有1800多家公司加盟该组织。​ 蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.15协议。 阅读详情

编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献、分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点。

李东山

深圳市汇顶科技股份有限公司

系统软件工程师

大家好,我是李东山,来自深圳市汇顶科技股份有限公司,目前是 BLE 产品开发部的一名研发工程师,从 2021 年 9 月我开始承担 BLE SoC GR551x 接入 OpenAtom OpenHarmony(简称“OpenHarmony”)生态的适配任务,截止今年 1 月代码已经通过评审并合入主干,很高兴和团队一起共同见证从 0 到 1,顺利合并入主干,这是我首次参与这种大型开源项目,我希望将项目开发过程中的感受和经历分享给大家。

Q=OpenHarmony A=李东山


Q1. 作为开发领域知名的技术大牛,您最初为什么会选择加入 OpenHarmony 生态、参与开源共建呢?您认为,OpenHarmony 项目最吸引人的点在哪里?

OpenHarmony 是一款面向全场景、全连接、全智能时代的分布式操作系统,它面向万物互联,非常契合我们 BLE SoC 产品应用方向,选择加入 OpenHarmony 生态,希望能一起参与共建 OpenHarmony 生态系统,为促进万物互联和千行百业的繁荣发展贡献我们的一份力量。

OpenHarmony 代码遵循 Apache 2.0 等商业友好的开源协议,所有企业、机构与个人均可基于 OpenHarmony 开源代码,结合自身优势,去做各领域的操作系统发行版及终端产品。

Q2. 您在什么时候组建了 OpenHarmony 开源项目团队?通过多久完成了 GR5515 Starter Kit 开发板的适配,核心代码已合入主干,现在被 OpenHarmony PMC 委员会推选为“代码月度贡献之星”,真的太了不起了!您方便给我们介绍一下这个产品吗,或者这段经历吗?这么短时间达成了这样好的效果,请问您的“秘诀”都有哪些呢?

我们是在 2021 年的 9 月开始投入资源适配 OpenHarmony。经过两个多月的努力,将我们首款 Bluetooth LE 轻量设备芯片 GR551x 系列 SoC 适配上 OpenHarmony,2021 年 11 月 18 日顺利通过 OpenHarmony 兼容性测评, 并于 2022 年 1 月 7 日正式合入 OpenHarmony 主干。

GR5515 Starter Kit 适配代码仓库


能够在短时间内完成开发板适配工作不仅是因为我们生态小组小伙伴们齐心协力,通力配合, 还得益于 OpenHarmony 完备的开发平台和工具链,优秀的代码框架,丰富的文档资源。刚开始我们的仓库在 SIG 上孵化,两次毕业答辩评审后代码合入主干,非常感谢社区的老师们给予了很多专业指导和支持。

Q3. 能开发出这么一个优秀的产品,将核心代码合入主干,您和您的团队一定付出了很多。可以请您给我们分享一下,开发这个产品的整个过程,包括前期、中期、后期,您们具体都做了哪些工作,投入了多少人力和资源吗?

开发板适配前期,我们对 OpenHarmony 轻量系统进行了学习和调研,充分评估可行性后开始尝试适配。万事开头难,刚开始适配 V1.1.2-LTS 版本,从搭建开发环境、熟悉构建系统、移植第一行代码,解决了很多难题,也踩过很多坑。终于,两周后系统在我们的 SoC 上稳定运行起来了。

项目中期我们升级到了 V3.0.0-LTS,3.0 版本引入了许多新特性,我们开始适配 HDF 驱动、BLE 接口、文件系统、低功耗等,并通过了兼容性测评。

项目后期我们与主干 master 版本对齐,master 版本引入 board 与 soc 分离的先进设计理念,我们对代码框架进行了大量重构优化,代码架构和规范都符合要求后,代码合入 OpenHarmony 主干。

汇顶科技非常看好 OpenHarmony,我们持续投入人力在该项目上,目前基本完成了首款 BLE Soc GR5515 芯片的适配工作,未来我们也会对适配的代码进行持续优化和维护,同时也会积极参与轻量系统的图形显示和 BLE IoT 方向的共建工作。

Q4. 在整个开发进程中,您和您的团队遇到过哪些技术上或其他方面的难题?这些难题又是如何被逐一解决?在这些难题被解决的过程中,您总结了哪些宝贵的经验 or 教训?

在开发初期,网上几乎没有对 ARM 架构的轻量系统移植适配的指导文档,构建环境也很复杂,可参考的开发板就 3 块,对于我这种刚接触 OpenHarmony 的小白来说,不知道怎么去加入我们的代码,不知道如何构建,差点被遇到的各种困难“劝退”。好在 OpenHarmony 自带了一款基于 RSIC-V 架构的开发板样例,通过深入研究其编译框架和适配细节后,我们将 SDK 移植到 OpenHarmony 并构建成功。

OpenHarmony 对 ARM 和 RSIC-V 架构支持已经非常全面,Cortex-M 内核相关的 arch 移植 liteos-m 已经帮我们做好,移植一款新的开发板只需重点聚焦在编译构建、BSP 移植、XTS 测试、业务功能开发上。

Q5. 加入 OpenHarmony 生态以来,您最大的惊喜是什么?或者有哪些具体的收获?

自从加入 OpenHarmony 生态以来,我切身感受到它发展的如此之快,从当初的 1.0 版本迭代到如今的 3.0 版本,每个版本都会带来许多实用的更新,开发板越来越多,文档也越来越丰富,社区交流日渐活跃,开发者参与共建也越来越容易。

我也一直在持续学习 OpenHarmony,学习过程中了解到了很多代码架构上的先进理念,为自己平时的开发工作带来了很大的帮助,我也一直坚持通过博客分享我的学习经历和开源移植案例。

Q6. 期待未来 OpenHarmony 哪些方面能够得到改善、提供更多支持?

OpenHarmony 经过一年多的快速发展,编译构建、代码架构、文档支持、社区建设方面都做得非常优秀。

我个人期待,OpenHarmony 其配套 IDE DevEco Device Tool 能早点普及,推动众多的开发板适配并支持,这样有利于给开发者和终端客户带来更便捷的体验。

Q7. OpenHarmony 目前仍处在开发探索阶段,很多共建单位和生态伙伴还不清楚开源项目的玩法,或不知该如何着手进行开发。可以请您给大家分享一条,您认为最重要或最值得分享的心得吗?

开源项目的输出将为开发者提供更多的学习途径,点亮众多开发者前行的道路。

我在开发过程中遇到了很多技术上的困难,寻求不到别人的帮助时,通过研读别人的开源代码找到了灵感和思路,开源其实也是一种互相学习,共同进步的高效途径。

Q8. 开放性问题,可以畅所欲言,请问您还有话想告诉大家?

非常感谢 OpenHarmony,为我们提供了如此优秀的操作系统,很高兴自己能够参与开源共建,为开源贡献出自己的一份微薄力量。从刚开始的“懵懂”小白,跟着 OpenHarmony 一起成长,虽然过程中充满了挑战,但也收获很多。我真切感受到 OpenHarmony 的迅猛发展,希望有更多企业、开发者一起参与共建 OpenHarmony 繁荣生态。

【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析 本文基于OpenHarmony 4.0版本对蓝牙代码架构/目录分层原则做了简单分析,同时分析了4.0版本的重要改动点《鸿蒙(Harmony OS)开发学习手册》入门必看1.应用开发导读(ArKTS)2.……HarmonyOS概念1.系统定义2.技术框架3.技术特性4.系统安全快速入门1.基本概念2.构建第一个ArkTS应用3.……开发基础知识1.应用基础知识2.配置文件3.应用数据管理4.应用安全管理5.应用隐私保护6.三方应用调用管控机制。 阅读详情

相关推荐

OpenHarmony实战开发-如何进行蓝牙连接

蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的连接。2.构建UI框架,整体的UI框架分为TitleBar(页面名称),PinDialog(配对蓝牙弹框),index(主页面)三个部分。4.设置蓝牙扫描模式并开启扫描去发现设备,并订阅蓝牙设备发现上报时间获取设备列表。5.设置蓝牙扫描模式并开启扫描去发现设备,并订阅蓝牙设备发现上报时间获取设备列表。本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发。

m0_70749039的博客 1984

OpenHarmony - WIFI和蓝牙适配方案 & 关键流程

介绍OpenHarmony中的WiFi框架,WiFi驱动框架;介绍OpenHarmony中的WiFi适配方法;介绍WiFi适配过程中遇到的问题;介绍蓝牙框架,蓝牙适配方法,厂商库和OpenHarmony接口的差异以及适配注意点

OpenHarmony实战开发-蓝牙设置开发指导

蓝牙设置主要提供了开启蓝牙、关闭蓝牙、获取蓝牙状态的方法,帮助开发者实现基本蓝牙功能。

m0_70749039的博客 1290

[OpenHarmony RK3568] 蓝牙芯片适配

这一步建立一个ohos_build_part,意思是把主机上vendor /{product_name}/bluetooth/BCM43438A1.hcd这个文件,安装到开发板上的vendor/etc/firmware文件夹下,由于我们这里product_company是hihope,product_name是rk3568,所以我们应该把我们的固件放到SDK的vendor/hihope/rk3568/bluetooth下,它就会自动安装到开发板上。硬件芯片:AW-NM372S。芯片模组:43438A1。

jn_IT的博客 2153

OpenHarmony4.0系列(二)驱动适配方法

本文主要记录RK3568 kernel 驱动开发方式及调试手段

Only love Can resist the Long Years! 唯有热爱,可抵岁月漫长! 2447

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)

OpenHarmony Camera驱动模型结构HDI Implementation:对上实现HDI接口,向下调用框架层的接口,完成HDI接口任务的转发。Buffer Manager:屏蔽不同内存管理的差异,为子系统提供统一的操作接口,同时提供buffer轮转的功能。Pipeline Core:解析HCS配置完成pipeline的搭建,调度pipeline中的各个node完成流的处理Device Manager:通过调用底层硬件适配层接口,实现查询控制底层设备、枚举监听底层设备的功能。

鸿蒙开发知识记录 2939

RTK串口蓝牙适配OpenHarmony-5.0.0-Release要点记录

RTK串口蓝牙适配OpenHarmony-5.0.0-Release要点记录

cew333的博客 2208

【鸿蒙实战开发】基于短距离通信的BLE蓝牙扫描

ACCESS_BLUETOOTH 权限是很多蓝牙接口需要申请的,比如:ble.getConnectedBLEDevices(获取和当前设备连接的BLE设备)、ble.startBLEScan(发起BLE扫描流程)。ble扫描的是低功耗蓝牙,相比于connection扫描结果偏少,如果想要扫描到系统设置中的所有设备,需要去调用@ohos.bluetooth.connection模块中的connection.startbluetoothdiscovery。BLE为低功耗蓝牙,只能扫描到低功耗的蓝牙设备。

CTrup的博客 1365

RK3568 OpenHarmony V3.2 Beta5 开发之板级驱动适配(二)

Openharmony驱动适配实战

liucan633的博客 4072

OpenHarmony实战:轻量级系统内核移植

芯片架构的移植是内核移植的基础

m0_64420071的博客 2149

如何写一个简单轻松的OpenHarmony蓝牙应用

此文件就是介绍 OpenHarmony 中的蓝牙接口和如何自己开发一个简单的蓝牙应用程序。

m0_70749039的博客 1513

OpenHarmony开发——移植安全子系统

安全子系统提供网络设备连接、认证鉴权等功能,依赖mbedtls实现硬件随机数以及联网功能。由于每个厂商芯片硬件与实现硬件随机数的方式不同,需要适配硬件随机数接口。

m0_71263309的博客 599

RK3568 OpenHarmony3.2 蓝牙模块AP6275S适配(已更新)

OpenHarmony3.2 Release版默认是适配AP6275s这款蓝牙芯片的,但是打开蓝牙,发现无法扫描到设备、连接设备。目前平台soc为RK3568,根据项目要求,自定义外设。接下来将以解决bug为目的,学习和记录OpenHarmony平台下蓝牙模块的适配流程。RK809 CLK:32.768KHzUART1M1:与蓝牙模块通讯的串口:GPIO4_B6:GPIO4_A5WAKE_GPIO:未定义,硬件拉高1.8V: 未定义,悬空主要是打开串口,/dev/ttyS1,得到文件描述符fd。

Martian_Jonas的博客 2245

RK3568适配RTL8723 蓝牙驱动

RK3568适配RTL8723

badogyang的博客 2101

C语言编写Picard迭代和牛顿迭代法

为了完成学校计算方法的作业,花了两个多星期将所有实验报告编写出来,看到同桌找代码的辛苦,优快云也没有这类代码,我只是一时兴起,想分享我写的代码与大家共飨,有错误还请多多指正,代码都不难,也是为了让优快云帮我保存下,我辛辛苦苦做出来的,倘若能给别人带来一丝一毫的帮助,我都万分荣幸。 1:什么是Picard迭代 先弄一个满足f(x) = 0的函数将其转化为x= 正在上传… 重新上传 取消 ...

mohenxiang的博客 4699

学习笔记:物理信息神经网络(PINN)

PINN 的强大在于它打破了传统数值方法的限制,将神经网络的非线性拟合能力与物理方程的严谨性结合起来。它在处理高维、数据稀缺、复杂物理约束的场景下尤其出色。当然,PINN 也有收敛慢、梯度消失等挑战,比如,复杂 PDE 可能导致梯度传播困难,收敛慢(梯度消失)、于具有快速变化特征的系统,如冲击波,标准 PINN 可能精度不足,需要改进策略,比如自适应采样或多尺度特征提取。但随着研究深入,这些问题正在不断被解决。物理或化学方程为什么往往是偏微分方程?什么是物理信息神经网络(PINN)?x_%7Bi%7D。

qq_52635735的博客 1万+

推荐开源项目:让蓝牙开发变得简单的神器 —— SimpleBluetoothLibrary

推荐开源项目:让蓝牙开发变得简单的神器 —— SimpleBluetoothLibrary 在移动应用开发领域,尤其是对于那些寻求与硬件设备无缝对接的开发者来说,蓝牙功能的集成始终是一个挑战。但今天,我们为你揭示一款名为 SimpleBluetoothLibrary 的开源库,它承诺将蓝牙技术的复杂性降至最低,让你专注创意而不被技术细节束缚。 项目介绍 SimpleBluetoothLibrary...

gitblog_00099的博客 1151

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 943

OpenHarmony 蓝牙相关API用法

本示例通过使用蓝牙低功耗心率服务,展示蓝牙相关API用法。发现具有特定服务的设备。连接到设备。发现服务。发现服务的特征、如何读取给定特征的值、为特征设置通知等。相关概念BLE扫描:通过BLE扫描接口实现对BLE设备的搜索。BLE连接:通过BLE的GattClientDevice实现对BLE设备的连接、断连等操作。接收数据:通过BLECharacteristicChange接收特征值的改变。

1 1872

使用IntelliJ IDEA配置版本管理(SVN和Git)

在开发过程中,版本管理是必不可少的一部分,它可以帮助团队协作、管理代码历史记录,并且提供了代码回滚和分支管理等功能。本文将介绍如何使用IntelliJ IDEA配置版本管理,包括SVN和Git两种方式,另外列举了常见的问题并指导修复,以帮助开发者更高效地进行代码管理和协作。

2868

别再只盯着MES了!半导体/面板厂CIM系统全家桶(EAP/YMS/SPC)保姆级入门指南

本文深入解析半导体制造中的CIM系统,涵盖EAP、YMS和SPC等关键子系统的协同工作。通过实战案例和技术细节,展示如何利用CIM系统提升生产效率、良率管理和设备维护,为半导体/面板厂提供全面的实施指南和优化策略。

weixin_33693070的博客 463

OpenHarmony鸿蒙蓝牙BLE调试app

OpenHarmony蓝牙模块提供了ble的功能,本篇提供一个简单的app供测试时使用。代码使用API10,对应4.0Release版本固件。

pjie131_的博客 1522

SpringBoot如何正确连接SqlServer(亲测可用)

对于SpringBoot连接SqlServer的方式和常见的错误的汇总。1、驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。2、com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 ‘DUAL‘ 无效。

黄团团的个人博客 2万+
上一篇: 直播预告丨OpenHarmony标准系统多媒体子系统之音频解读
下一篇: 【直播回顾】OpenHarmony知识赋能五期第四课——子系统音频解读
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值