MicroPython的基本移植步骤和难点

移植的基本步骤

MicroPython官方的文档里面给出了移植的说明:https://docs.micropython.org/en/latest/develop/porting.html。其源代码中的ports/minimal是一个非常简单的例子,一般的移植也是从这个文件开始。

移植的过程中有几个要点:

  • mpconfigport.h文件非常重要,这个文件中用一系列MICROPY_开头的宏表示某个功能是否支持。

  • mphalport.h文件包括一些基本硬件相关函数的定义,mphalport.c是对应的函数实现。一般要实现Python的命令行交互(REPL),那么至少要在这个文件中提供对STDIN和STDOUT的支持,通常是对串口的交互支持。

  • 在官方的例子中heap的大小设置为4096,这个设置可能太小了,在测试中经常会导致内存分配不足,可以考虑把它设置的大一些。

  • 如果想快速体验一下官方例子的移植效果,可以在Linux下直接进入ports/minimal目录执行make命令,然后执行make run命令就可以运行MicroPython了。

  • 对于MicroPython的源代码而言,py目录是不可缺少的,它包括全部核心代码,而extmod目录也是非常重要的,它包括MicroPython的扩展库,特别是其中有2个文件是编译时必须的。port目录是各种板子的移植代码,可以作为参考。其他目录不是必须的。

移植的难点

MicroPython的核心代码是符合C99规范的,所以使用OpenHarmony的编译器编译并没有啥语法问题。移植的难点主要是把makefile改写为.gn文件。因为在MicroPython的makefile中有几个脚本,它们会扫描源代码,把其中的字符串标识符定义提取出来形成一个QSTR表,而程序之中只用一些定义的常量代替,这样的好处是可以节省存储空间,比较适合嵌入式应用。有关详细的原理可以参考《micropython源码分析之qstr》。这些生成的头文件都存放在build/genhdr/目录中。在OpenHarmony所使用的GN系统中没有类似的机制。

在唐佐林的方案中是先按照OpenHarmony的工具链配置MicroPython的makefile,然后在Linux下生成.lib库文件,再将库文件拷贝到OpenHarmony中,作为第三方库文件使用。不过这个方案不太符合我们上一篇博文提到的“采用比较规范的OpenHarmony的开发流程”。

我们目前的临时方案是在Linux下先运行ports/minimal目录下的makefile,然后把生成的build/genhdr/目录的头文件拷贝到OpenHarmony工程中。这些头文件的生成和所使用的编译器其实没有关系,只和mpconfigport.h文件的设置有关。所以只要保证OpenHarmony工程中的mpconfigport.h文件和Linux下的mpconfigport.h文件一致就可以了。我们未来的目标是通过改写Python脚本把MicroPython的生成头文件功能彻底移植到GN系统中、

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值