【NXP】LPC55S69-RT-Thread Micropython移植日志

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

简单了解Micropython

  • MicroPython 是 Python 3 编程语言的一种精简而高效的实现它包含 Python 标准库的一个子集并被优化为在微控制器和受限环境中运行。

  • RT-Thread MicroPython 可以运行在任何搭载了 RT-Thread 操作系统并且有一定资源的嵌入式平台上。

  • MicroPython 可以运行在有一定资源的开发板上给你一个低层次的 Python 操作系统可以用来控制各种电子系统。

  • MicroPython 富有各种高级特性比如交互式提示、任意精度整数、闭包函数、列表解析、生成器、异常处理等等。

  • MicroPython 的目标是尽可能与普通 Python 兼容使开发者能够轻松地将代码从桌面端转移到微控制器或嵌入式系统。程序可移植性很强因为不需要考虑底层驱动所以程序移植变得轻松和容易。

开发环境

初步移植

首先从RT-Thread官方仓库克隆master分支的仓库到本地

image-20230206105228123

来到该目录.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk鼠标右键打开ENV工具首先打开命令行菜单

menuconfig

使能添加Micropython软件包RT-Thread Online Packages--->launage packages--->Micropython

image-20230206110054882

Heap size修改为20480初次分配20K后续用户可根据需求修改同时版本选择最新版(这里由于我选择版本时没有注意到最下方的latest版本但是经测试并于多出的报错问题相关的报错也可参考该文章)

image-20230206110338978

进入Hardware Module使能machine uart

image-20230206110701904

同时我们回到主菜单界面进入Hardware Drives config--->on-chip Peripheral Drivers使能UART0和UART2

image-20230206110948958

由于后续需要在main线程中启动Micropython运行时环境需要增大main线程的栈大小这里我们选择栈大小修改为8k回到主界面RT-Thread Components--->set main thread stack size修改为8192

image-20230206115128667

保存退出并使用命令下载软件包

pkgs --update

image-20230206115308233

使用ENV生成MDK工程

scons --target=mdk5

image-20230206115527689

BUG修复

双击打开project.uvprojx进行编译

image-20230206115702684

这里由于我们的keil工程为AC6版本如果您的编译器版本为AC5应该不需要修改仅猜测需要将软件包进行修改.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk\packages\micropython-v1.13.0\SConscript

image-20230206120429651

切记此时需要回到bsp目录下重新使用ENV工具生成MDK文件然后再回到keil重新编译工程

scons --target=mdk5

此时编译错误大大减少只剩下三个错误

image-20230206120743700

第一个错误需要在菜单中使能Support legacy version for compatibility目前该问题以推送至官方仓库已被修复此问题并重新使用ENV生成MDK工程文件

image-20230206111143483

重新编译继续有报错这里我们找不到该函数的定义先在头文件中进行外部声明

image-20230206121231129

找到头文件所在位置.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk\packages\micropython-v1.13.0\port\mpgetcharport.h

image-20230206121521727

此时就剩下最后一个错误啦这里报错是说这个宏没有定义通过翻阅RT-Thread库函数确定该宏是文件系统的一个宏且定义为整型3具体作用可查看此PR所以解决该问题就是重新定义一下DFS_FD_OFFSET

image-20230206121656320

image-20230206122027240

想不到编译之后居然还有一个错误这里参考这位开发者的issuelist_mem();注释此处可能是个官方BUG后续尝试修复

image-20230206122146590

image-20230206122748054

最后发现终于没有错误啦

image-20230206122817350

RT-Thread Micropython环境搭建

VScode扩展搜索下载RT-Thread Micropython

image-20230206123632247

创建工程

vscode下方导航栏点击创建Micropython工程创建一个新的MicroPython工程并选择工程存放路径

image-20230206151916502

image-20230206152143031

上电测试Micropython

点击下方工具栏连接开发板打开串口设备后点击复位此时出现RT-Thread官方LOGO

image-20230206152315131

测试示例

LPC55S69也成功移植了RT-Thread的FINSH组件点击TAB键可查看Finsh控制台命令我们可以看到有一个python命令行

image-20230206154101713

Micropython测试

Finsh控制台输入python转到python控制台同时还支持quit()exit()命令退回Finsh控制台

image-20230206154310678

简单测试下micropython下面使用python命令运行脚本时给了一个提示说未使能uos module

image-20230206160622977

打开图形化菜单进入该路径下RT-Thread online packages-->launage packages--->system module使能uos:basic 'operating system' services

同时更新软件包并使用env工具重新生成MDK再进行编译下载成功解决问题

image-20230206162718225

结语

搭建好Micropython后那么就可以自由发挥才能去创作自己的作品啦

联系

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python