Interface6月号「ARMコア搭載FM3マイコンではじめる組み込み開発」特集で付録にFM3がついてきたので、そちら方面のみなさんは入手されている方も多そうですが、いかんせん組込み方面ではMacは肩身が狭い気がする今日この頃です。
という ご意見が示すように,組み込み屋といえば FMV か Let's Note しか使わないように思われがちです.
しかし,機器組み込み分野でも,実のところ Mac率は低くはありません.
有名なところだと TOPPERS プロジェクト/名古屋大学の高田教授のMacBook好きとか.
とはいえ,日本の組み込み屋さんたちは,自前で解決するのが好きなようで,また,それが大事な知識と思っているフシがあって,バイナリディストリビューションは多くありません.
(海外だと,ARMやMIPSのビルド済みGCCのOSX向けパッケージは巷に溢れているようなのですが.)
GCCのビルドをする時間があるなら,魅力的な製品開発に時間を使ったら? など思うのですが.
そんなこんなで,環境構築の手間を極限まで下げてみよう,ということで環境を作りました.解説します.
手間が下がった指標として,シェルへの打鍵数を用います.マウスは一切使いません.
Homebrew のインストール
OSX に Homebrew をインストールしてください.
手順の詳細は省きます.
世の中にあふれるブログエントリや,Qiita 辺りを参照してください.
ここは打鍵数に含めません.
Tap の追加
Homebrew 本家が TOPPERS/SSP に興味を示すはずはありません.
よって未来永劫,本家のリポジトリに TOPPERS/SSP は含まれません.
一手間にはなりますが,Tap (いわゆるオレオレリポジトリ) を追加します.
brew tap PizzaFactory/commandline
brew tap PizzaFactory/toppers_open
PizzaFactory/commandline
は,GCC など汎用のオープンソース群が含まれています.
PizzaFactory/toppers_open
は,その名の通り,TOPPERSプロジェクトがリリースしているものをベースとしています.しかし,PizzaFactory プロジェクトを始めとする有志によるパッチが,いろいろと当たっています.
SSPカーネルのソースツリーをインストール
本稿では,CQ-FRK-FM3 のターゲットに必要なソースツリーを取得します.
今のところ,このターゲット以外の Formula (いわゆるパッケージ)はありません.
PizzaFactory プロジェクトに寄付したり,合同会社もなみ屋のようなオープンソース志向の会社に発注したりすると,整備の速度があがるかもしれません.(冗談です)
brew install ssp-kernel-cq_frk_fm3
SSPカーネルのビルドに必要な Formulae (いわゆるパッケージ群)をどんどんと読み込んでいきます.
じっと待つ
大抵の Formula は bottle (いわゆるバイナリパッケージ) 化されています.
ネットワークの太さにも依りますが,1Mbps 程度の回線で,全て bottle 化されている場合は,5分程度で終わります.
bottle になっていないと時間はかかる
しかし,もしかすると,PizzaFactory のクロス GCC は bottle 化されていないかもしれません.
bottle になっていない場合には,お手元の Mac の性能次第です.
概ね 20分以上は覚悟してください.
ツールが bottle になっていない場合でも,newlib や stdc++ はビルド済みのものが使われます.
なので,これでもかなりの時短にはなっています.
PizzaFactory プロジェクトに寄付したり,合同会社もなみ屋のようなオープンソース志向の会社に発注したりすると,bottle化の速度があがるかもしれません.(再掲:冗談です)
それと,pythonbrew など,Homebrew と相性の良くない python が入っていると,boost のビルドが始まることがあります.
python 周りについては brew doctor
を実行すると問題点が提示されます.(これは,本稿に限らない, Homebrew 汎用のノウハウです)
プロンプトに戻ってきたら,インストールは終了しているはずです.
インストールに失敗する場合
ネットワークやディスクなど物理的な問題でない場合には,おそらく既存の(Homebrewが管理していない)ファイルと競合しています.
ありがちなのは,GPG 関連です.上記インストールでは repo を使っており,間接的に GPG を使っています.
Mac用として配布されている GPG パッケージの中には,/usr/local/bin に関連ツールをインストールするものがあり,衝突します.
その場合には,一旦,該当する GPG パッケージをアンインストールしてください.
( brew link --force ...
での解決は,思わぬ副作用が出たりするのでお薦めできません.)
configure スクリプトの実行
さてはて,下記のような出力が見られたら,インストールは完了です.
(エラーの場合は,それと分かる表示で終了します.)
==> Summary
? /usr/local/Cellar/ssp-kernel-cq_frk_fm3/1.2.1: 141 files, 1.0M, built in 105 seconds
ソースツリーのインストールに成功したあとは,ビルドするカーネルのコンフィギュレーションを行います.
下記のようにして configure スクリプトを起動してください.
/usr/local/Cellar/ssp-kernel-cq_frk_fm3/1.2.1/share/unofficial/configure -T cq_frk_fm3_gcc
パス中の 1.2.1/
以降は,今後変更になるかもしれません.
何にせよ,/usr/local/Cellar/ssp-kernel-cq_frk_fm3
の配下にある configure スクリプトを探しだして,オプションを -T cq_frk_fm3_gcc
として呼び出してください.
すると,カレントディレクトリに Makefile や sample1.c などファイルが生成されます.
この configure スクリプトは TOPPERS/SSP カーネルに含まれるものとほぼ同一です.
詳細を知りたい方は,SSPカーネルのドキュメント類を参照してください.
make でビルド
configure スクリプトの実行が終わったら,おもむろにビルドします.
make
TOPPERS/SSP カーネルは極めて小さなカーネルのですので,ビルドはものの数秒で終わります.
そして,カレントディレクトリに,ssp.out なるファイルができているはず.
あとはターゲットに流し込むのですが,この辺は好みのツールがございますでしょうから,詳細は割愛します.
以上,200打鍵
以上纏めます.
brew tap PizzaFactory/commandline
brew tap PizzaFactory/toppers_open
brew install ssp-kernel-cq_frk_fm3
/usr/local/Cellar/ssp-kernel-cq_frk_fm3/1.2.1/share/unofficial/configure -T cq_frk_fm3_gcc
make
ちょうど200打鍵のはずです.
いまどきのシェルなら completion が効くでしょうし,本稿を読みながらのコピペなら,もっと短いでしょう.
「もしかして? バグ?」
一連の Tap は,本稿執筆時点では正式リリース前のものです.
バグがある可能性は低くはありません.
その際は,症状に応じて
- https://github.com/PizzaFactory/homebrew-commandline
- https://github.com/PizzaFactory/homebrew-toppers_open
辺りにご一報頂けると,適宜修正なり,適切なバグレポート先のご紹介なりができるかと思います.
まとめ
それでは,環境整備で悩まない,快適な機器組み込みシステム開発を.