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

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

简单了解Micropython

  • MicroPython 是 Python 3 编程语言的一种精简而高效的实现,它包含 Python 标准库的一个子集,并被优化为在微控制器和受限环境中运行。
  • RT-Thread MicroPython 可以运行在任何搭载了 RT-Thread 操作系统并且有一定资源的嵌入式平台上。
  • MicroPython 可以运行在有一定资源的开发板上,给你一个低层次的 Python 操作系统,可以用来控制各种电子系统。
  • MicroPython 富有各种高级特性,比如交互式提示、任意精度整数、闭包函数、列表解析、生成器、异常处理等等。
  • MicroPython 的目标是尽可能与普通 Python 兼容,使开发者能够轻松地将代码从桌面端转移到微控制器或嵌入式系统。程序可移植性很强,因为不需要考虑底层驱动,所以程序移植变得轻松和容易。

开发环境

初步移植

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

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

menuconfig

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

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

进入Hardware Module,使能machine uart

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

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

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

pkgs --update

使用ENV生成MDK工程:

scons --target=mdk5

BUG修复

双击打开project.uvprojx,进行编译

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

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

scons --target=mdk5

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

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

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

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

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

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

最后发现,终于没有错误啦!!!

RT-Thread Micropython环境搭建

VScode扩展搜索下载RT-Thread Micropython

创建工程

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

上电测试Micropython

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

测试示例

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

Micropython测试

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

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

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

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

结语

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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
安全 网络协议 物联网
物联网Wi-Fi配网方式,你知道几种?
什么是配网?有哪些配网方式?物联网配网技术为何鱼龙混杂,互不相通?本文将从原理、流程详细介绍一键配网、设备热点配网、手机热点配网、蓝牙配网、路由器配网和零配等6种配网方式,总结对比各配网方式的特点,并分享对配网技术未来发展方向的看法。
8238 0
物联网Wi-Fi配网方式,你知道几种?
|
Shell
xhost: unable to open display ":0.0"
-bash: xhost: 未找到命令 原因是因未没有安装相关的包(其他类似command not found命令没有可以用这种方式解决) yum whatprovides "*/xhost" 安装对应版本
2355 0
|
安全 Java Linux
|
Windows
LabVIEW安装程序需要Windows1064位(版本1507)或更新版本
LabVIEW安装程序需要Windows1064位(版本1507)或更新版本
570 1
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
自适应Prompt技术:让LLM精准理解用户意图的进阶策略
自适应Prompt技术通过动态意图解析与反馈驱动优化,将LLM从“机械执行者”进化为“认知协作者”。企业落地时需聚焦垂直场景,结合自动化工具链快速验证价值。
681 9
|
缓存 监控 计算机视觉
视频监控笔记(三):opencv结合ffmpeg获取rtsp摄像头相关信息
本文介绍了如何使用OpenCV结合FFmpeg获取RTSP摄像头信息,包括网络架构、视频监控系统组成、以及如何读取和显示网络摄像头视频流。
593 1
|
消息中间件 存储 缓存
高性能、高可靠性!Kafka的技术优势与应用场景全解析
**Kafka** 是一款高吞吐、高性能的消息系统,擅长日志收集、消息传递和用户活动跟踪。其优点包括:零拷贝技术提高传输效率,顺序读写优化磁盘性能,持久化保障数据安全,分布式架构支持扩展,以及客户端状态维护确保可靠性。在实际应用中,Kafka常用于日志聚合、解耦生产者与消费者,以及实时用户行为分析。
650 3
|
存储 自然语言处理 编译器
Python 源文件编译之后会得到什么,它的结构是怎样的?和字节码又有什么联系?
Python 源文件编译之后会得到什么,它的结构是怎样的?和字节码又有什么联系?
323 0
|
芯片
一文搞懂I2C协议-硬件基础
I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。I2C总结的基本的特征
1748 0
|
图形学
【unity实战】实现实体子弹射击
【unity实战】实现实体子弹射击
600 0