移植micropython最小工程到mm32f3270微控制器
Introductionmicropython v1.6发布已经有一段时间, 相比于之前的v1.3, 在内核中增强了一些功能并修复了一些bug, 支持的芯片也多了一些. 特别注意的是, micropython除了对STM32继续投入主要支持资源的同时, 加强了对NXP MIMXRT支持资源, 在MIMXRT移植的micropython大量增加了新的模块.
完成的changelog可见:
https://micropython.org/resources/micropython-ChangeLog.txt
这里面比较让我惊喜的是, 我竟然发现了SAMD的CM0P内核的微控制器. 从changelog上看, 实际在v1.2就已经支持了Microchip SAMD的CM4和CM0, 并且后续并没有继续更新, 但我之前的重点都在CM4F上, 并没有特别关注它. 但目前我手上只有CM3内核的芯片, 这让我不得不再看看CM4F和CM7F之外的移植. 既然CM0P也能支持(实际上circuitpython就是针对CM0P平台的衍生版), 那么CM3从理论上讲也是可行的.
我在之前对micropython的开发经历中, 已经移植过NXP KE18F(CM4F, micropython v1.3)和NXP LPC5500(CM33, micropython v1.4), 这次移植到MindMotion MM32F3270平台, 还是遵循老套路. 初试micropython v1.6
从micropython官网上下载代码包, 而不是从github上clone代码仓库. 这是因为之前的代码仓库中引用了很多submodule, 有一些submodule的地址已经失效了(例如lwip), 所以总是不能下载到完整的代码仓库. 但是从changelog上看, 至少关于lwip的引用地址已经改到了github上的镜像地址, 似乎已经解决了部分无效外链仓库的问题. 在Windows 10上搭建好Linux的工作环境, 参见我之前的文章, https://blog.csdn.net/suyong_yq/article/details/112797556 , 准备好msys2, make, python3, gcc和armgcc编译器. 先编一下mpy-corss, 无误.
再编一下minimal试试. 原本只是手贱, 做个double check, 结果竟然真的报错 !!! 原版代码报错, 还是在python内核里, 我自问目前还没有闲心调python内核. 只能寄希望于内核更新没有同步到minimal工程的makefile里. 但无论如何, 可以用来做最小工程的参考样例少了一个, 同时, 我的心中也飘过一道阴霾, 颇有点出师不利的兆头. 那就再试着编一下bare-arm, 心惊胆战啊. 还好, 编过了.
继续随手编几个工程. stm32的不用编, 那是micropython投入支持资源最多的, 我不想耽误时间, 毕竟编一次micropython还是挺长时间的. 试试mimxrt和samd的, 都没有报错. 终于拉高了点平均分. 我通常会找一个比较简单的工程作为模板开始移植, minimal已经阵亡了, MIMXRT的移植工程里增加了很多模块, 代码也扩充得比较复杂, 不再适合作为模板了. 我特别留意了SAMD的移植工程, SAMD移植的main.c代码结构同MIMXRT很像, 看来除了早期的STM32, 后来增加的移植都已经开始建立开发规范. SAMD移植的文件组织结构也同MIMXRT保持一致, 在ports目录下还有boards文件夹, 然后是各个板子相关的代码. 既然已经有了这样的规范, 那么这次我在移植MM32的时候也尽量遵循规范.
如果移植到32F103系列,那会大放异彩。借助以前的开发资料,开发模式可能都会被颠覆。每年搭载MICROPYTHON的产品可能超过亿级别。现在的2040价格可以,外围性能还是有点弱了。 这个源码在哪里呢?看了一下没看到移植的源码
页:
[1]