組込/ハードウェア

【マイコン】Eclipseをnpm、xgmでインストールしてみた

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です。

エンジニア
エンジニア
Eclipseをnpm、xgmでインストールする手順を知りたい。
EclipseでSTMマイコンのデバッグをやってみたい。

ひとりごと

Eclipse・CDT・OpenOCD・GDB server…と、いろいろややこしいです。
英語ページだと結局面倒になってやらなくなるため
日本語で紹介しているページを探したところ、
How to install GNU MCU Eclipse?
を日本語で説明している
WindowsでEclipse+CDTにGNU MCU Eclipseプラグインを入れて環境構築
を発見。
探していたのはコレです。

インストール(概要)

この順番でインストールします。

①Node.js (npm)
②xPack package manager (xpm)
③ARM Toolchain (RISC-V Toolchain)
④Windows Build Tools
⑤OpenOCD
⑥QEMU
⑦Eclipse & CDT

※すでにEclipse・CDTを持ってる人は
GNU MCU Eclipse プラグインを入れればよいみたいです。

インストール(詳細)

①Node.js (npm)

この記事を見てNode.jsをインストールします。
【初心者向け】Node.jsのインストールと簡易Webサーバの実験

②xPack package manager (xpm)

npmコマンドでxpmをインストール。

> npm install –global xpm

こんなメッセージが出ます。

C:\Users\pavement1234\AppData\Roaming\npm\xpm -> C:\Users\pavement1234\AppData\Roaming\npm\node_modules\xpm\bin\xpm.js
+ xpm@0.5.0
added 262 packages from 147 contributors in 28.261s

③ARM Toolchain (RISC-V Toolchain)

xpmコマンドでARM toolchainをインストール。

> xpm install –global @gnu-mcu-eclipse/arm-none-eabi-gcc

こんなメッセージが出ます。

xPack manager – install package(s)

Processing @gnu-mcu-eclipse/arm-none-eabi-gcc@8.2.1-1.4.1…
Installing globally in ‘C:\Users\pavement1234\AppData\Roaming\xPacks\@gnu-mcu-eclipse\arm-none-eabi-gcc\8.2.1-1.4.1’…
Downloading https://github.com/gnu-mcu-eclipse/arm-none-eabi-gcc/releases/download/v8.2.1-1.4/gnu-mcu-eclipse-arm-none-eabi-gcc-8.2.1-1.4-20190214-0604-win64.zip…

3208 files extracted.

‘xpm install’ completed in 115.879 sec.

※RISC-VをインストールするのでもOKみたい。

> xpm install –global @gnu-mcu-eclipse/riscv-none-gcc

④Windows Build Tools

xpmコマンドでビルドツール(makeとか)をインストール。

xpm install –global @gnu-mcu-eclipse/windows-build-tools

こんなメッセージが出ます。

xPack manager – install package(s)

Processing @gnu-mcu-eclipse/windows-build-tools@2.11.1-1…
Installing globally in ‘C:\Users\pavement1234\AppData\Roaming\xPacks\@gnu-mcu-eclipse\windows-build-tools\2.11.1-1’…
Downloading https://github.com/gnu-mcu-eclipse/windows-build-tools/releases/download/v2.11-20180428/gnu-mcu-eclipse-build-tools-2.11-20180428-1604-win64.zip…
Extracting ‘gnu-mcu-eclipse-build-tools-2.11-20180428-1604-win64.zip’…
42 files extracted.

‘xpm install’ completed in 8.623 sec.

⑤OpenOCD

xpmコマンドでOpenOCDをインストール。

xpm install –global @gnu-mcu-eclipse/openocd

こんなメッセージが出ます。

xPack manager – install package(s)

Processing @gnu-mcu-eclipse/openocd@0.10.0-11.1…
Installing globally in ‘C:\Users\pavement1234\AppData\Roaming\xPacks\@gnu-mcu-eclipse\openocd\0.10.0-11.1’…
Downloading https://github.com/gnu-mcu-eclipse/openocd/releases/download/v0.10.0-11-20190118/gnu-mcu-eclipse-openocd-0.10.0-11-20190118-1134-win64.zip…
Extracting ‘gnu-mcu-eclipse-openocd-0.10.0-11-20190118-1134-win64.zip’…
828 files extracted.

‘xpm install’ completed in 10.822 sec.

⑥QEMU

xpmコマンドでQEMUをインストール。

xpm install –global @gnu-mcu-eclipse/qemu

こんなメッセージが出ます。

xPack manager – install package(s)

Processing @gnu-mcu-eclipse/qemu@2.8.0-4.1…
Installing globally in ‘C:\Users\pavement1234\AppData\Roaming\xPacks\@gnu-mcu-eclipse\qemu\2.8.0-4.1’…
Downloading https://github.com/gnu-mcu-eclipse/qemu/releases/download/v2.8.0-4-20190211/gnu-mcu-eclipse-qemu-2.8.0-4-20190211-0633-win64.zip…
Extracting ‘gnu-mcu-eclipse-qemu-2.8.0-4-20190211-0633-win64.zip’…
164 files extracted.

‘xpm install’ completed in 15.989 sec.

⑦Eclipse & CDT

GNU MCU Eclipseからダウンロード
公式ページからもダウンロードできますが、
プラグインを自分で足せる人向けみたいです)。

ZIP展開して、eclipseフォルダをCドライブ直下に置きました。
eclipse.exeを実行したら
Java was started but returned exit coce=13というエラーが発生。
どうもJDKとJREのバージョンが合ってないようです。

JREJDKをインストール後、
再びeclipse.exeを実行したところ無事に起動しました
カッコいい。

ワークスペースのディレクトリを選択。

起動画面。

J-Linkを挿してみる

J-Link eduを数年前に購入し眠らせてたので
USB接続してみたところ、認識しました。

STM32ボードはあるのですが、
J-Linkがささりません(20ピンJTAGポートではない)ので
今回J-Linkの出番は無さそうです。

xpmで各種プラグインがどこにインストールされたのか?

こんな感じになってました。
パスさえ分かればなんとかなりそうです。

C:\Users\<Windowsログインユーザ名>\AppData\Roaming\xPacks\@gnu-mcu-eclipse
├─arm-none-eabi-gcc
├─openocd
├─qemu
└─windows-build-tools

早速デバッグ

以前構築したPleiadesの環境とnpm、xpmの環境を比較します。
【Eclipse】無料で使える統合開発環境のインストール方法(Pleiades All In One)

基板はSTMを使いました。
【マイコン】STM32F446 Nucleo-64を動かした

これがPleiadesの設定。

次にnpm、xpmで作った環境。
こっちのが設定箇所が多いです。

実行時のログはこんな感じです
(Pleiadesの記事にログの記載はしていませんが、だいたい同じでした)。

GNU MCU Eclipse 64-bit Open On-Chip Debugger 0.10.0+dev-00462-gdd1d90111 (2019-01-18-11:42)
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 MCU Eclipse
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 2000 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK V2J32M22 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.271579
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections
Info : accepting ‘gdb’ connection on tcp/3333
Info : device id = 0x10006421
Info : flash size = 512kbytes
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
adapter speed: 4000 kHz
semihosting is enabled
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000, semihosting
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
adapter speed: 4000 kHz
Info : Padding image section 0 at 0x0800044c with 4 bytes
Info : Padding image section 1 at 0x0800212f with 1 bytes
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000044 msp: 0x20020000, semihosting
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002f4 msp: 0x20020000, semihosting
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
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
Hello ARM World!
System clock: 168000000 Hz
Second 1
Second 2
Second 3
Second 4
Second 5
Second 6
Second 7
Info : dropped ‘gdb’ connection

「実行」してみる

これがPleiades。

これがnpm、xpmで作った環境。
Pleiadesとほぼ一緒です。

ログはこんな感じ。
これも大体一緒です。

GNU MCU Eclipse 64-bit Open On-Chip Debugger 0.10.0+dev-00462-gdd1d90111 (2019-01-18-11:42)
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 : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 2000 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK V2J32M22 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.274737
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections

まとめ

とりあえずSTMマイコンをOpenOCD+gdbでデバッグするのは分かった感じです。

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!