micropython解释器移植到嵌入式_使用Python开发鸿蒙应用--2021.01.07直播图文

写在前面:

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

直播主题回顾:

3ac53c966b3f24cf007217bf7a9a732d.png

f98f517beccafc0ca86ce96db1177a7c.png

5844f344aa70a5eb49f37b4a8923667b.png

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

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

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

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

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

afc597bd8fe49027d48b43b21646cd1b.png

c860feb88e6413c3e4b82104aca07122.png

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

那么,这有什么问题吗?

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

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

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

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

e9c716172ac689f9c0aa5564f1e4db03.png

c16c0a47cdebf68ad876792ef61eecad.png

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

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

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

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

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

8839e269c146d130de36bc020f2e1d0a.png

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

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

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

103cf02c2320f3af7a5a2a3707ef5ce6.png

7910f2f4bcf069cda723eef6ee69b665.png

33a4f7001a691a592ce08ebeef48d024.png

文章后续内容和相关附件可以点击下面的原文链接前往学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一个针对 ARM 架构的 GNU 编译集合。它的名称包含了一些关键信息: - gcc:代表 GNU Compiler Collection,是一个开源的编程语言编译。 - arm:代表 ARM 架构,是一种广泛使用嵌入处理架构。 - 10.3:代表 GCC 的版本号,这里是 10.3 版本。 - 2021.07:代表编译的发布日期,这里是 2021 年 7 月。 - mingw-w64:代表 Minimalist GNU for Windows,是一个在 Windows 平台上使用 GCC 工具链的开发环境。 - i686:代表针对 32 位 x86 架构的编译。 - arm-none-linux-gnueabihf:代表针对 ARM 架构、使用 Linux 环境的非嵌入 ABI 编译。 这个编译集合旨在为使用 ARM 架构的开发者提供在 Linux 环境下进行交叉编译的能力。它可以生成针对 ARM 架构的可执行文件,可以在嵌入系统或其他 ARM 设备上运行。 gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一个强大的开发工具,可以帮助开发者在 ARM 架构上构建高效、可靠的应用程序。它提供了丰富的编译选项和库,使开发者能够更轻松地开发、调试和优化 ARM 架构的代码。 总而言之,这个编译集合是专门为 ARM 架构下的开发者准备的,提供一套完整的工具链,方便开发者在 Linux 环境下进行 ARM 应用程序的交叉编译。 ### 回答2: gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一个用于ARM架构的GNU编译。它是基于10.3版本的GCC,可用于在Windows系统上交叉编译ARM架构的应用程序。 这个编译是基于Mingw-w64项目,该项目旨在为Windows提供可用于移植开发环境。它使用了W64工具链,这是一个支持32位和64位Windows的工具链。 "-i686"指明了使用32位的x86架构,用于生成在ARM平台上运行的32位应用程序。"arm-none-linux-gnueabihf"是一个目标平台说明符,指明了编译生成的代码将在Linux环境下的ARM处理上运行。 该编译具有优秀的交叉编译能力,可以将在Windows系统上开发应用程序编译成在ARM Linux上运行的可执行文件。它提供了一套完整的开发工具,包括编译、链接、库等,以支持用户在Windows环境下进行ARM开发。 总之,gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一个用于在Windows系统上交叉编译ARM架构应用程序的跨平台编译。它为开发者提供了在Windows环境中进行ARM开发的便利性,并能够生成在ARM Linux上运行的可执行文件。 ### 回答3: gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一款编译软件,主要用于在基于ARM架构的嵌入linux系统上进行编译。这个编译是基于GCC(GNU Compiler Collection)的ARM版本,在Windows平台下通过MINGW-W64进行交叉编译,可在32位的i686架构的处理上运行。它的编译目标平台是ARM架构的嵌入linux系统,使用的是ARM的硬浮点ABI(Application Binary Interface)。这个版本的编译是在2021年7月发布的,并使用了GCC 10.3版本作为基础。 使用这个编译开发人员可以方便地编译ARM架构的嵌入linux应用程序。它允许开发人员在Windows环境下进行交叉编译,生成可在ARM架构的嵌入linux系统上运行的可执行文件。同时,该编译还支持ARM的硬浮点ABI,可以提高运行效率和精度,特别适用于需要处理浮点运算的应用程序。 总之,gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf 是一款用于在基于ARM架构的嵌入linux系统上进行编译的编译软件,它提供了在Windows平台下进行交叉编译的能力,并支持ARM的硬浮点ABI,可方便地开发ARM架构的嵌入linux应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值