Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
MicroPython
RT-Thread一般讨论
【NXP】LPC55S69-RT-Thread Micropython移植日志
发布于 2023-02-06 19:56:40 浏览:313
订阅该版
[tocm] 快速上手LPC55S69请查看下面两篇博客: * [LPC55S69开发环境搭建](https://www.nxpic.org.cn/module/forum/thread-630377-1-1.html) * [LPC55S69初上手](https://www.nxpic.org.cn/module/forum/thread-630376-1-1.html) ## 简单了解Micropython * MicroPython 是 Python 3 编程语言的一种精简而高效的实现,它包含 Python 标准库的一个子集,并被优化为在微控制器和受限环境中运行。 * RT-Thread MicroPython 可以运行在任何搭载了 RT-Thread 操作系统并且有一定资源的嵌入式平台上。 * MicroPython 可以运行在有一定资源的开发板上,给你一个低层次的 Python 操作系统,可以用来控制各种电子系统。 * MicroPython 富有各种高级特性,比如交互式提示、任意精度整数、闭包函数、列表解析、生成器、异常处理等等。 * MicroPython 的目标是尽可能与普通 Python 兼容,使开发者能够轻松地将代码从桌面端转移到微控制器或嵌入式系统。程序可移植性很强,因为不需要考虑底层驱动,所以程序移植变得轻松和容易。 ## 开发环境 * VScode * Keil(v5.38.0.0) * RT-Thread MicroPython IDE(VScode插件搜索) * [ENV v1.4.0(可点击链接下载)](https://github.com/RT-Thread/env-windows/tree/v1.3.5) ## 初步移植 首先从RT-Thread官方仓库克隆master分支的仓库到本地 ![image-20230206105228123](https://img-blog.csdnimg.cn/img_convert/2a3ce7117b5c4d4703d58010ab9cbca8.png) 来到该目录:`.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk`,鼠标右键打开ENV工具,首先打开命令行菜单 ``` menuconfig ``` 使能添加`Micropython软件包`:`RT-Thread Online Packages--->launage packages--->Micropython` ![image-20230206110054882](https://img-blog.csdnimg.cn/img_convert/5f5d7e53516907ecf40f36af086f68be.png) `Heap size`修改为`20480`(初次分配20K,后续用户可根据需求修改),同时版本选择最新版(这里由于我选择版本时没有注意到最下方的latest版本,但是经测试并于多出的报错问题,相关的报错也可参考该文章) ![image-20230206110338978](https://img-blog.csdnimg.cn/img_convert/51382a8e65b5acd14869358c2afd7d2b.png) 进入`Hardware Module`,使能`machine uart` ![image-20230206110701904](https://img-blog.csdnimg.cn/img_convert/604d78c5e119e8ccf22909d2c3e2c36e.png) 同时我们回到主菜单界面,进入`Hardware Drives config--->on-chip Peripheral Drivers`,使能UART0和UART2 ![image-20230206110948958](https://img-blog.csdnimg.cn/img_convert/8445cb88831ea3e4b1b031dc6080d669.png) 由于后续需要在main线程中启动Micropython运行时环境,需要增大main线程的栈大小,这里我们选择栈大小修改为8k:回到主界面`RT-Thread Components--->set main thread stack size`修改为8192 ![image-20230206115128667](https://img-blog.csdnimg.cn/img_convert/d3144a5f9c39c98c54c6e2f0693c8078.png) 保存退出,并使用命令下载软件包: ``` pkgs --update ``` ![image-20230206115308233](https://img-blog.csdnimg.cn/img_convert/687127c68278443ac77fe9740da115f7.png) 使用ENV生成MDK工程: ``` scons --target=mdk5 ``` ![image-20230206115527689](https://img-blog.csdnimg.cn/img_convert/2a1a685ae694cf365529256f097a6169.png) ## BUG修复 双击打开`project.uvprojx`,进行编译 ![image-20230206115702684](https://img-blog.csdnimg.cn/img_convert/2c49c51c2df960806318505a9a8cbc19.png) 这里由于我们的keil工程为AC6版本(如果您的编译器版本为AC5,应该不需要修改,仅猜测),需要将软件包进行修改:`.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk\packages\micropython-v1.13.0\SConscript` ![image-20230206120429651](https://img-blog.csdnimg.cn/img_convert/8e7304f09dd0fd2e1dc91ffeb32a5ced.png) 切记此时需要回到bsp目录下,重新使用ENV工具生成MDK文件,然后再回到keil重新编译工程: ``` scons --target=mdk5 ``` 此时编译错误大大减少,只剩下三个错误: ![image-20230206120743700](https://img-blog.csdnimg.cn/img_convert/0be3ef4c2014a01f43415327bac7e697.png) 第一个错误需要在菜单中使能`Support legacy version for compatibility`(目前该问题以推送至官方仓库,已被修复此问题),并重新使用ENV生成MDK工程文件 ![image-20230206111143483](https://img-blog.csdnimg.cn/img_convert/97f94642701e572cb439b5ebf20f30ba.png) 重新编译继续有报错,这里我们找不到该函数的定义,先在头文件中进行外部声明 ![image-20230206121231129](https://img-blog.csdnimg.cn/img_convert/2be5c5d859b8b8f351777feb7857acff.png) 找到头文件所在位置:`.\rt-thread\bsp\lpc55sxx\lpc55s69_nxp_evk\packages\micropython-v1.13.0\port\mpgetcharport.h` ![image-20230206121521727](https://img-blog.csdnimg.cn/img_convert/3c4b09e81d7d674b76234cc473cd4a63.png) 此时就剩下最后一个错误啦,这里报错是说这个宏没有定义,通过翻阅RT-Thread库函数,确定该宏是文件系统的一个宏,且定义为整型3,具体作用可查看此[PR](https://github.com/RT-Thread/rt-thread/pull/2100),所以解决该问题就是重新定义一下`DFS_FD_OFFSET` ![image-20230206121656320](https://img-blog.csdnimg.cn/img_convert/9c901380354960ffd00a8b9f3b8fe968.png) ![image-20230206122027240](https://img-blog.csdnimg.cn/img_convert/0cfdcb62d58c3430de0653609ba41e68.png) 想不到编译之后居然还有一个错误,这里参考这位开发者的[issue](https://github.com/RT-Thread/rt-thread/issues/6657),将`list_mem();`注释(此处可能是个官方BUG,后续尝试修复) ![image-20230206122146590](https://img-blog.csdnimg.cn/img_convert/5c3ecfc20aeb4b2a8f9c028163367f69.png) ![image-20230206122748054](https://img-blog.csdnimg.cn/img_convert/63ae5ae832106f0f59bee1830769fb78.png) 最后发现,终于没有错误啦!!! ![image-20230206122817350](https://img-blog.csdnimg.cn/img_convert/035ec1686896a0ba69929c4c43cce29a.png) ## RT-Thread Micropython环境搭建 VScode扩展搜索下载RT-Thread Micropython ![image-20230206123632247](https://img-blog.csdnimg.cn/img_convert/113500efe142c0999f7ba51dfd2ecfd9.png) #### 创建工程 vscode下方导航栏点击`创建Micropython工程`,创建一个新的MicroPython工程,并选择工程存放路径 ![image-20230206151916502](https://img-blog.csdnimg.cn/img_convert/7cb10a2923c2f05bd1ffc7bf3b817d02.png) ![image-20230206152143031](https://img-blog.csdnimg.cn/img_convert/61280b0dd6e00a112499e4801ea8fff9.png) #### 上电测试Micropython 点击下方工具栏连接开发板,打开串口设备后点击复位,此时出现RT-Thread官方LOGO ![image-20230206152315131](https://img-blog.csdnimg.cn/img_convert/d5626a342a3f8b5954df680e3a717f92.png) ![](https://img-blog.csdnimg.cn/img_convert/2bdb340e09da709c133ed7817c9f3e34.png) #### 测试示例 LPC55S69也成功移植了RT-Thread的FINSH组件,点击TAB键可查看Finsh控制台命令,我们可以看到有一个python命令行 ![image-20230206154101713](https://img-blog.csdnimg.cn/img_convert/abdb29fe72ed189d14be8fc6ebd79dcd.png) ## Micropython测试 Finsh控制台输入python,转到python控制台,同时还支持`quit()`、`exit()`命令退回Finsh控制台 ![image-20230206154310678](https://img-blog.csdnimg.cn/img_convert/f28b67bdd1849ff166572cb2cacc7b51.png) 简单测试下micropython,下面使用python命令运行脚本时给了一个提示说未使能uos module ![image-20230206160622977](https://img-blog.csdnimg.cn/img_convert/0479fe6effb453f0c51f319a4f45b679.png) 打开图形化菜单进入该路径下:`RT-Thread online packages-->launage packages--->system module`,使能`uos:basic 'operating system' services ` 同时更新软件包,并使用env工具重新生成MDK,再进行编译下载,成功解决问题! ![image-20230206162718225](https://img-blog.csdnimg.cn/img_convert/978af3cb35a283a3f07ddaa1803d0a25.png) ## 结语 搭建好Micropython后,那么就可以自由发挥才能去创作自己的作品啦! ## 联系 * [Email :yifang.wangyq@foxmail.com](mailto:yifang.wangyq@foxmail.com) * [Github Address :https://github.com/kurisaW](https://github.com/kurisaW) * [My Website :https://kurisaw.github.io](https://kurisaw.github.io/)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
kurisaW
这家伙很懒,什么也没写!
文章
13
回答
4
被采纳
0
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
CAN总线
Hardfault
FinSH
USB
文件系统
RT-Thread
DMA
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
WIZnet_W5500
ota在线升级
cubemx
I2C
flash
UART
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
BSP
ADC
keil_MDK
socket
中断
编译报错
MicroPython
GD32
Debug
ulog
SDIO总线
msh
rt_mq_消息队列_msg_queue
C++_cpp
SFUD
本月问答贡献
xiaorui
20
个答案
3
次被采纳
Juggernaut
12
个答案
3
次被采纳
踩姑娘的小蘑菇
12
个答案
2
次被采纳
小小李sunny
10
个答案
2
次被采纳
crystal266
4
个答案
2
次被采纳
本月文章贡献
ZVML_9668
4
篇文章
6
次点赞
Lu_盼盼
4
篇文章
3
次点赞
Z_Y
3
篇文章
5
次点赞
ThinkCode
2
篇文章
2
次点赞
oxlm
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部