[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.