EclipseベースのC/C++の開発環境について色々調べる中でPleiadesに出会いました。

  • Pleiadesとの出会い
前回【J-Link】でマイコンデバッグしたいのでEclipseをインストールしてみたを書きましたが、npm、xpmを使うため、とあるproxy環境でうまく行かず断念。オールインワンのやつを探したところEclipseとOpenOCDでSTM32(ARM)マイコン開発にPleiadesというEclipseが紹介されてました。次はこれを試してみます。
  • インストール
①ダウンロード
Pleiades All in One ダウンロードから最新版(現在、2019-03)をクリック。
00
「Windows 64bit」→「C/C++」→「Full Edition」を選択(青枠)。
11

②ZIP解凍
「pleiades-2019-03-cpp-win-64bit-jre_20190324.zip」を紹介ページに倣って「C:\dev\ARM」に解凍。
C:\dev\ARM\pleiades
├─eclipse
└─workspace
③起動
オールインワンなのでアッサリ起動。
1
ワークスペースはデフォルトのままでOK。
2

④プラグインの追加
「ヘルプ」→「新規ソフトウェアのインストール」→「追加」で以下の子画面から以下のデータを入力し、子画面の「追加」をクリック。
Name    : GNU ARM Eclipse Plug-ins
Location: http://gnuarmeclipse.sourceforge.net/updates
3

「GNU ARM C/C++ Cross Development Tools」のチェックをONにして「次へ」をクリック。
1

「次へ」をクリック。
1

「使用条件の状況に同意します」を選択し「完了」をクリック。これでプラグインが追加されます。
1

⑤toolchainのインストール

Gnu Arm Embedded Toolchainよりgcc-arm-none-eabi-5_2-2015q4-20151219-win32.zipをダウンロード。ZIPを展開し以下のフォルダに配置。(ARM用のコンパイラ、アセンブラ、リンカなど)
C:\dev\ARM\Toolchain
├─arm-none-eabi
├─bin
├─lib
└─share
⑥Build Toolのインストール

GNU ARM Eclipse Windows Build Tools(github)よりgnuarmeclipse-build-tools-win32-2.6-201507152002-setup.exeをダウンロード。インストーラを実行し以下のフォルダにインストール。(make、rmなど)
C:\dev\ARM\BuildTools
├─bin
├─gnuarmeclipse
└─license
⑦OpenOCDのインストール

GNU ARM Eclipse OpenOCD(github)よりgnuarmeclipse-openocd-win32-0.10.0-201510281129-dev-setup.exeをダウンロード。インストーラを実行し以下のフォルダにインストール。(GDBサーバ、プログラマなど。scriptsフォルダにcfgファイルが格納されている。)
C:\dev\ARM\OpenOCD
├─bin
...
└─scripts
⑧QEMUのインストール

gnu-mcu-eclipse/qemu(GitHub)よりgnu-mcu-eclipse-qemu-2.8.0-4-20190211-0633-win64.zip
をダウンロード。ZIPを展開し以下のフォルダに配置。(プロセッサエミュレータ)
C:\dev\ARM\QEMU
├─bin
├─devices
├─doc
├─gnu-mcu-eclipse
├─graphics
└─keymaps

「ウィンドウ」→「設定」→「実行/デバッグ」→「QEMU」→「フォルダー」を「C:\dev\ARM\QEMU\bin」に設定します。(qemu-system-gnuarmeclipse.exeが見つけられるようにする)
2


⑨SEGGER J-Linkのインストール

SEGGERから「Download」→「J-Link/J-Trace」を選択。 「J-Link Software and Documentation Pack」の「Click for downloads」をクリック。
sssss2

Windows版をダウンロード。
3

「JLink_Windows_V644f.exe」をダブルクリック。インストール先フォルダを「C:\dev\ARM\J-Link」にすると「C:\dev\ARM\J-Link\JLink_V644f」となります。で「Install」をクリック。
3

「ウィンドウ」→「設定」→「実行/デバッグ」→「SEGGER J-Link」→「フォルダー」を「C:\dev\ARM\J-Link\JLink_V644f」に設定します。(JLinkGDBServerCL.exeが見つけられるようにする)
3

  • で、結局マイコンデバッグするために何すればよいの?
【STM32F446】Nucleo-64を動かしてみましたで使ったボードを今回は試してみます
IMG_20190416_062825

「ファイル」→「新規」→「C/C++プロジェクト」を選択。「C 管理ビルド」を選択して「次へ」をクリック。
2

KinetisとSTMのサンプルが入ってるみたいです。今回は「STM32F4xx C/C++ Project」を選択。プロジェクト名をテキトーに「test」として「次へ」をクリック。
4

「Chip Family」を「STM32F446xx」にして「次へ」をクリック。
4

「次へ」をクリック。
4

「次へ」をクリック。
4

ツールチェーンのパスが空なので、さっきインストールした「C:\dev\ARM\Toolchain\bin」を指定し「完了」をクリック。
4

こんな感じになるので「プロジェクト」→「すべてビルド」をクリック。
a

ビルドか成功しました。
b

「実行」→「デバッグの構成」をクリック。「GDB OpenOCD Debugging」をダブルクリックすると…。
b

画面が右に広がって「test Debug」という構成が生成されるので「デバッグ」をクリックしてみる。
c

なんかエラー出た。
d

「実行」→「デバッグの構成」→「GDB OpenOCD Debugging」→「test Debug」→「デバッガー」タブを開く。

「OpenOCD Setup」→「実行可能ファイル」に「C:\dev\ARM\OpenOCD\bin\openocd.exe」を入れる。
「OpenOCD Setup」→「Config Options」に「-s "C:\dev\ARM\OpenOCD\\scripts" -f board/st_nucleo_f4.cfg」を入れる。
「GDB Client Setup」→「実行可能ファイル」に「C:\dev\ARM\Toolchain\bin\arm-none-eabi-gdb.exe」を入れる。

そして再び「デバッグ」をクリック。
y


パースペクティブがなんたらというメッセージが出て、たぶん「OK」を押しました。(たぶん、自動でデバッグ画面に切り替える?って聞かれたのだと思う)。無事main関数でブレーク。「実行」→「再開」をクリックするとコンソールに黒字の「Hello ARM World!」が出ました。
y

コンソールログはこんな感じでした。
GNU ARM Eclipse 32-bits Open On-Chip Debugger 0.10.0-dev-00141-g09aeb96-dirty (2015-10-28-11:49)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Started by GNU ARM Eclipse
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v32 API v2 SWIM v22 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.270573
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x10006421
Info : flash size = 512kbytes
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000
semihosting is enabled
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000, semihosting
Info : Padding image section 0 with 3 bytes
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000042 msp: 0x20020000, semihosting
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000, semihosting
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000, semihosting
===== arm v7m registers
(0) r0 (/32): 0x00000000
(1) r1 (/32): 0x00000000
(2) r2 (/32): 0x00000000
(3) r3 (/32): 0x00000000
(4) r4 (/32): 0x00000000
(5) r5 (/32): 0x00000000
(6) r6 (/32): 0x00000000
(7) r7 (/32): 0x00000000
(8) r8 (/32): 0x00000000
(9) r9 (/32): 0x00000000
(10) r10 (/32): 0x00000000
(11) r11 (/32): 0x00000000
(12) r12 (/32): 0x00000000
(13) sp (/32): 0x20020000
(14) lr (/32): 0xFFFFFFFF
(15) pc (/32): 0x080002F4
(16) xPSR (/32): 0x01000000
(17) msp (/32): 0x20020000
(18) psp (/32): 0x00000000
(19) primask (/1): 0x00
(20) basepri (/8): 0x00
(21) faultmask (/1): 0x00
(22) control (/2): 0x00
(23) d0 (/64): 0x0000000000000000
(24) d1 (/64): 0x0000000000000000
(25) d2 (/64): 0x0000000000000000
(26) d3 (/64): 0x0000000000000000
(27) d4 (/64): 0x0000000000000000
(28) d5 (/64): 0x0000000000000000
(29) d6 (/64): 0x0000000000000000
(30) d7 (/64): 0x0000000000000000
(31) d8 (/64): 0x0000000000000000
(32) d9 (/64): 0x0000000000000000
(33) d10 (/64): 0x0000000000000000
(34) d11 (/64): 0x0000000000000000
(35) d12 (/64): 0x0000000000000000
(36) d13 (/64): 0x0000000000000000
(37) d14 (/64): 0x0000000000000000
(38) d15 (/64): 0x0000000000000000
(39) fpscr (/32): 0x00000000
===== Cortex-M DWT registers
(40) dwt_ctrl (/32)
(41) dwt_cyccnt (/32)
(42) dwt_0_comp (/32)
(43) dwt_0_mask (/4)
(44) dwt_0_function (/32)
(45) dwt_1_comp (/32)
(46) dwt_1_mask (/4)
(47) dwt_1_function (/32)
(48) dwt_2_comp (/32)
(49) dwt_2_mask (/4)
(50) dwt_2_function (/32)
(51) dwt_3_comp (/32)
(52) dwt_3_mask (/4)
(53) dwt_3_function (/32)

Hello ARM World!
System clock: 168000000 Hz
Second 1
Second 2
Second 3
Second 4
Second 5
Second 6
Second 7
Second 8
Second 9
Second 10
Second 11
Second 12

次に単なる「実行」を試してみます。「実行」→「外部ツール」→「外部ツールの構成」をクリック。「新規構成」をダブルクリックし、以下を入力し「実行」。これもうまく行きました(LED=LD01が点滅)
名前:OpenOCD
メイン→ロケーション:C:\dev\ARM\OpenOCD\bin\openocd.exe
作業ディレクトリー:C:\dev\ARM\OpenOCD\scripts
引数:-s "C:\dev\ARM\OpenOCD\scripts" -f board/st_nucleo_f4.cfg
ログはこんな感じ。

GNU ARM Eclipse 32-bits Open On-Chip Debugger 0.10.0-dev-00141-g09aeb96-dirty (2015-10-28-11:49)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v32 API v2 SWIM v22 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.270573
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints

とりあえず、プログラムの実行とデバッグはできたみたいです。次はQEMUなど他のツールも試してみます。

続く。

スポンサードリンク