相信大家对MCUXpresso IDE并不陌生,没少和这款IDE打交道来进行工程的构建、调试等,不过,小编在这里要问大家一个问题,你们平时是不是都是调试自带的SDK例程,没有单独调试过其他工具链所构建的应用镜像呢?反正小编,的确不曾这样干过,那么MCUXpresso到底行不行呢?请大家跟着小编来一窥究竟。
不熟悉MCUXpresso的朋友更应该试试。
在正式开始之前,我们需要对我们的MCUXPresso进行一点小小的更新,需要安装一个小插件,依次点击Help-》Eclipse Marketplace,搜索Eclipse Embedded C/C++,点击安装。如下图所示:
那么为啥这个小插件能这么神奇呢?我们先来看段英文原版介绍:Eclipse Embedded CDT is an open source project that includes a family of Eclipse plug-ins and tools for multi-platform embedded cross (Arm and RISC-V) development, based on GNU toolchains. the Eclipse Embedded CDT plug-ins allow to create, build, debug and in general to manage Arm & RISC-V projects (executables and static/shared libraries, in both 32 and 64-bit versions) with the Eclipse framework (currently tested up to Eclipse 4.18, 2020-12). The plug-ins run on Windows, macOS and GNU/Linux.
首先,我知道MCUXpresso是基于Eclipse CDT开发的(不用问我怎么知道的),从上面这段画我们就知道了这个小插件是专门用于Eclipse CDT平台,来调试多平台嵌入式设备的。
可能有朋友会问了,真有这么神奇吗?让我们眼见为实,当安装完这个插件后,我们的MCUXpresso会发生一些小变化,尤其是在Debug Configuration选项框,先来看看原始的样子:
安装那个插件后,这是最新的样子,会多出一些选项:
现在就来敲黑板划重点了,为啥非要安装这个插件呢?我们的MCUXPresso本身就支持调试嵌入式代码啊,为啥还要多此一举呢?
这里我们以使用SEGGER J-Link进行调试为例,结合具体操作步骤进行说明。
首先是导入我们的镜像文件,这里以hello_world.axf镜像文件为例:
1)点击File->Import,在弹出的页面选择C/C++ Executable, 之后点击Next:
2) 选择我们想要调试的镜像文件,这里的Select binary parser按照默认选择Elf Parser即可,点击Next:
3)工程配置,生成调试配置文件,这里要注意一定要选择GDB SEGGERJ-Link Debugging,细心的朋友肯定已经看出来了,这个就是我们安装完Eclipse Embedded CDT插件之后更新出来的新选项,也是调试成功的关键。最后点击Finish即可完成工程创建。
而如果这里按照以前的习惯选择了GDB SEGGER Interface Debugging的话,会弹出下面这个提示,导致调试失败。
这里小编先大胆的猜测一下,我们用上述方式所导入创建的工程并不是MCUXpresso默认的工程形式,而是默认的Eclipse工程,这样的话,就会出现配置不兼容问题,导致调试失败。而也正是因为这一点,小编在开头才让大家去安装我们的Eclipse Embedded CDT插件。
通过以上步骤,我们的工程就创建完成了,距离调试还差最后一步,那就是我们的Debug Configuration,依次点击Run->Debug Configurations,弹出对话框如图所示,我们需要做的是填入我们的设备名称,并添加我们的调试工具路径,例如这里我们使用arm-none-eabi-gdb进行调试,这里就需要添加其可执行文件的完整路径:
配置好后,直接点击Debug即可开始调试我们的代码,开心ing:
经过小编的实地考察,最终为我们的MCUXpresso正名,通过安装扩展插件,它是可以单独进行镜像的调试的。
不过,需要注意的是,我们要保证完整的源码树路径在我们的本机中,不然,可能看不到熟悉的C代码,只能在汇编中徜徉了。
来源:恩智浦MCU加油站
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。