mbed ツール

このノートブックは、mbed-tools の翻訳です。

mbed ライブラリを開発するために使用されるツールは、Apache Version 2.0 の元でオープンソースライセンスとなっており、以下のリポジトリに含まれています:

workspace_tools ディレクトリ内に含まれているツールは、Pythonで記述されています(プラットフォーム非依存で、WindowsとLinuxでテストしています)。

コンフィグレーション設定

mbed ツールは、以下のファイルに実用的なデフォルト設定値が含まれています:

  • workspace_tools/settings.py

また、以下のファイル内の全ての値を変更してユーザー設定とすることが出来ます:

  • workspace_tools/private_settings.py

git のようなバージョン管理システム用に、このファイルを無視する設定としています。

例えば、パスを GNU Tools for ARM Embedded Processors から以下のパス c:/arm_gcc/bin に変更したい場合は、単純に private_settings.py に以下の行を追加します:

GCC_ARM_PATH = "c:/arm_gcc/bin"


Python 文字列内の Windows パス

Python 文字列内で "\" は、特殊文字指定用のエスケープキャラクターとして使用されます。("\n" や "\t" 等) もし、Python 文字列に "\" を追加したい場合、 "\\" と記述する必要があります。他の方法として、パスセパレータとしてフォワードスラッシュ "/" を使えます。(上記の例を参照してください)

ビルドシステム

mbed ビルドシステムは、次の2つのスクリプトから構成されます:

  • ライブラリをビルドするためのスクリプト:workspace_tools/build.py
  • テストプロジェクトをビルド、実行するためのスクリプト:workspace_tools/make.py

    どちらも、ターゲットマイクロコントローラとツールチェインを指定するサブセットのオプションを持ちます:

-m MCU -t TOOLCHAIN


使用可能なターゲット MCU は:

  • LPC1768
  • LPC11U24
  • LPC2368
  • LPC812
  • KL25Z

使用可能な TOOLCHAIN は:

  • ARM: ARMCC ツールチェインでの 標準 C ライブラリ
  • uARM: ARMCC ツールチェインでの マイクロ C ライブラリ
  • GCC_ARM: ARM の GCC ツールチェイン
  • GCC_CS: CodeSourcery の GCC ツールチェイン
  • GCC_CR: CodeRed の GCC ツールチェイン
  • IAR: IAR ツールチェイン

build.py

ターゲットとツールチェインが指定されない場合、ビルドスクリプトは mbed ライブラリで利用可能な全てのターゲットとツールチェイン用のバイナリをビルドします。

例えば、LPC1768 用の mbed ライブラリを ARM GCC ツールチェインでビルドする場合は以下のようになります:

> python workspace_tools\build.py -m LPC1768 -t GCC_ARM


以下は出力の例です:

>>> BUILD LIBRARY CMSIS (LPC1768, GCC_ARM)
Copy: LPC1768.ld
Assemble: startup_LPC17xx.s
Compile: cmsis_nvic.c
Compile: core_cm3.c
[...]
Compile: TimerEvent.cpp
Library: libmbed.a

Completed in: (6.31)s

Build successes:
  * GCC_ARM::LPC1768


追加のライブラリをビルドする場合には、以下のオプションが使用可能です:

  • -r: RTOS ライブラリのビルド
  • -e: Ethernet ライブラリのビルド
  • -u: USB device ライブラリのビルド
  • -d: DSP ライブラリのビルド

テストシステム

make.py

Make は、次の python ファイル内の1つのテストプロジェクトのビルドと実行で使用されます: workspace_tools/tests.py

個々のテストプロジェクトは、シンプルな python の辞書型で指定されます:

TESTS = [
    # Automated MBED tests
    {
        "id": "MBED_A1", "description": "MBED: Basic",
        "source_dir": join(TEST_DIR, "mbed", "basic"),
        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
        "automated": True,
    },
    {
        "id": "MBED_A2", "description": "MBED: semihost file system",
        "source_dir": join(TEST_DIR, "mbed", "file"),
        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
        "automated": True,
        "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
    },


これら全てのプロジェクト仕様は、TEST リスト内に含まれます。"make" スクリプトをオプション無しで実行した場合、スクリプトは全ての利用可能なテストと対応した番号をプリントします:

> python workspace_tools\make.py

  [ 0] MBED: Basic
  [ 1] MBED: semihost file system
  [ 2] MBED: C++ STL
  [ 3] MBED: I2C TMP102
  [ 4] MBED: DigitalIn DigitalOut
  [ 5] MBED: DigitalInOut
  [ 6] MBED: InterruptIn
  [ 7] MBED: Analog
  [ 8] MBED: Serial Echo at 115200
  [ 9] MBED: PortOut PortIn
  [10] MBED: PortInOut
  [11] MBED: SD File System
  [12] MBED: I2C MMA7660
  [...]


テストプロジェクトのビルドでは、"make" スクリプトは実際にプログラムを行い、mbed ターゲットをリセットし、ターゲットのシリアルポートに出力されたプリント文を全て表示します:

  • -d: ターゲット mbed のディスクドライブの指定(例:Windows では E:\、Linux では /media/mbed
  • -s: ターゲット mbed のシリアルポート番号の指定(例:Windows では COM4、 Linux では/dev/ttyACM0

例えば、ARM GCC ツールチェインを使用した LPC1768 mbed 用の "Basic" テストプロジェクト(番号:0)をビルドする場合、生成されたバイナリをディスク E:\ に書き込み、シリアルポート COM4 とする設定は次のようになります:

> python workspace_tools\make.py -m LPC1768 -t GCC_ARM -d E:\ -s COM4 -p 0


Python シリアルポート拡張

make.py でシリアルポートを制御する場合、pyserial package をインストールする必要があります。

以下は、出力の例です:

>>> BUILD PROJECT: BASIC (LPC1768, GCC_ARM)
Compile: main.cpp
Compile: test_env.cpp
Link: basic
Elf2Bin: basic
Image: C:\Users\emimon01\mbed\build\test\LPC1768\GCC_ARM\MBED_A1\basic.bin
{success}
{end}


"Image:" パスの後に表示される全てのテキストは、mbed 上で動作しているプログラムのシリアルポートからの出力です。
シリアルポートを "-s" オプションで指定した場合、mbed にプロジェクトのバイナリをコピー後に "make" スクリプトは 指定されたシリアルポートからリードを行うループ処理に入ります。このループから抜ける場合には、キーボードから割り込みを送信して下さい(例:CTRL+c)。

テストの追加

新しいテストプロジェクトを追加するのは簡単です:

  1. libraries/tests ツリー配下の新しいディレクトリにプロジェクトのソースを追加する
  2. ディレクトリエントリーを、workspace_tools/tests.pyTEST リストに追加する

テストプロジェクトの辞書には必須のキーがあります:

  • id: テストを識別するための一意な ID 文字列(自動テストによって内部的にのみ使用される)
  • description: コマンドラインの "help" メッセージで表示される人間が識別可能なテスト内容の記述
  • source_dir: テストプロジェクトのソースが含まれているディレクトリ。実践的には、ルートの TEST_DIR ディレクトリからパスを結合して記述します。

テストプロジェクトの辞書にはオプションのキーがあります:

  • dependencies: プロジェクトが依存するライブラリのソースを含んだディレクトリパスのリスト(デフォルト:None)
  • automated: 特定の文字列を使用してテストプロジェクトが人間が介在せずに自動的にテスト結果を通信できるかを示すブール型(デフォルト:False)
  • duration: 自動テストが終了するまでの最大経過時間。テストが終了するまでにこの時間を超えてしまった場合、テスト失敗をレポートする(デフォルト:(10)s)
  • mcu: テストが実行できる mbed タイプのリスト(デフォルト:全ての mbed)
  • peripherals: テストが実行可能なペリフェラルのリスト(デフォルト:None)
  • host_test: 起動したテストの成功を検証するための host test の指定(デフォルト:'host_test' 波括弧でくくられた {success}/{failure} をチェックする)
  • extra_files: mbed にコピーされるファイルのリスト(例えば mbed プログラムが実行中にリードするテストファイル等)

"automated" テストプロジェクトは、テスト結果をホストと通信するために波括弧で括られた特殊な文字列を使用します:

  • {success}{failure} は、単一の結果の通知に使われます。
  • {end} は、テストの終了通知に使われます。


Please log in to post comments.