[lang:ja] FOTAのビルド環境構築(Linux編)

とりあえずメモ帳状態。
LinuxにDS-5をインストールして、mbed SDKをビルドできるようにしたのでメモ。

必要なツール

  • CentOS 6.5 64bit
  • DS-5
  • git
  • cmake
  • srec_cat

必要なコード

CentOS

VMware Fusionに、「Linux簡易インストール」でインストール。そんだけ。
たしか、ユーザーがsudoerに追加されていなかったので追加した。
日本語が扱えないので、sudo yum -y groupinstall "Japanese Support"してインストール。

DS-5

インストーラーを落としてきて、解凍。install_x86_64.shを実行してインストール。
DS-5は依存ライブラリが必要なので、Missing DS-5 Linux dependenciesからインストールスクリプトを手に入れて実行。CentOS x64なので、ds-deps-rh6_64.shを使った。

github

gitが入っていなかったので、sudo yum install gitでインストール。

CMake

FOTAのビルドには、CMakeの2.8以上が必要らしい。CentOS 6.5のrpmでは、古くてダメだったので、新しいのをビルドする。

sudo yum install ncurses-devel
sudo yum install gcc-c++
wget http://dl.atrpms.net/el6-x86_64/atrpms/testing/cmake-2.8.8-4.el6.x86_64.rpm
tar xvzf cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2
./configure
gmake
sudo gmake install

srec_cat

HEXファイルの操作をするツールらしい。

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6-8.noarch.rpm 
sudo yum install srecord-devel

mbed SDK

SoftDeviceのバージョンが今のオンラインコンパイラと異なるので、前提になっているリリースに巻き戻した。

git checkout refs/tags/mbed_lib_rev89

mbed SDKのビルドの確認

最初に、workspace_toolsディレクトリの中に"private_settings.py"とファイルを作り、次の様な内容の設定を書きます。

from os.path import join, abspath, dirname

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

if armcc == "ds-5":
    ARM_PATH = "/usr/local/DS-5"
    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は指定してやらないと割と面倒なことになるので、指定しましょう。

無事にmbed SDKのビルドができればOK。

コードの準備

適当なディレクトリに、次の様になるよう、コードを置いておく。

.
|-- BLE_API
|-- Nordic
|   `-- nrf51822-sdk-v6.1.0 <- NordicのSDKをunzipしてフォルダ名を変えた
|       |-- Documentation
|       |-- nrf51422
|       `-- nrf51822
|-- dfu-bootloader
|-- mbed
`-- nRF51822 <- mbedのライブラリ

これにあわせたCMakeLists.txtは、僕のリポジトリに。

ビルド

dfu-bootloaderの中で、

$ mkdir Build
$ cd Build/
$ cmake ..
$ make -j all


Please log in to post comments.