[lang:ja] mbedのポーティング環境構築

とりあえずメモ帳状態。
私はMDK-ARMを使ってポーティング作業を進めました。このため、Windows(Windows 7, 64bit)が前提となっています。

必要なツール

  • コンパイラ(MDK-ARM推奨)
  • gitというかgithub
  • Python 2.7
  • デバッグアダプタ (Ulink2/ME、CMSIS-DAPなど)

Python環境構築

Python 2.7あたりがオススメです。3とかだとtoolsが動きませんでした。

Pythonをインストール

公式 http://www.python.org/download/を使いました。
私はPython 2.7.5 Windows X86-64 Installerで作業しています。

easy_setup.pyをインストール

easy_setupはPythonのパッケージマネージャーです。ここに書いてあるとおり、ez_setup.pyをダウンロードしてきて実行してインストールします。
ダウンロード先はどこでも良さそう、僕は"C:\Users\hoge\Downloads"に置きました。
https://pypi.python.org/pypi/setuptools/1.0#windows

Information

ez_setup.pyを実行して、UnicodeDecodeErrorが出た人は次のblogエントリが参考になるでしょう。
僕はこのようなエラーが出ませんでしたので、よくわからないです。
http://cointoss.hatenablog.com/entry/2013/12/26/122020

coloramaをインストール

Pythonのコンソール出力に色を付けるためのライブラリです。
C:\Python27\Scripts>easy_install.exe colorama

Jinja2をインストール

Jinja2はPythonのテンプレートエンジンです。exportのテストをするために必要でした。
C:\Python27\Scripts>easy_install.exe jinja2

ローカルレポジトリ構築

github

gitについての説明はそれだけで膨大になるので、省略。
とりあえず、github側でforkして自分のアカウントにレポジトリを持って来る。それを手元のマシンにcloneして作業しました。

ツールの使い方

mbed-SDKのコードに付いてくるworkspace_toolsの使い方については、以下のページに記載がありました。
http://mbed.org/handbook/mbed-tools

自分の環境の設定

まず、自分が使うツールチェーンの場所などを指定しなければなりません。
最初に、workspace_toolsディレクトリの中に"private_settings.py"とファイルを作り、次の様な内容の設定を書きます。

from os.path import join, abspath, dirname

armcc = "keil" # "keil", or "standalone", or "ds-5"

if armcc == "keil":
    ARM_PATH = "C:/Keil/ARM/ARMCC"
    ARM_BIN = join(ARM_PATH, "bin")
    ARM_INC = join(ARM_PATH, "include")
    ARM_LIB = join(ARM_PATH, "lib")

BUILD_OPTIONS = ["debug-info"]


ライブラリのビルド

mbedライブラリをビルドするには、

workspace_tools\build.py -m LPC812 -t uARM

などとしてやります。
-mでターゲットのアーキを指定、-tで使用するtoolchainを指定しています。
-mと-tは指定してやらないと割と面倒なことになるので、指定しましょう。

ここでは指定していませんが、-rでRTOS, -eでEthernet, -uでUSB, -dでDSPといった具合に追加ライブラリをビルドすることができます。

テストツール

ライブラリをビルドしたら、テストをしてみます。(注: 私は後述の別の方法でテストしています。)
テストスクリプトの一覧は、

workspace_tools\make.py

と、オプションを付けずに実行することで確認できます。テストを実行するには、

workspace_tools\make.py -m LPC812 -t uARM -d E: -s COM13 -p 16

-mでターゲットのマイコン、-tでツールチェーン、-dでmbedのドライブレター、-sでシリアルポート、-pで実行したいテストの番号を指定することができます。
なお、-sを使うときにはpyserialのインストールが必要となります。
C:\Python27\Scripts>easy_install.exe pyserial

MDK-ARMを使ったテスト

添付のテストツールでのテストをする際、mbedインターフェースがあれば-dで書き込みができるのでしょうが、ポーティングをしているときには書き込みツールが無いケースも考えられます。あるいはデバッガを使って確認をしたかったりもします。
そんなわけで私はMDK-ARMを使ってテストコードのビルドと実行を行っています。
build.pyでビルドするとSDKのソースコードの近くに"build"というディレクトリができます。この中の"mbed"というディレクトリにビルドしたライブラリが入っていますの。この"mbed"ディレクトリをMDK-ARMのプロジェクトディレクトリに入れておきます。
MDKのプロジェクトのOptionに設定している内容をちょっと記しておきます。

C/C++タブ

Define

TARGET_LPC812,  TARGET_M0,  TARGET_NXP,  TOOLCHAIN_ARM_MICRO,  TOOLCHAIN_ARM,  __CORTEX_M0,  ARM_MATH_CM0,

Include Paths

.;  mbed;  mbed\TARGET_LPC812;  mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO

Linkerタブ

Scatter File

.\mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\LPC812.sct

Misc Controlls

mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\cmsis_nvic.o
mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\retarget.o
mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\startup_LPC8xx.o
mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\sys.o
mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\system_LPC8xx.o
mbed\TARGET_LPC812\TOOLCHAIN_ARM_MICRO\mbed.ar

これらの設定をし終えたら、main.cppにでも、テストコードをコピペしてビルドします。mbedインターフェースがあればCMSIS-DAPで接続できますし、無ければ適当なデバッグアダプタを接続し、MDKからFlashやDebugをすることができます。

Information

LPC800-MAXのインターフェースをCMSIS-DAPなデバッグアダプタとして使おうとした際にハマったという話を聞きました。
以下のURLにも記載があるとおり、mbedのシリアルポートドライバをインストールしないとCMSIS-DAPインターフェースがWindowsから見えないことがある模様です。
https://mbed.org/questions/1832/I-CAN-NOT-find-CMSIS-DAP-debugger-from-U/


Please log in to post comments.