写在前面:

每年的过年前夕,手中的项目一定会告急。。。而自己又缺乏三头六臂七十二变等特技,所以只能在鸿蒙社区先消失一阵子了。今天再看社区的帖子,发现大家的进步可不一般,各种案例示例层出不穷,一片欣欣向荣的景象!在这样的氛围下,我又来了分享的欲望,希望自己的一点积累能为鸿蒙宇宙添砖加瓦。

直播主题回顾:

考虑到很多同学可能是新手,这里首先要谈谈交叉编译的概念!

交叉编译是嵌入开发中的基础概念,名字看起来高端大气上档次,但其本质还是编译,也就是把C/C++代码编译成可执行程序,和我们初学C/C++语言时的 Hello World! 程序编译几乎完全相同。

那么,你可能会问,不同之处在哪里?

不同之处仅仅是,Hello World! 在本机编译,可执行程序在本机运行;而交叉编译则是:程序在本机编译,而可执行程序在设备运行(即:本机无法直接运行交叉编译得到的二进制文件)。

对于大型嵌入式企业,开发环境一般分为两个部分:代码编辑环境和代码编译环境。产品代码位于代码服务器上,每个员工远程登录代码服务器之后创建自己的代码分支,之后就可以进行代码编辑和编译了。其中,代码编辑是在员工的工作PC上完成;而代码编译则是在服务器上完成。编译得到的二进制可执行程序,需要拷贝到工作PC上之后烧写到设备中。

大家通过类比可以发现,其实目前的鸿蒙设备开发方式就是企业级嵌入式产品的开发方式,只不过进行了缩减而已!代码编辑和代码编译在“不同的机器上”,两台机器通过网络互联,交叉编译得到的二进制文件通过代码编辑所在的环境烧写到设备。

那么,这有什么问题吗?

传统的嵌入式开发方式对于程序老手来说,没有任何问题,用起来游刃有余。但是,对于新手来说就可能是个噩梦了。

大家可以想想,程序出问题后如何定位?

就目前鸿蒙设备开发的情况来说,只有打印日志这一招可用。

这一招最常用,可问题也不少。。。

当然,有同学可能会说:“接个JTag断点调试就可以解决这个问题了!”

我想说,理论上确实如此,但是目前支持鸿蒙系统的开发板(如:Hi3861开发板)几乎不可能使用JTag进行调试!说得更简单一点:目前还没法用JTag对鸿蒙设备进行调试。所以,得另想办法,而Python是一个可行的选择。

Python语言简单而又不失强大,用于设备应用开发是再合适不过了。并且的,Python开发者数量巨大,如果鸿蒙应用开发能够支持Python语言,那么鸿蒙宇宙又可以增加无数闪耀的新星!

目标:除C语言之外,给开发者提供另一种选择,可以使用Python语言开发鸿蒙设备应用程序。所以,最迫切需要的是一个Python语言解释器,并且能够作为应用的一部分运行于设备上。如下图所示:

那么现在的问题就是:如何获得需要的Python语言解释器?

在这里有同学可能会问:为什么不直接移植MicroPython?而是对MicroPython做剪裁?

原因很简单,我的想法是让鸿蒙设备支持Python开发方式,而不是取代C语言开发方式,更不是取代鸿蒙!大家要明白MicroPython设计的初衷是直接运行于微控器,使用Python控制硬件,所以MicroPython本身已经具备了一些操作系统的特质,如果直接移植到设备(Hi3861开发板),那么也就意味着用MicroPython替代了鸿蒙,这显然与期望不符!

MicroPython的语言解释器是对Python的一个重新实现,非常适合资源受限的嵌入式设备。因此,最好的做法就是剪裁MicroPython的语言解析器,之后将鸿蒙设备的系统API接口绑定到Python语言(即:Python版同名系统API),这样就可以达到我的目的了。

查看更多内容>>>

作者:唐佐林

想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/

#2020征文-开发板#使用Python开发鸿蒙应用--2021.01.07直播图文的更多相关文章

  1. iTOP-4418开发板和6818开发板-第五路串口介绍

    iTOP-4418开发板和6818开发板 的除去默认 4 个串口的配置和用法. 4418 的开发板最多支持 5 路串口,如下图所示,4418 的 datasheet.   6818 的开发板最多支持 ...

  2. 【开发板试用报告】鸿蒙OS环境搭建及代码烧录

    鸿蒙系统的代码编译环境需要linux系统,软件开发和代码烧录需要windows环境. Linux环境 参考官方链接:https://gitee.com/openharmony/docs/blob/ma ...

  3. 友善RK3399/NanoPC-T4开发板wiringPi Python库访问GPIO外设实例讲解 -【申嵌视频】

    1 wiringPi for Python简介 wiringPi for Python是wiringPi的Python语言扩展,用于在Python程序中操作GPIO/I2C/SPI库/UART/PWM ...

  4. 基于讯为4412开发板的Android开发流程

    讯为4412开发板  使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略 ...

  5. 嵌入式开发板iTOP4412学习开发板

    网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...

  6. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能

    本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...

  7. ESP-EYE V2.1 开发板 WINDOWS 10 开发入门

    准备工作 1 × ESP-EYE V2.1 开发板 1 × Micro USB B 电缆 1 × PC(Windows10) 简介 ESP-EYE 是一款面向人脸识别和语音识别市场的开发板,搭载 ES ...

  8. 测试开发系列之Python开发mock接口(一)

    什么是mock接口呢,举个栗子,你在一家电商公司,有查看商品.购物.支付.发 货.收获等等等一大堆功能,你是一个测试人员,测测测,测到支付功能的时候,你就要调用第三方支付接口了,真实支付,直接扣你支付 ...

  9. 把Linux目录挂载到开发板、设置开发板从NFS启动、取消开发板从NFS启动

    声明:文中"PC虚拟机Linux"是指在PC上安装了虚拟机,然后在虚拟机中装的Linux. 关于NFS的详细介绍可参考:http://www.cnblogs.com/nufangr ...

随机推荐

  1. 团队作业 需求改进&系统设计

    PaChat聊天系统 一.需求&原型改进: 1.针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 问题1:功能划分条理不够清晰. 修改1:改为流程图的形式. 问题2:功能不能 ...

  2. 彻底搞懂js this指向问题

    在这里必须要提一句的是,this指向是学习js必须要掌握的(必须),再开始之前先看底部的总结,然后回上面看例子便一目了然. 例子1: function a(){ var user = "Ta ...

  3. v-lazyload数据变化图片不切换

    这个问题让我很困惑,明明得到的商品数据已经改变了,但是就图片不变化,随后找到了解决办法,那就是多加一个动态的key <img v-lazy="item.productImage&quo ...

  4. Java 线程安全问题的本质

    原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录: 线程安全问题的本质 理解CPU JVM虚拟机类比于操作系统 重排序 汇总 一些解释 ...

  5. 总括订单Blanket order

    总括订单Blanket order是客户向其供应方发出的采购订单,但其中包含一段时间内的多个交货日期,通常使用谈判时的预定价格.大多数情况下,它用于对消耗性商品有经常性需求的情况.总括订单通常用于客户 ...

  6. POJ3565

    题目大意: 给定\(n\)个蚂蚁和\(n\)颗苹果树的坐标,要求每个蚂蚁爬到一颗苹果树旁,使得每个蚂蚁路线不相交且路线总长度最小,求每个蚂蚁爬到哪个苹果树旁? 首先假设有两只蚂蚁路径相交,那么这两个蚂 ...

  7. AcWing 406. 放置机器人

    大型补档计划 题目链接 预处理每个列.行连续块. 每个每个列行只能在一个位置匹配,否则冲突. 符合二分图性质,跑匈牙利即可. 点数最坏情况 \(N * M\) (墙空地相间分布),边数最坏情况 \(N ...

  8. 01_02_py

    1基础知识 1.自然语言 (natural language) 是人们交流所使用的语言,例如英语.西班牙语和法语.它们不是人为设计出来的(尽管有人试图这样做):而是自然演变而来. 2.形式语言 (fo ...

  9. 题解-CF1065E Side Transmutations

    CF1065E Side Transmutations \(n\) 和 \(m\) 和 \(k\) 和序列 \(b_i(1\le i\le m,1\le b_i\le b_{i+1}\le \frac ...

  10. 你来说一下springboot的启动时的一个自动装配过程吧

    前言 继续总结吧,没有面试就继续夯实自己的基础,前阵子的在面试过程中遇到的各种问题陆陆续续都会总结出来分享给大家,这次要说的也是面试中被问到的一个高频的问题,我当时其实没答好,因为很早之前是看到spr ...