查看: 1070|回复: 3

[原创] 【NXP】LPC55S69-RT-Thread Micropython移植日志

[复制链接]

该用户从未签到

4

主题

9

帖子

0

注册会员

Rank: 2

积分
120
最后登录
2024-3-6
发表于 2023-2-6 19:43:37 | 显示全部楼层 |阅读模式
简单了解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后,那么就可以自由发挥才能去创作自己的作品啦!
联系
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32030
    最后登录
    2024-4-26
    发表于 2023-2-7 09:51:40 | 显示全部楼层
    支持一下
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 15:37
  • 签到天数: 42 天

    [LV.5]常住居民I

    42

    主题

    500

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    1369

    热心会员

    最后登录
    2024-2-23
    发表于 2023-2-7 10:02:35 | 显示全部楼层
    很详细,cool
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 21:19
  • 签到天数: 1210 天

    [LV.10]以坛为家III

    22

    主题

    4763

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8083

    活跃会员

    最后登录
    2024-4-26
    发表于 2023-2-7 10:38:16 | 显示全部楼层
    666,学习一下,这个很有用
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 15:47 , Processed in 0.123978 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表