目前,openharmony 设备开发处于嵌入式开发阶段,并且 c 语言在嵌入式开发的过程中占有十分重要的地位。在与 openharmony 社区的朋友沟通交流中,我萌生了为 openharmony 设备开发提供更简洁的开发方式(简单的编程语言,简单的开发环境)的想法。同时也降低了门槛,使得更多的开发者可以上手 openharmony。这促成了我成立 python sig(special interest group,特别兴趣小组,openharmony 社区中最基本的组织形式)的初衷。首先,我需要定位一款编程语言,受众广且学习门槛低。
python 就进入了我的研究范畴。这几年 python 借助 ai 的兴起进入大众视野,简单性、易学性深受广大开发者欢迎,很多小学生都能够用它来编程。我调研了 python 实现(python 是开源的,可以通过源码了解实现),发现公版 python 和 micropython 都可以作为起点(baseline),毕竟不需要照着 python 规范写一个解释器出来!
然而,困难还是有的,这两种实现都有非常多的依赖,而且设计目标又分别不同:公版 python 是一个大而全的系统(解释器,库等),目标是基于丰富的资源自由发挥;micropython 从公版 python 剪裁而来,并做了扩展,基本定义成了一个微型嵌入式设备上的操作系统。那么,怎么开始呢,做选择真的很难!于是我开始整理思路,我想干什么?!之后有了下面的架构图。
很显然,我希望提供 openharmony 设备开发的其它方式,而不是用 python 替换 c 语言!所以,我的第一个里程碑(milestone)是获得一个可以在 openharmony 设备(hi3861 开发板)上运行的 python 解释器!有了这个 python 解释器,接下来就可以设计 python 版的 openharmony 系统开发接口了。
确定了目标之后,接下来的问题就是:究竟是用公版 python 还是 micropython?
通过两者代码的对比阅读,我发现 micropython 居然在解释器部分对公版 python 也做了剪裁。我暂时也没有确切答案,不过从代码实现可以看出 micropython 是为了适配更多低配置的硬件而做了取舍!显然,很多东西人家都考虑过了!我认为 openharmony 轻量设备和小型设备的定位更适用 micropython。
操作过程
通过 2 天的手术的改造,能够运行的版本(dtpython)就有了!!
使用方式如下:
1. 下载文末附件中的 libdtpython.a,并将其拷贝到 code-1.0vendorhisihi3861hi3861uildlibs 目录下,如图:
2. 【可选】编写 python 代码(目前未提供任何库支持),并使用文末附件中的 txt2str 工具将其转换为 c 字符串,用法如下:
说明:
txt2str 将 python 代码用 c 字符串的形式存储到 c 文件中(如上图中的 test.c)
将转换得到的 c 文件加入工程中即可在 c 代码中使用 python 代码(可参考文末附件中的示例)
注意:目前还没有简单的方法直接将 python 源文件烧写到设备中,因此才需要上述步骤。
3. 在设备开发中使用 python 代码,示例如下:
4. 运行结果如下:
后记
目前仅仅能够运行基本的 python 代码,大概率还存在很多需要解决的问题。希望大家都来试玩我的这个方案,多找 bug,多提 issue。
Google已开始进行更改,并已开始更新其iOS版本的应用程序
高通骁龙888采用集成5nm基带,带来极致网络速度
采购低价UVLED固化机时需要注意什么
揭秘:“新工科”到底新在哪?
AC312E直升机已通过了中国民航局的型号审查
如何用Python开发OpenHarmony设备程序
苹果打算推出三摄手机来对抗华为P20 Pro?
建筑防雷接地、工作接地、保护接地系统的设计
继6月取得了7.4%的增长后,美国的7月制造业产出增长了3.4%
为什么服务器要在机房的托管下才能更好的运行
为什么要混合电动化? 三相电机驱动架构
广汽本田e:NP1极湃1获中国生态汽车白金牌
Qualcomm XR企业计划推动XR在多个垂直行业的应用
显卡芯片
为什么要让众所周知的黑匣子破坏人们对它的信心?
锁存器74ls373应用电路图大全(四款抢答器/单片机接口/信号发生器电路)
安装地下车库CO监测系统必要吗
PR工具中blockage的定义、分类及其作用
安防监控系统的发展与信息存储
从无源器件开始,走上车规级国产化道路