組込/ハードウェア

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

Eclipseをnpm、xgmでインストールする手順を見つけたのでやってみました。

ついでにSTMマイコンのデバッグもやってみました。

この記事で解決できること

  • Eclipseをnpm、xgmでインストールする手順が分かる。

関連記事

【MCUXpresso】NXP製マイコンの開発環境(LPCXpresso1104編)

【マイコン】NXP(Kinetis)のマイコン評価ボードFRDM-KL25Zの使い方

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

【マイコン】STM32F446 Nucleo-64を動かした

【マイコン】C-FIRSTを試してみた

ひとりごと

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をインストールする。

 

②xPack package manager (xpm)

 

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

 command
> npm install --global xpm

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

 command
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をインストール。

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

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

 command
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とか)をインストール。

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

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

 command
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をインストール。

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

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

 command
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をインストール。

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

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

 command
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の環境を比較する。

基板はSTMを使った。

これが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でデバッグするのは分かった感じ。

 

関連記事

【MCUXpresso】NXP製マイコンの開発環境(LPCXpresso1104編)

【マイコン】NXP(Kinetis)のマイコン評価ボードFRDM-KL25Zの使い方

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

【マイコン】STM32F446 Nucleo-64を動かした

【マイコン】C-FIRSTを試してみた

  • この記事を書いた人
  • 最新記事

ペイヴメント

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

-組込/ハードウェア

Copyright© ペイヴメントのエンジニア塾 , 2020 All Rights Reserved.