組み込みシステムプログラミング
書誌
| text | 唯野 |
| author | Michael Barr |
| editor | 有馬三郎(訳) |
| publisher | オライリー・ジャパン |
| year | 2000 |
| price | 3,200 |
| isbn | 87311-013-0 |
履歴
| 2001.1.16 | 読了 |
| 2001.1.29 | 公開 |
| 2002.11.28 | 修正 |
感想
組み込みの世界というのはその詳細が非常に多岐に渡るので一般化して説明するというのは非常に難しい感じがする。それゆえ書籍も少なく、需要と供給のバランスが悪いというイメージが強い。それだけにオライリーから組み込みの本が出たとなれば、買うしかないと思って読んでみたのだが、やはり自分の場合との違いばかりが目に付いてしまって、どうもイマイチだった。C/C++ 絡みというよりも組み込み OS 的な側面からの切り口の方がよかったのではないかと思った。
# それはさておき、この本はオライリー本のお約束で生き物が表紙なのですが、
# なぜかダニなんですね。巻末には飼育法まで載っていて、凝っているといえば
# 凝っているのですが、うーん、アメリカ人のセンスはよく分からん...
抄録
ix/2
組み込みシステムはハードウェアに密着しており分野を限って用いられることが多いため、熟練となるには時間を要する部分がある。しかし、実装言語として C が使われるという点では共通性がある。そして、うまく作られた組み込みシステムはユーザにその存在を感じさせない。
2/56-57
組み込みシステムの歴史は 1971 年に Intel が作成したマイクロプロセッサに由来する。(この初のチップは 4004 といい、日本の Bisicom 社が電卓用に設計したものだった。)プロセッサにはデータブックやプログラマーズ・ガイドが付属するので、特にアセンブラを使うときにはこれらをよく読まねばならない。本書での「プロセッサ」はマイクロプロセッサ(汎用の強力な CPU)、マイクロコントローラ(特に組み込み用のマイクロプロセッサ。Intel の 8051 とその互換チップや Motorola の 68HCxx など)、デジタルシグナルプロセッサ(DSP、オーディオとビデオ通信のための非常に高速な不連続時間のデジタル計算処理を行う。モデムやマルチメディア機器で使われ、Texes Instruments の TMS320Cxx や Motorola の 5600x などがある)のいずれかを指している。
3/4/18/137/139-140
リアルタイムシステムとは時間的な束縛の受けたコンピュータシステムのことをいう。つまり期待された制限時間内で必ず処理を行う。制限時間を越えることは結果が間違っているのと同じくらいに悪いことであり、このような特性のことを「締め切り(デッドライン)がある」という。全ての組み込みシステムはひとつのプロセッサとソフトウェアを持つ。また、そのプログラム構造はほとんど無限ループで締めくくられている。また、このような特性を満たす OS のことをリアルタイム OS という。この場合のポイントとなる値としてシステムコールでの最悪の実行時間、割り込みの遅延時間(割り込み発生から ISR が起動するまで)やコンテキストスイッチの実行時間などがある。
14/15
Hello World のような簡単なプログラムを使うことは、(ロジックによる誤りが低いため)それ以前の環境の問題の切り分けをするのに適している。これは組み込みシステムでいえば、単純に LED をオン/オフするだけのようなプログラムに相当する。
22-24/28
組み込みソフトウェアのソースコードは次の 3 つのステップでバイナリイメージに変換される。再配置可能なプログラムを実行可能なバイナリに変換するツールのことをロケータという。(通常はリンカに含まれている。)ロケータはボード上のメモリ情報を受け取って、実メモリのアドレスをアサインする。
- コンパイル・アセンブルしてオブジェクトファイルを生成
- オブジェクトファイルをリンクして再配置可能なプログラムを作成
- 物理メモリの相対オフセット・アドレスをリロケーションとして割り当て
また、組み込みシステム特有の開発用語として以下がある。
- 再配置可能(relocatable) メモリアドレスの割り当て以外では完全なコード
- ターゲットプラットフォーム ハードウェアだけでなく OS までを含んだ言葉
- ホスト 開発ツールが動作するコンピュータ
- ターゲット 開発されたプログラムの動く環境
- クロスコンパイル あるプラットフォーム上から他のプラットフォームのコードを生成すること
全文を読まれる場合はログインしてください
