手把手教你用MCUXpresso开发Micropython工程(下)
来源:恩智浦MCU加油站 发布时间:2023-03-16 分享至微信

即使不玩Micropython,也可以参考本文,把Linux下基于Makefile的工程,导入MCUXpresso IDE,在Windows环境下进行开发。

书接上文。


六、下载安装Windows下的GCC

  1. 按照这个帖子下载安装Windows环境下的GCC:https://zhuanlan.zhihu.com/p/47935258
  2. 参照前一节的第3步骤,在project/properties/Environment的PATH中添加指向这个GCC的路径。


注:这个GCC是编译链接并生成在Windows环境下运行的exe文件,用于生成预编译的python代码;而不是产生在i.MX RT1021上运行的代码。

七、创建工程目标

完整的工程需要分别编译若干目标才能完成。

默认情况下,工程文件树中将不包含lib/tinyusb、lib/micropython-lib和lib/nxp_driver内的文件,如果是用git克隆整个工程,则需要创建一个子模块目标从github进行同步,本文假定读者是下载的zip文件解压得到文件树,因此暂时略过这部分。

建立板子的工程目标

1. 右键点击项目名称,Build Targets-->Create…
2. 建立编译目标:

3. 在github下载相应子模块,lib/tinyusb、lib/micropython-lib和lib/nxp_driver:

上图中,@后面的字符是相应版本号的信息,不同时间下载时有可能是其它值,不必理会。如果是下载的zip文件,则解压后还需要修改这个子模块的目录名,去掉后缀的版本号信息。
4. 在实质进入编译之前,还要拷贝extra_files\util\目录至C:\mpy下面,这里包含了几个仿Linux下的工具,在编译时需要用到。

5. 同时也要参照2.5节的第2步骤,把这个util目录添加到PATH中。

注:上述touch.cmd中只是简单地调用touch.py:

@echo off
python C:\mpy\extra_files\util\touch.py %1
那里是使用的绝对路径,如果你的路径和这个默认的设置不一样,则需要手动修改一下,指向你自己的目录。

八、编译项目工程

在编译之前,你需要保证系统里有python3的编译运行环境,并且是通过python3调用的,如果你的系统中是使用python.exe,则需要自己生成一个Shortcut,命名为python3并指向python.exe。

到此为止,可以开始编译目标工程了。在Project Explorer中右键点击项目名称,然后Build Targets,点击Build…,就会看到下图对话框,点击下面的Build按钮,即可在提示窗口看到编译的信息跳跃。

当编译到sdcard.c文件时,可能会见到下面这个报错信息(如果没此信息,可以跳过这步):

此时需要打开sdcard.c文件,找到报错的第205行,把那个多余的分号删除。

修改完成并保存后,再次从本节开始的步骤执行。

如果没有意外的话,过一段时间,将会得到如下信息:

这时可以恭喜你,已经十分接近成功了,至少已经成功地在MCUXpresso下编译链接相关工程,得到可执行文件firmware.elf(图中虚线框显示部分)。

九、拷贝内存配置信息

在下载可执行文件到板子上之前,还要设置好内存的配置信息。尝试从i.MX RT1020的SDK中,导入任意一个工程,例如Hello World工程,但是实际上不需要真正地导入这个工程,只是在导入中途,拷贝默认的内存配置信息表。在导入SDK例子工程时的最后一步,会出现如下画面:

此时点击“Export…”按钮,保存这个配置表到任意位置,随便起一个名字,例如RT1021mem.xml。

然后可以点击右下角的Cancel,中止导入工程。

接下来回到前面建立的工程,调出这个工程的配置页面,进到C/C++ Build/MCU settings页面,如下图:

首先在“SDK MCUs”栏中选中MIMXRT1021xxxxx,然后点击Import…导入刚才保存的那个描述文件RT1021mem.xml,同时因为目标板子没有SDRAM,需要删除与SDRAM相关的那两行描述,还要删除“Default LinkServer Flash Driver”框里的内容。

最后内存配置如下所示:


十、下载运行

到此为止,我们已经得到了elf可执行文件,也已经设置好了内存的配置信息,可以开始进行下载运行了。但是你很可能会出现以下画面,不必惊恐,只要在第2.7节的最后一步,正确地得到了firmware.elf,即可直接点击Proceed进行下载。

这个报错是由于一个不能执行的Linux命令导致,但不影响产生正确结果,所以可以忽略。当然如果还有其它错误,则还是需要退回,找出错误并修正才行。
成功下载后,调试指针应该停止在main()函数的第一行:
点击运行这个工程后,可以在Windows的设备管理器里看到新增了一个USB-COM端口,在这个端口上打开一个串口工具,例如我使用putty,即可得到micropython的REPL界面,进行各种操作了。
下图中的黄线标出的那一行,就是从第四节拷贝进来的mpconfigboard.h中提取的信息,生成的显示内容。
有了这一行,我们也可以清晰地知道编译的时间,以及相关工程和板子的对应关系了。

若要在电脑上阅读,可以进入恩智浦中文论坛查看本文
【全文完】


恩智浦MCU加油站


这是由恩智浦官方运营的公众号,着重为您推荐恩智浦MCU的产品信息、开发技巧、教程文档、培训课程等内容。


长按二维码,关注我们



END



更多恩智浦AI-IoT市场和产品信息,邀您同时关注“NXP客栈”微信公众号




NXP客栈


恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。





长按二维码,关注我们


[ 新闻来源:恩智浦MCU加油站,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!