Linux における Arm Mbed CLI と eclipse IDE 環境構築 (2020年版)
はじめに
Linuxにおいては「Mbed CLI」と「IDE環境(eclipse)」を構築する為のインストーラは存在しないため、マニュアルインストールになる。そこで、2020年版の環境構築方法をまとめておく。
※デバッグの為の OCD 設定には 「pyOCD」 と 「Open OCD」 があるが、pyOCDを使った方法で記載する。
前提条件・環境
- ubuntu 18.04
- ターゲットボード : NXP FRDM KL25Z
- DAP Link 0242 (OpenSDAv2.2) にターゲットボードOCD Firmware を更新済み。
Mbed CLI のインストールの流れ
- 「Mbed CLI」が必要とするツール類のインストール
- 「Mbed CLI」のインストール
- コンパイラー(GNU Arm Embedded Toolchain)のインストール
- 確認(サンプルのビルド)
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 のインストールの流れ
- JAVA ランタイムの導入
- GNU MCU Eclipse IDEのダウンロード
- サンプルのeclipse へのエクスポート(eclipse で GCC ARM でコンパイル実行する為の Makefileの作成)
- サンプルのビルド確認
- pyOCDのインストール
- udev rulesの設定
- pyOCDの動作確認
- eclipseの起動
- サンプルのインポート
- Debug Configureation
- 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
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]を押下する。
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
Author And Source
この問題について(Linux における Arm Mbed CLI と eclipse IDE 環境構築 (2020年版)), 我々は、より多くの情報をここで見つけました https://qiita.com/jupiter_room/items/8360839785b2a0284a2e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .