Linux における Arm Mbed CLI と eclipse IDE 環境構築 (2020年版)


はじめに

Linuxにおいては「Mbed CLI」と「IDE環境(eclipse)」を構築する為のインストーラは存在しないため、マニュアルインストールになる。そこで、2020年版の環境構築方法をまとめておく。
※デバッグの為の OCD 設定には 「pyOCD」 と 「Open OCD」 があるが、pyOCDを使った方法で記載する。

前提条件・環境

  1. ubuntu 18.04
  2. ターゲットボード : NXP FRDM KL25Z
  3. DAP Link 0242 (OpenSDAv2.2) にターゲットボードOCD Firmware を更新済み。

Mbed CLI のインストールの流れ

  1. 「Mbed CLI」が必要とするツール類のインストール
  2. 「Mbed CLI」のインストール
  3. コンパイラー(GNU Arm Embedded Toolchain)のインストール
  4. 確認(サンプルのビルド)

1.「Mbed CLI」が必要とするツール類のインストール

Git

sudo apt install git

Mercurial

sudo apt install mercurial

※依存関係で python2.7 も 一緒にインストールされる

python pip

sudo apt install python-pip

2. 「Mbed CLI」のインストール

pip install mbed-cli

※mbed コマンドのパスを有効化する為ここで再起動

3.コンパイラー(GNU Arm Embedded Toolchain)のインストール

  • 以下をダウンロード

GNU Arm Embedded Toolchain: 6-2017-q2-update June 28, 2017
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

※2020年2月時点では、ツールチェーンバージョンは 6.0.0 以上 7.0.0 未満が推奨。
試しに、ツールチェーンバージョン 9.2.1で mbed compile を行った結果、 Warning で警告される。

[Warning] @,: Compiler version mismatch: Have 9.2.1; expected version >= 6.0.0 and < 7.0.0

※この時の mbed ツールのバージョンは「mbed --version」だと "1.10.2"

  • 適当なディレクトリを作成しコンパイラーを解凍する
mkdir -p ~/opt
tar -xvf ~/Downloads/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
  • システムパスにコンパイラパスを通す

.bashrcの編集

vi .bashrc

一番最後の行に以下を追加

export PATH=$PATH:$HOME/opt/gcc-arm-none-eabi-6-2017-q2-update/bin
  • パス設定の有効化
source .bashrc

※又は再起動

  • パスが通っている事の確認
arm-none-eabi-gcc --help

4. 確認(サンプルのビルド)

  • mbed-os-example-blinkyサンプルのダウンロード
mbed import https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-blinky
  • コンパイル
cd mbed-os-example-blinky/
mbed compile -m KL25Z -t GCC_ARM --profile debug

コンパイルが終わると以下のような結果となり、バイナリ(elfとbin)が生成される。

eclipse IDE のインストールの流れ

  1. JAVA ランタイムの導入
  2. GNU MCU Eclipse IDEのダウンロード
  3. サンプルのeclipse へのエクスポート(eclipse で GCC ARM でコンパイル実行する為の Makefileの作成)
  4. サンプルのビルド確認
  5. pyOCDのインストール
  6. udev rulesの設定
  7. pyOCDの動作確認
  8. eclipseの起動
  9. サンプルのインポート
  10. Debug Configureation
  11. Debugでのターゲット書き込みと起動

1. JAVA ランタイムの導入

sudo apt install default-jre

2. GNU MCU Eclipse IDEのダウンロード

  • 以下をダウンロード

GNU MCU Eclipse IDE for C/C++ Developers 2019-12 20200127
https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases/
20200127-1311-gnumcueclipse-4.7.2-2019-12-R-linux.gtk.x86_64.tar.gz

  • 適当なディレクトリに 「GNU MCU Eclipse IDE」 を解凍する
cd opt
tar -xvf ~/Downloads/20200127-1311-gnumcueclipse-4.7.2-2019-12-R-linux.gtk.x86_64.tar.gz

3. サンプルのeclipse へのエクスポート(eclipse で GCC ARM でコンパイル実行する為の Makefileの作成)

cd mbed-os-example-blinky/
mbed export -i eclipse_gcc_arm -m KL25Z --profile mbed-os/tools/profiles/debug.json

4.サンプルのビルド確認

make clean
make -j
  • コンパイルが開始する。
  • コンパイルが終わると以下のような結果となり、バイナリ(elfとbin)が生成される。

5. pyOCDのインストール

pip install pyocd

6. udev rulesの設定

※udev rules は既に pyOCD のリポジトリに有るサンプルを利用する。

cd ~/opt/
git clone https://github.com/mbedmicro/pyOCD.git
cd pyOCD/udev/
sudo cp *.rules /etc/udev/rules.d
  • 再起動又は以下コマンドにてudev rulesの反映
sudo udevadm control --reload
sudo udevadm trigger

7. pyOCDの動作確認

  • ターゲットの接続
    ホストPCとターゲットの「OpenSDA」のUSBコネクタを接続。

  • GDB サーバの起動

pyocd-gdbserver

正しくターゲットに接続されていると以下のように GDB Server が起動する。

※起動確認が終わったら ^C (Ctrl+C)で GDB Server を終了しておく。

8. eclipseの起動

~/opt/eclipse/eclipse

Workspace は特に変更せず、 [Launch] する。

9. サンプルのインポート

  • 「Welcome」画面から[Import a project with a working Makefile] を選択
  • [New Project]にてExisting Code Location の [Browse...]を押下
  • エクスポートした Makefile のディレクトリを選択し[開く]を押下 ※「Toolchain for Indexer Settings」 は特に指定せず[Finish]を押下

※Wellcome 画面を閉じるとサンプルがProject Explorerにインポートされている。

10. Debug Configureation

  • 「RUN」メニュー>「Debug Configureation」を選択する。
  • 「Debug Configureation」画面が開く。
  • [GDB PyOCD Debugging] から[KL25Z_mbed-os-example-blinky_debug]を選択する。
  • 「Debugger」タブを選択
  • "to change it use the global or workspace preferences pages ..."から global のリンク文字をクリックする。(Prefarence の Global 設定を行う)
  • 「Global pyOCD Path」を設定する。

※pyocd-gdbserverのインストールパスは以下で調べておく。

  • 「Global pyOCD Path」のFolderを指定する為[Browse]を押下

※隠し属性"."のファイルを表示指定するには、Ctrl+hを押下する。

  • pyocd-gdbserver が存在するディレクトリを指定し、[開く] を押下。
    すると、"folder:"に設定される。

  • 続いて「Global ARM Toolchain Paths」にて、Toolchain の実行ファイルのパスを指定する。
    [Browse]を押下する。

  • arm-none-eabi-gdb が存在するディレクトリを選択し [開く] で確定する。

11. Debugでのターゲット書き込みと起動

  • ホストPCとターゲットの「OpenSDA」のUSBコネクタを接続している事を確認する。
  • 「Debug Configureation」で先ほど設定した ターゲットのサンプルプログラムの「GDB pyOCD Debuging」 から[Debug]を押下。
  • ターゲットに pyOCD GDB 経由でプログラムのロードが始まる。 Debugのパースペクティブに切り替えをする為に [Switch]を押下。
  • Debug パースペクティブが開くとターゲット上のサンプルプログラムが Temporary Breakpoint で停止している。キーボードの[F8]又は Resume アイコンでターゲットを実行する。

以上で終わり。

参考リンク

GNU Arm Embedded Toolchain
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm

GNU Arm Embedded version 9 (9-2019-q4-major).
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2

GNU Arm Embedded Toolchain: 6-2017-q2-update June 28, 2017
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

Docs : Tools : Developing: Mbed CLI
https://os.mbed.com/docs/mbed-os/v5.15/tools/developing-mbed-cli.html
Docs : Tools : Overview
https://os.mbed.com/docs/mbed-os/v5.15/tools/index.html#compiler-versions

Docs : Tools : Developing: Mbed CLI : Installation and setup : Manual installation
https://os.mbed.com/docs/mbed-os/v5.15/tools/manual-installation.html

Arm Mbed DAPLink
https://armmbed.github.io/DAPLink/

Arm Mbed DAPLinkInterface firmware updates
https://os.mbed.com/blog/entry/DAPLink-bootloader-update/

OPENSDA: OpenSDA Serial and Debug Adapter
https://www.nxp.com/design/microcontrollers-developer-resources/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA

pyOCD
https://github.com/mbedmicro/pyOCD
https://github.com/mbedmicro/pyOCD/tree/master/udev