Help us understand the problem. What is going on with this article?

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)が生成される。
コメント2 2020-02-16 120836.png

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
  • コンパイルが開始する。 コメントCompile 2020-02-17 003354.png
  • コンパイルが終わると以下のような結果となり、バイナリ(elfとbin)が生成される。 コメントlink 2020-02-17 003354.png

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 が起動する。
コメントpyocd-gdbserver 2020-02-16 120836.png
※起動確認が終わったら ^C (Ctrl+C)で GDB Server を終了しておく。

8. eclipseの起動

~/opt/eclipse/eclipse

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

コメント3 2020-02-16 120836.png

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

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

※Wellcome 画面を閉じるとサンプルがProject Explorerにインポートされている。
コメント8 2020-02-16 120836.png

10. Debug Configureation

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

※pyocd-gdbserverのインストールパスは以下で調べておく。
which pyocd 2020-02-17 234806.png

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

※隠し属性"."のファイルを表示指定するには、Ctrl+hを押下する。
コメント18 2020-02-16 120836.png

  • pyocd-gdbserver が存在するディレクトリを指定し、[開く] を押下。
    すると、"folder:"に設定される。
    コメント19 2020-02-16 120836.png

  • 続いて「Global ARM Toolchain Paths」にて、Toolchain の実行ファイルのパスを指定する。
    [Browse]を押下する。
    コメント21 2020-02-16 120836.png

  • arm-none-eabi-gdb が存在するディレクトリを選択し [開く] で確定する。
    コメント22 2020-02-16 120836.png

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

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

以上で終わり。

参考リンク

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした