MCUXPresso 中关于 Python 的调用说明

  • 概述

在使用 MCUXPresso 进行芯片开始时,不知道大家会不会出现一个情况?正正常常地从官网上下完了 SDK,顺顺利利地安装到 MCUXPresso 中导入例程然后一口气编译下载,结果在开发板上一看 log ,啥信息都没有,回去查了下编译 log 发现也没有提示 Warning 跟 Error。接下来,我们就来分析一下其中一种可能会导致这种情况的原因——Python 的版本以及调用问题。

  • 环境流程分析说明

在上述情况中,有一种常见的原因是 Python 的版本问题。这个时候就有人会提问了,我现在编译的是 C 语言,为什么会涉及到 Python 的版本问题,而且我也没看到有编译错误提示啊?是的,这个问题问的好。下面我们就以 QN9090 的 SDK 为例子说明一下。首先下图是正常编译后,但是烧录后没有运行起来的编译信息:



下图是正常编译,并且烧录后能够正常运行的编译信息。



是的,相信大家都能看到,是在 Finish Building Target 之后,进行 Performing post-build steps 的步骤时有差别了。可以看到第一个编译信息会调用执行 py 文件时报错了,但是还是生成了一个 Bin 文件。

接下来,我们再看用对比软件来对比一下两个生成的 bin 文件的差异:


可以看在,ok 的 bin 文件跟 Fail 的 bin 文件中的差异就是在 0x1D 到 0x2C 中数据有出现差异,而这部分就是关于中断向量表的部分数据。而在 《Cortex-M3&M4 权威指南》中指出这部分是没有被用到的数据段,如下图所示:


其中添加的数据是什么咧?我们可以查看这个 post-build steps 中关于调用的 py 文件来了解一下,其中位置在 workplace 中对应例程中的 scripts 的文件中。通过 py 文件的查看我们可以知道这个 py 文件通过 argparse 标准库建立了一个命令行程序,我们直接用 CMD 指令查看这个 py 的(--help)说明。





可以看到除了输入文件是必须的,其他功能是可选的。并且我们在例程的特性中找到 post-build steps 的操作,如下图所示:



同时,我们回看一下之前的编译信息,只看到是指填写了输入文件,并没有其他操作。



所以现在相当于是在编译出来的文件中的中断向量表中没有用到的数据段中添加了 Signature ,checksum 等数据了,具体内容我们就先按下不表了。

这个以后我们可以再另外在新的博文中进行说明。

  • 解决方法。

在分析了整个流程中下来,其实针对这个问题的解决方法很简答,主要就是在进行 post-build steps 的过程中,原厂编写的 py 文件时使用 python 版本与我们编译环境中的 python 不一致导致的。具体修改方法我们可以通过修改电脑的环境变量。



哪一个版本在最前面就是使用哪一个版本的 python。具体可以通过 cmd 命令输入 python –-version 指令来查看当前使用的版本。记得在修改完环境变量后重新打开 MCUXPresso 进行编译时才能生效。

  • 总结

在本文中虽然最后的解决方法十分简单,就是修改对应的 python 版本就可以了,但是我们可以通过这个问题作为引子一步步的查看到我们平时不会去注意到的内容。虽然到达山顶的方法很便捷,不如欣赏一下路上的风景,这不好吗?

  • 参考文档

《ARM Cortex-M3与Cortex-M4权威指南》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论