10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

200打鍵でビルドするTOPPERS/SSPカーネル

Last updated at Posted at 2014-05-07

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 は,本稿執筆時点では正式リリース前のものです.
バグがある可能性は低くはありません.
その際は,症状に応じて

辺りにご一報頂けると,適宜修正なり,適切なバグレポート先のご紹介なりができるかと思います.

まとめ

それでは,環境整備で悩まない,快適な機器組み込みシステム開発を.

10
11
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?