如何結合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

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…"

直接從Embedded C/C++ v6.x Updates - https://download.eclipse.org/embed-cdt/updates/v6/ 選擇最新版本的插件,然後"Next"。

如果沒有你要得這個選項,你可以Add增加Repository

按照自己的需求選擇安裝。

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%)"

記住以上操作只是安裝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
The xPack QEMU Arm project 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.


以上工具包Eclipse 可提供直接下載,下載鏈接如下:
xpack-windows-build-tools-4.2.1-2-win32-x64.zip
xpack-arm-none-eabi-gcc-10.2.1-1.1-win32-x64.zip
xpack-riscv-none-embed-gcc-10.1.0-1.1-win32-x64.zip
xpack-openocd-0.11.0-1-win32-x64.zip
xpack-qemu-arm-2.8.0-12-win32-x64.zip

直接將這些壓縮包解壓到 C:/Users/wezhu/AppData/Roaming/xPacks/ 這個是我對應的安裝目錄,因爲我的C盤夠用懶得改目錄了。其實你可以自行選擇其他目錄安裝,但是下面的配置路徑你得改成和你解壓的路徑一直。

你可以通過以下方式檢查Eclipse plug-ins是否安裝成功, 然後看對應的路徑下有沒有相關工具文件?
xPack Windows Build Tools

xPack GNU Arm Embedded GCC

xPack GNU RISC-V Embedded GCC

xPack OpenOCD

xPack QEMU Arm

芯片CMSIS Pack包安裝(看官方文檔我走挺多彎路,下面步驟幫大家少走彎路)
通過菜單Window --> Perference --> C/C++ --> MCU Package

到對應的目錄下去找,有沒有文件存在。需要在線手動安裝。選擇Make the CMSIS Packs perspective visible,然後Update the CMSIS packs definitions

等待Refresh all packs from all repositories.因爲是從Arm/Keil網站去下載相應的支持芯片的列表。比較費時我大概花了半個多小時。

下載完後窗口列表會發生變化如下:

其實不用都下載,用到哪個芯片下載哪個芯片CMSIS包。因爲CMSIS包裏面沒有我需要的NXP S32K3系列的芯片,所以我選擇了ARM CMSIS包。

我手上有三種STM32的開發板,所以我還選擇安裝STMicroelectronics的STM32F0/F2/F4/F7 Series,

下面我們開始創建個Cortex M的工程:

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

C Project中填寫工程項目名稱,選擇 Hello World Arm Cortex-M C/C++ Project後,Next

設置目標處理器配置, Next。

GNU Arm Cross Toolchain 交叉編譯鏈路徑配置, Finish。

工程生成後先編譯一下工程。Project --> Build Project

然後在Run --> Debug Configurations…中,選擇GDB OpenOCD Debugging修改相應的配置屬性。

首先替換Main --> C/C++ Application 爲你板子裏的版本ELF文件。
然後修改Debugger --> OpenOCD Setup --> GDB Client Setup
確保OpenOCD 路徑和配置正確,確保GDB 路徑正確。前面我們說到你可以解壓到其他目錄。這裏路徑必須和你解壓的目錄保持一致。

這裏的ftdi_ft2232d.cfg和nxp_s32k3x4.cfg我們在如何使用FT2232H適配器和開源調式工具OpenOCD對ARM Cortex M系列MCU進行SWD接口調試?詳細提到過。


修改Startup --> Load Symbols and Executable --> Apply --> Debug.
因爲調試工具不支持芯片內部flash燒寫,所以我們不許加載flash裏的可執行文件。所以 Load executable 我們不需要勾選,不然會報錯。
一串log後,我們進入到Cortex M7 reset後的第一條指令Reset_Handler。

你可以在線可視化調試代碼了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章