openocd调试Linux内核,如何结合Eclipse+OpenOCD+arm-none-eabi-gdb实现可视化在线调试ARM Cortex M7内核?...

传统的IDE功能强大,特别是调试功能,但是如今,其它软件的发展,大家感觉到传统的IDE用户交互、编辑界面、编码效率不够友好;或者为了降低成本,需要使用开源工具。于是,有人选择使用IDE用来调试,用其它编辑器编码(比如source insight 、notepad++、Vim等),来提高效率;或者使用其它的工具链来配合编辑器达到自制一个IDE的效果。还有人在Eclipse上使用GNU ARM Eclipse plug来简化一系列的操作,会帮助自动生成makefile,管理芯片包(现在使用的Keil的包),提供例示程序,以及提供编译、调试的一个框架,只要再安装一些必要的软件(工具链、build工具(比如make)、调试组件)(安装插件时不会一同安装,需要手动安装)就可以进行编译、调试。已经有人写了一篇用Eclipse开发stm32(GNU ARM Eclipse Plug-in)(编码+编译+下载+调试)。

我属于前者。我用source insight或者Vim编辑代码,用Cygwin+GCC+Makefile完成代码编译。最后使用Eclipse+OpenOCD+arm-none-eabi-gdb实现在线调试。我安装Eclipse走了挺多弯路,这里总结一下下载与安装步骤:

1.  下载Eclipse IDE for C/C++ Developers环境,到 https://www.eclipse.org/downloads/packages/ 找到Eclipse IDE for Embedded C/C++ Developers

78c1713272445878293ad08348bbbcda.png

2.  解压Eclipse, 下载GNU ARM Eclipse Plug-in最新版本

目前官方最新的版本 Embedded C/C++ v6.x Updates - https://download.eclipse.org/embed-cdt/updates/v6/

直接运行Eclipse,在help菜单下选择"Install New Software…"

8e6e819ba0897b538c289d37a8c00400.png

直接从Embedded C/C++ v6.x Updates -https://download.eclipse.org/embed-cdt/updates/v6/ 选择最新版本的插件,然后"Next"。

如果没有你要得这个选项,你可以Add增加Repository

4a305cefe6bfa727dfda0c83c85d6b5e.png

90f4b7f0620e26f10fb4468fe4c7813d.png

按照自己的需求选择安装。

1. Arm Cross Compiler Developer Resources 交叉编译链插件 xPack Windows Build Tools & xPack GNU Arm Embedded GCC

2. CMSIS Packs Developer Resources  芯片安装包插件 CMSIS Packs

3. GDB JTAG Debugging Developer Resources GDB调试插件 xPack GNU Arm Embedded GCC

4. OpenOCD Debugging Developer Resources  OpenOCD工具插件 xPack OpenOCD

5. QEMU Debugging Developer Resources 仿真调试工具插件 xPack QEMU Arm

6. Cortex-M Project 因为我使用的Cortex M7的芯片,所以我选择了Cortex-M工程模板

等待"Installing Software:(100%)"

5ab7dfbcb76139679ff6011493a8fc49.png

记住以上操作只是安装Eclipse插件,而不是软件包。这些插件只是为了你能在Window --> Perference窗口下看到相应的工具配置栏。

3.   工具包安装

下面是安装 Eclipse plug-ins后,需要安装如下工具。

• xPack Windows Build Tools

The xPack Windows Build Tools project includes the additional tools required to perform builds on Windows (make & rm).

• xPack GNU Arm Embedded GCC

The xPack GNU Arm Embedded GCC project is an alternate binary distribution that complements the official GNU Arm Embedded Toolchain maintained by Arm. Binaries for Windows, macOS and GNU/Linux are available.

• xPack GNU RISC-V Embedded GCC

The xPack GNU RISC-V Embedded GCC project is a new distribution of the bare metal version of RISC-V GCC, maintained by SiFive. Binaries for Windows, macOS and GNU/Linux are available.

• xPack OpenOCD

The xPack OpenOCD project is a new distribution of OpenOCD, customised for a better/more convenient integration with the OpenOCD Debugging plug-in. Binaries for Windows, macOS and GNU/Linux are available.

•xPack QEMU Arm

ThexPack QEMU Armproject is a fork of QEMU(an open source machine emulator), intended to provide support for Cortex-M emulation in Eclipse Embedded CDT. Binaries for Windows, macOS and GNU/Linux are available.

直接将这些压缩包解压到 C:/Users/wezhu/AppData/Roaming/xPacks/这个是我对应的安装目录,因为我的C盘够用懒得改目录了。其实你可以自行选择其他目录安装,但是下面的配置路径你得改成和你解压的路径一直。

你可以通过以下方式检查Eclipse plug-ins是否安装成功, 然后看对应的路径下有没有相关工具文件?

xPack Windows Build Tools

51bb599d98580bcb9293f4b594580af5.png

xPack GNU Arm Embedded GCC

226032a3af2650a7810f990e14d4482e.png

xPack GNU RISC-V Embedded GCC

cd1818630c4d04d3c2625babfeba52be.png

xPack OpenOCD

4d3b3917e275d0aa0ae6875084ea7219.png

xPack QEMU Arm

539f703898c189f8009fe63544f6f5c3.png

芯片CMSIS Pack包安装(看官方文档我走挺多弯路,下面步骤帮大家少走弯路)

通过菜单Window --> Perference --> C/C++ --> MCU Package

6d8ea3a83be064916ce7c151c37a05f5.png

到对应的目录下去找,有没有文件存在。需要在线手动安装。选择Make the CMSIS Packs perspective visible,然后Update the CMSIS packs definitions

b6395576b197f3291294fd1d27c7af6a.png

等待Refresh all packs from all repositories.因为是从Arm/Keil网站去下载相应的支持芯片的列表。比较费时我大概花了半个多小时。

b329682fca696652dd2d4bdc6abb1bbe.png

下载完后窗口列表会发生变化如下:

1593bd339d64ca3d6e532625d960ad63.png

其实不用都下载,用到哪个芯片下载哪个芯片CMSIS包。因为CMSIS包里面没有我需要的NXP S32K3系列的芯片,所以我选择了ARM CMSIS包。

04a1e07f3b8dac112403b435b0bd5941.png

我手上有三种STM32的开发板,所以我还选择安装STMicroelectronics的STM32F0/F2/F4/F7 Series,

6a0be4b4329a03b05dc86ae7b5682f8a.png

下面我们开始创建个Cortex M的工程:

File --> New --> C/C++ Project --> All --> C managed Build

77f127b1e16f7da63528246118bfb046.png

C Project中填写工程项目名称,选择 Hello World Arm Cortex-M C/C++ Project后,Next

9efbaf47292ddf03854613fd0b5240f9.png

设置目标处理器配置, Next。

e772e8f9fdfd18ff1b0aa28b236a4166.png

5bcd01d22e340458b3e5ee9b3d281604.png

GNU Arm Cross Toolchain 交叉编译链路径配置, Finish。

0770f1c9c523e42c59d64089abe80e2b.png

工程生成后先编译一下工程。Project --> Build Project

dc15cb1c3c56992e40655ce5a9517024.png

然后在Run --> Debug Configurations…中,选择GDB OpenOCD Debugging修改相应的配置属性。

509903f4ac7131da320d903be57f9b52.png

首先替换Main --> C/C++ Application 为你板子里的版本ELF文件。

然后修改Debugger --> OpenOCD Setup --> GDB Client Setup

确保OpenOCD 路径和配置正确,确保GDB 路径正确。前面我们说到你可以解压到其他目录。这里路径必须和你解压的目录保持一致。

049210f63f487499b886a675810e278f.png

修改Startup --> Load Symbols and Executable --> Apply --> Debug.

因为调试工具不支持芯片内部flash烧写,所以我们不许加载flash里的可执行文件。所以 Load executable 我们不需要勾选,不然会报错。

一串log后,我们进入到Cortex M7 reset后的第一条指令Reset_Handler。

03d4bcb18037251f8e567f012cacdc00.png

你可以在线可视化调试代码了。

2fa2bc95cc57c302117448f5a1b1ad8c.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值