u-blox 公開技術コンテンツ

ODIN-W2 を Eclipse でデバッグする。(mbed os 5 対応)

はじめに

ODIN-W2は mbed でプログラムできます。ここでは、mbed os 5 で Eclipse で OpenOCD を用いでデバグ方法を紹介します。方針としては、なるべく手順を少ない方法を選択します。下記のURLを参考にさせて頂きました。開発ホストのOSはWindows 64 bitです。他の環境の方は適宜読み替えてください。

https://docs.mbed.com/docs/mbed-os-handbook/en/5.3/debugging/debugging_eclipse_pyocd/

■手順

1.ツールのインストール・ソースの展開

1.1 mbed-cliのインストール

1.2 サンプルコードの展開

1.3 Eclipseのインストール

1.4 Eclipseの日本語化

1.5 GNU MCU Eclipse のインストール

1.6 OpenOCD のインストール

2.実際のコンパイルとデバッガーの起動

2.1 ソースの取り込み

2.2 Build環境の設定とBuild

2.3 デバグ環境の設定

2.3 デバグ立ち上げ

■インストールツール一覧

ツール 内容 URL
mbed-cli mbed-cli , python , gcc , gbd など https://docs.mbed.com/docs/mbed-os-handbook/en/latest/dev_tools/cli_install/
eclipse IDE https://www.eclipse.org/downloads/
日本語環境 http://mergedoc.osdn.jp/
OpenOCD デバッガ  https://github.com/gnu-mcu-eclipse/openocd/releases

1.ツールのインストール・ソースの展開

1.1 mbed-cliのインストール

ココから、"mbed_installer_v041 .exe"をダウンロードしインストールすることで環境の構築を自動にやってくれます。python  , GCC , gdb までインストールしてくれるので非常に楽になりました。

インストール開始画面↓

ALT

階層を深くしたくないので"C:\L"にインストールしています。↓

ALT

下記の様に mbed board を接続するように促されますが、cancel でも問題ありませんでした。

ALT

mbed-cli をアップデートしておきます。↓ (★Ver 1.1.1 → Ver 1.2.0) ◎が入力コマンドです。エラーは出ますが動作に問題はありません。

コマンドは

> pip uninstall mbed-cli

> pip install mbed-cli

です。

ログ込みで、実際のコマンドを下記に示します。

C:\>mbed-cli --version ←◎

1.1.1 ←★

C:\>pip uninstall mbed-cli  ←◎

Uninstalling mbed-cli-1.1.1:

c:\python27\lib\site-packages\mbed_cli-1.1.1-py2.

c:\python27\scripts\mbed-cli-script.py

c:\python27\scripts\mbed-cli.exe

c:\python27\scripts\mbed-cli.exe.manifest

c:\python27\scripts\mbed-script.py

c:\python27\scripts\mbed.exe

c:\python27\scripts\mbed.exe.manifest

Proceed (y/n)? y

Successfully uninstalled mbed-cli-1.1.1

Traceback (most recent call last):

File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main

"__main__", fname, loader, pkg_name)

File "c:\python27\lib\runpy.py", line 72, in _run_code

exec code in run_globals

File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in

File "c:\python27\lib\site-packages\pip\__init__.py", line 233, in main

return command.main(cmd_args)

File "c:\python27\lib\site-packages\pip\basecommand.py", line 252, in main

pip_version_check(session)

File "c:\python27\lib\site-packages\pip\utils\outdated.py", line 102, in pip_version_check

installed_version = get_installed_version("pip")

File "c:\python27\lib\site-packages\pip\utils\__init__.py", line 838, in get_installed_version

working_set = pkg_resources.WorkingSet()

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 644, in __init__

self.add_entry(entry)

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 700, in add_entry

for dist in find_distributions(entry, True):

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1949, in find_eggs_in_zip

if metadata.has_metadata('PKG-INFO'):

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1463, in has_metadata

return self.egg_info and self._has(self._fn(self.egg_info, name))

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1823, in _has

return zip_path in self.zipinfo or zip_path in self._index()

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1703, in zipinfo

return self._zip_manifests.load(self.loader.archive)

File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1643, in load

mtime = os.stat(path).st_mtime

WindowsError: [Error 2] 指定されたファイルが見つかりません。: 'c:\\python27\\lib\\site-packages\\mbed_cli-1.1.1-py2.7.egg'

C:\>pip install mbed-cli  ←◎

Collecting mbed-cli

Using cached mbed-cli-1.2.0.zip

Installing collected packages: mbed-cli

Running setup.py install for mbed-cli ... done

Successfully installed mbed-cli-1.2.0

C:\>mbed-cli --version

1.2.0 ←★

1.2 サンプルコードの展開

LEDを明滅させるサンプルコードを展開します。ここでは c:\L\src に展開しています。

> mbed import mbed-os-example-blinky

C:\L\src>mbed import mbed-os-example-blinky

[mbed] Importing program "mbed-os-example-blinky" from "https://github.com/ARMmbed/mbed-os-example-blinky" at latest revision in the current

[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #db4be94693c3

[mbed] Auto-installing missing Python modules...

1.3 Eclipse のインストール

ここでは最新の Eclipse Ver4.7 (Oxygen)をインストールします。ココからインストーラーを入手します。OSのBit数に気をつけてください。インストーラを立ち上げ、"Eclipse IDE for C/C++ Developper"を選択しインストールを開始します。↓

ALT

今回はC:/L/oxygen にインストールしました。

ALT

このまま1回起動しておきます。そして、抜けておきます。

1.4 Eclipse の日本語化

ココから入手したファイルを展開し。

展開したファイル内のREADMEに従い、ファイルをコピーします。重要な部分だけ下記に引用します。

Eclipse へのインストール / アンインストール

───────────────────────────────────────

1. pleiades_x.x.x.zip を解凍し、plugins、features ディレクトリーを ディレクトリーに

コピー。( は Eclipse デフォルトの plugins や features があるディレクトリー)

2. eclipse.ini の最終行に以下の 2 行を追加。Xverify は Eclipse 4.4 以降で必須で、これを指定しないと

起動できなかったり、一部の機能が正常に動作しない可能性があります。

Windows 以外の場合は後述の Eclipse 起動オプション参照してください。

-Xverify:none

-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

3. Pleiades スプラッシュ画像を使う場合は

eclipse.ini の -showsplash org.eclipse.platform (実際は 2 行) を削除。

再度 Eclipseを立ち上げると日本語化されています。

ここで一度HELP→更新の確認から、更新の確認をしておいてください。↓

1.5 GNU MCU Eclipse のインストール

help → [新規ソフトウェアのインストール]の追加から、インストールします。

名前(N): GNU MCU Eclipse
ロケーション(L): http://gnu-mcu-eclipse.netlify.com/v4-neon-updates/

1.6 OpenOCD のインストール

ココから普通にインストールします。今回はgnu-mcu-eclipse-openocd-0.10.0-3-20170826-1813-dev-win64-setup.exeをインストールします。

メニューに従ってインストールします。

ここまでで、ファイルのインストールは終わりです。

2.実際のコンパイルとデバッガーの起動

ここからは、入手済のLED点滅ソフトを動作させてみます。

2.1 ソースの取り込み

まず、下記コマンドで、eclipse で読み込める形式に export します。

> mbed export -i eclipse_gcc_arm -m UBLOX_EVK_ODIN_W2 --profile mbed-os/tools/profiles/debug.json

実際のログを下記に示します。ログから階層の見当を付けてください。

C:\L\src\mbed-os-example-blinky>mbed export -i eclipse_gcc_arm -m UBLOX_EVK_ODIN_W2 --profile mbed-os/tools/profiles/debug.json

Scan: .

Scan: FEATURE_LWIP

C:\L\src\mbed-os-example-blinky>

Eclipseを立ち上げ

[ファイル]→[インポート]→[C/C++]→[Makefile プロジェクトとしての既存コード]

で"mbed-os-example-blinky"のソースを読み込みます。

下図のように、既存のソースコードロケーションを指定すれば、プロジェクト名は自動的に挿入されます。

読み込みに時間がかかります。Windowsの右下のインジケーターが100% になるまで気長にお待ち下さい。

2.2 Build環境の設定とBuild

下図の様にプロパティーの設定を選択します。

C/C++ ビルドを選択し、[ビルダー設定]中の[ビルド・コマンド(C)]を "mbed compile"に書き換えます。(余談ですが、make の環境が整っていればmake のままでも build は可能です。)

同様に[振る舞い]設定中の[ビルド(インクリメンタル・ビルド)]に "-t GCC_ARM -m UBLOX_EVK_ODIN_W2"を設定します。並列ビルドを有効にしておくと、PCの複数のコアを用いでBuildするので、実行が早くなります。

下図のように[プロジェクトのビルド]を選択し、build します。

実際の実行ログを下記に示します。

16:11:12 **** インクリメンタル・ビルド of configuration デフォルト for project mbed-os-example-blinky ****

mbed compile -j4 -t GCC_ARM -m UBLOX_EVK_ODIN_W2

Building project mbed-os-example-blinky (UBLOX_EVK_ODIN_W2, GCC_ARM)

Scan: .

Scan: env

Scan: mbed

Scan: FEATURE_LWIP

Compile [ 0.3%]: AnalogIn.cpp

Compile [ 0.5%]: BusInOut.cpp

Compile [ 0.8%]: BusIn.cpp

Compile [ 1.0%]: Ethernet.cpp

Compile [ 1.3%]: BusOut.cpp

..........................<中略>....................

Total Static RAM memory (data + bss): 23400 bytes

Total RAM memory (data + bss + heap + stack): 23400 bytes

Total Flash memory (text + data + misc): 63256 bytesImage: .\BUILD\UBLOX_EVK_ODIN_W2\GCC_ARM\mbed-os-example-blinky.bin16:27:40 Build Finished (took 2m:30s.675ms)

2.3 デバグ環境の設定

下図のように[実行]→[デバッグの構成]から、デバッグの設定を行います。

[デバッグ構成]中の [GBD OpenOCD] から新規に作成します。

[デバッグ構成]→[メイン]を下記のように設定します。(フォルダは適宜変更のこと)

名前(N): EVK_ODIN_W2
プロジェクト(P): mbed-os-example-blinky
C/C++アプリケーション: C:\L\src\20170824_2\mbed-os-example-wifi\BUILD\mbed-os-example-wifi.elf

具体的には下記のような設定。

[デバッグ構成]→[デバッガー]の設定の前に"openocd_path"のストリングを設定します。

[デバッグ構成]→[デバッガー]→[変数]からメーニューに入り。[変数の編集]→[新規]で新規変数を設定します。

openocd_path: C:\Program Files\GNU MCU Eclipse\OpenOCD\0.10.0-2-20170622-1535-dev\bin

[デバッグ構成]→[デバッガー]の設定で下記のように設定します。

実行ファイル: ${openocd_path}/openocd.exe
Config Options: -s "${openocd_path}/..\scripts"

  • f "${openocd_path}/..\scripts\interface\stlink-v2-1.cfg"
  • f "${openocd_path}/..\scripts\target\stm32f4x_stlink.cfg"
  • c init
  • c "reset init"
実行可能ファイル C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin\arm-none-eabi-gdb.exe

具体的には下記のように設定。

[デバッグ構成]→[始動]は特に変更の必要な項目はありませんでした。

EVK-ODIN-W2を接続し、[デバッグ(D)]を選択することで、デバッグモードに入ります。

★ST-LINK のドライバーはココ(http://www.st.com/ja/embedded-software/stsw-link009.html)インストールしておいてください。

2.3 デバグ立ち上げ

このようにデバッグを開始することができます。

デバグの詳細に関しては↓が参考になります。

https://gnu-mcu-eclipse.github.io/debug/openocd/

説明は以上です。

本文書の内容、不明点を持って、該当ハードウエア、ソフトウエアの部門への質問はお控えください。富士エレクトロニクスとしては、こちらで、お問い合わせを承っております。気軽にご利用ください。

取り扱いメーカー

お問い合わせ