0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Python开发OpenHarmony设备程序

OpenAtom OpenHarmony 来源:HarmonyOS技术社区 作者:唐佐林 2021-11-12 11:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目前,OpenHarmony 设备开发处于嵌入式开发阶段,并且 C 语言在嵌入式开发的过程中占有十分重要的地位。在与 OpenHarmony 社区的朋友沟通交流中,我萌生了为 OpenHarmony 设备开发提供更简洁的开发方式(简单的编程语言,简单的开发环境)的想法。同时也降低了门槛,使得更多的开发者可以上手 OpenHarmony。这促成了我成立 Python SIG(Special Interest Group,特别兴趣小组,OpenHarmony 社区中最基本的组织形式)的初衷。首先,我需要定位一款编程语言,受众广且学习门槛低。

Python 就进入了我的研究范畴。这几年 Python 借助 AI 的兴起进入大众视野,简单性、易学性深受广大开发者欢迎,很多小学生都能够用它来编程。我调研了 Python 实现(Python 是开源的,可以通过源码了解实现),发现公版 Python 和 MicroPython 都可以作为起点(Baseline),毕竟不需要照着 Python 规范写一个解释器出来!

然而,困难还是有的,这两种实现都有非常多的依赖,而且设计目标又分别不同:公版 Python 是一个大而全的系统(解释器,库等),目标是基于丰富的资源自由发挥;MicroPython 从公版 Python 剪裁而来,并做了扩展,基本定义成了一个微型嵌入式设备上的操作系统。那么,怎么开始呢,做选择真的很难!于是我开始整理思路,我想干什么?!之后有了下面的架构图。

3eb2baec-41d8-11ec-b939-dac502259ad0.png

很显然,我希望提供 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 字符串,用法如下:

3fd1e790-41d8-11ec-b939-dac502259ad0.png

说明:

Txt2Str 将 Python 代码用 C 字符串的形式存储到 C 文件中(如上图中的 test.c)

将转换得到的 C 文件加入工程中即可在 C 代码中使用 Python 代码(可参考文末附件中的示例)

注意:目前还没有简单的方法直接将 Python 源文件烧写到设备中,因此才需要上述步骤。

3. 在设备开发中使用 Python 代码,示例如下:

409e2062-41d8-11ec-b939-dac502259ad0.png

4. 运行结果如下:

415b0ef2-41d8-11ec-b939-dac502259ad0.png

后记

目前仅仅能够运行基本的 Python 代码,大概率还存在很多需要解决的问题。希望大家都来试玩我的这个方案,多找 Bug,多提 Issue。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4856

    浏览量

    89551
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    69328
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35540
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20698

原文标题:用Python开发OpenHarmony设备程序——初体验

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    触觉智能RK3576开发OpenHarmony开源鸿蒙系统USB控制传输功能示例

    本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,基于触觉智能RK3576开发板PurplePiOH2演示。OpenHarmony的USB通信介绍实现
    的头像 发表于 09-30 16:31 1212次阅读
    触觉智能RK3576<b class='flag-5'>开发</b>板<b class='flag-5'>OpenHarmony</b>开源鸿蒙系统USB控制传输功能示例

    何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序
    的头像 发表于 08-08 20:16 3058次阅读
    如<b class='flag-5'>何用</b>Arduino Nano/UNO R3<b class='flag-5'>开发</b>板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3<b class='flag-5'>开发</b>板重新烧录引导<b class='flag-5'>程序</b>bootlaoder

    开源鸿蒙开发必备!OpenHarmony替换Full SDK全攻略

    本文介绍开源鸿蒙OpenHarmony替换FullSDK的方法,演示设备为触觉智能PurplePiOH鸿蒙开发板获取FullSD
    的头像 发表于 06-06 18:11 628次阅读
    开源鸿蒙<b class='flag-5'>开发</b>必备!<b class='flag-5'>OpenHarmony</b>替换Full SDK全攻略

    何用FastMCP快速开发自己的MCP Server?

    使用FastMCP快速实现MCP Server的全过程! 一, FastMCP简介 FastMCP作为新一代Python风格的MCP服务开发
    的头像 发表于 05-07 16:07 2435次阅读
    如<b class='flag-5'>何用</b>FastMCP快速<b class='flag-5'>开发</b>自己的MCP Server?

    请问下,openharmony支持哪一款龙芯的开发板?有没有开源的龙芯的openharmony源码?

    想买个2k0300的开发板学习龙芯和openharmony,愣是没有看到提供openharmony源码的,也没与看到开源的代码。gitee上,openharmony的龙芯sig仓库也是
    发表于 04-26 13:06

    鸿蒙北向开发OpenHarmony5.0 DevEco Studio开发工具安装与配置

    本文介绍OpenHarmony5.0 DevEco Studio开发工具安装与配置,鸿蒙北向开发入门必备!由触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核
    的头像 发表于 03-28 18:05 1312次阅读
    鸿蒙北向<b class='flag-5'>开发</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>开发</b>工具安装与配置

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1515次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b><b class='flag-5'>程序</b>?

    北京迅为RK3568开发OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 1552次阅读
    北京迅为RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>OpenHarmony</b>系统南向驱动<b class='flag-5'>开发</b>内核HDF驱动框架架构

    【北京迅为】itop-3568 开发openharmony鸿蒙烧写及测试-第2章OpenHarmony v3.2-Beta4版本测试

    【北京迅为】itop-3568 开发openharmony鸿蒙烧写及测试-第2章OpenHarmony v3.2-Beta4版本测试
    的头像 发表于 03-05 10:53 876次阅读
    【北京迅为】itop-3568 <b class='flag-5'>开发</b>板<b class='flag-5'>openharmony</b>鸿蒙烧写及测试-第2章<b class='flag-5'>OpenHarmony</b> v3.2-Beta4版本测试

    【北京迅为】itop-3568 开发openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像

    【北京迅为】itop-3568 开发openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像
    的头像 发表于 03-04 16:31 868次阅读
    【北京迅为】itop-3568 <b class='flag-5'>开发</b>板<b class='flag-5'>openharmony</b>鸿蒙烧写及测试-第1章 体验<b class='flag-5'>OpenHarmony</b>—烧写镜像

    OpenHarmony在应用与游戏开发领域的前沿成果

    展示了OpenHarmony在应用与游戏开发领域的前沿成果。这些凝聚智慧与协作的参赛作品,不仅在技术层面实现了多项突破,更在商业化应用层面验证了开源生态的无限潜力。赛事不仅彰显了开发者群体的创新活力,也凸显了
    的头像 发表于 03-03 15:04 880次阅读

    蜂鸟板上Openharmony系统跑QT程序

    将QT程序放到Openharmony系统上跑,可以运行,但是会被覆盖掉。(用的网盘里面的install,支持QT组件的版本)。 运行情况是,在终端运行QT程序,可以正常运行出来,但是触摸屏幕后,会被
    发表于 02-26 13:04

    鸿蒙北向开发OpenHarmony4.1 DevEco Studio开发工具安装与配置

    OpenHarmony4.1 DevEco Studio开发工具安装与配置,鸿蒙北向开发入门必备!
    的头像 发表于 02-07 17:35 1336次阅读
    鸿蒙北向<b class='flag-5'>开发</b><b class='flag-5'>OpenHarmony</b>4.1 DevEco Studio<b class='flag-5'>开发</b>工具安装与配置

    ID读卡器Python程序开发

    液显ID读卡器UDP协议开发Python程序。代码如下:   # pip install netifacesimport subprocessimport structimport
    的头像 发表于 01-10 16:05 766次阅读

    OpenHarmony程序分析框架论文入选ICSE 2025

      近日,ICSE 2025软件工程实践Track放榜,面向OpenAtom OpenHarmony(以下简称“OpenHarmony”)的ArkTS程序分析基础框架--方舟程序分析器
    的头像 发表于 01-02 13:41 1828次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>程序</b>分析框架论文入选ICSE 2025