組み込みシステムは、DVDプレイヤー、携帯電話、自動車、医療機器、さらに人工衛星に至るまで、あらゆる電子機器に使われていますが、それぞれ固有のハードウェアをターゲットにするため、その開発には幅広い分野の知識が必要です。本書は、C言語の基礎的な知識を持っている読者を対象に、組み込みシステム開発に必要不可欠な内容(ハードウェアの基礎、構築手順、デバッグ、割り込み、最適化など)を、豊富なサンプルコードを使って解説します。第1版(『C/C++による組み込みシステムプログラミング』)からは、C言語とGNU開発ツールを使った解説への変更、組み込みLinuxシステムとeCosに関する記述の追加などの改訂が行われました。
CとGNU開発ツールによる組み込みシステムプログラミング 第2版
Michael Barr, Anthony Massa 著、有馬 三郎 訳
- TOPICS
- Programming , C/C++ , Linux
- 発行年月日
- 2007年06月
- PRINT LENGTH
- 324
- ISBN
- 978-4-87311-326-5
- 原書
- Programming Embedded Systems, Second Edition
- FORMAT
目次
まえがき 訳者まえがき はじめに 1章 はじめに 1.1 組み込みシステムとは何か? 1.1.1 歴史と将来 1.1.2 リアルタイムシステム 1.2 目的の多様性 1.2.1 共通のシステムコンポーネント 1.2.2 設計に影響を与える要件 1.3 組み込みシステム設計時の対象例 1.3.1 デジタル時計 1.3.2 ビデオゲーム機 1.3.3 火星探査 1.4 組み込みソフトウェアの開発者の仕事 1.5 C言語:数少ない共通の特徴 1.5.1 その他の組み込み言語 1.5.2 本書で取り上げた言語 1.5.3 コードの一貫性 1.6 ハードウェアについて 2章 ハードウェアについて 2.1 ブロック図の理解 2.2 ハードウェアの基本 2.2.1 回路図の基礎 2.3 図の調査 2.3.1 メモリマップ 2.4 通信方法を学ぶ 2.5 プロセッサについて調べる 2.5.1 一般的なプロセッサ 2.5.2 PXA255 XScaleプロセッサ 2.6 外部ペリフェラルについて調べる 2.7 ハードウェアの初期化 3章 初めての組み込みプログラム 3.1 Hello, World! 3.2 「点滅するLED」プログラム 3.2.1 関数ledInit 3.2.3 関数ledToggle 3.2.3 関数delay_ms 3.3 無限ループの役割 4章 コンパイル、リンク、ロケート 4.1 構築の手順 4.1.1 コンパイル 4.1.2 リンク 4.1.3 ロケート 4.2 「点滅するLED」プログラムの構築 4.2.1 コンパイル 4.2.2 リンクとロケート 4.2.3 出力ファイルのフォーマット 4.3 makefileについて 5章 ダウンロードとデバッグ 5.1 「点滅するLED」プログラムのダウンロード 5.1.1 デバッグモニタ 5.1.2 ROMの利用 5.2 リモートデバッガ 5.2.1 Arcomボード上でのデバッグ 5.3 エミュレータ 5.4 その他の便利なツール 5.4.1 シミュレータ 5.4.2 ハードウェアのツール 5.4.3 バージョン管理 5.5 ハードウェアに関わってみる 6章 メモリ 6.1 メモリの種類 6.1.1 RAMの種類 6.1.2 ROMの種類 6.1.3 ハイブリッド型 6.2 ダイレクトメモリアクセス 6.3 エンディアンの問題 6.3.1 デバイスにおけるエンディアン 6.3.2 ネットワークにおけるエンディアン 6.4 メモリの検査 6.4.1 一般的なメモリ障害 6.4.2 検査の方針を立てる 6.5 メモリの内容の確認 6.5.1 チェックサム 6.5.2 巡回冗長符号 6.6 フラッシュメモリを使う 6.6.1 フラッシュメモリを扱う 6.6.2 フラッシュドライバ 7章 ペリフェラル 7.1 制御レジスタと状態レジスタ 7.1.1 ビット処理 7.1.2 構造体の重ね合わせ 7.2 デバイスドライバの位置づけ 7.2.1 シリアルデバイスドライバ 7.2.2 シリアルデバイスドライバの検査 7.2.3 シリアルデバイスドライバの機能拡張 7.3 デバイスドライバの設計 8章 割り込み 8.1 概説 8.1.1 優先順位 8.1.2 電位と変化点 8.1.3 利用可能と利用不可能 8.2 割り込みマップ 8.3 割り込みサービスルーチン 8.3.1 共有データと競合 8.4 改善された「点滅するLED」プログラム 8.4.1 タイマの動作 8.5 割り込みの問題の概要 9章 すべてを統合 9.1 アプリケーションの全体像 9.2 シリアルポートを使用する 9.3 コマンドラインインタフェースの処理 10章 オペレーティングシステム 10.1 歴史と目的 10.2 スケジューラ 10.2.1 リアルタイムスケジューリング 10.2.2 スケジューリングポイント 10.2.3 ロックとアンロック 10.3 タスク 10.3.1 タスクの状態 10.3.2 タスクのコンテキスト 10.3.3 タスクの優先順位 10.3.4 タスクの動作 10.4 タスクの同期 10.4.1 ミューテックスとセマフォ 10.5 メッセージパッシング 10.6 その他の機能 10.7 割り込み処理 10.8 リアルタイムの特性 10.9 RTOSを使用するかどうか 10.9.1 RTOSの選択の手順 10.10 その他の情報 11章 eCosのサンプル 11.1 紹介 11.2 タスクの機能 11.3 ミューテックスによるタスクの同期 11.4 セマフォによるタスクの同期 11.5 メッセージパッシング 11.6 eCosの割り込み処理 12章 組み込みLinuxのサンプル 12.1 紹介 12.2 Linuxからのハードウェアへのアクセス 12.3 タスクの機能 12.4 ミューテックスによるタスクの同期 12.5 セマフォによるタスクの同期 12.6 メッセージパッシング 13章 機能の拡張 13.1 共通のペリフェラル 13.1.1 集積回路間バス 13.1.2 シリアルペリフェラルインタフェース 13.1.3 プログラミング可能な論理回路 13.1.4 パルス幅変調 13.2 デバイスのネットワーク 13.2.1 ネットワークサポートの利点 13.2.2 組み込みシステムにおけるネットワークソリューション 14章 最適化のテクニック 14.1 コードの効率化 14.2 コード量を減らす 14.3 コンパイラの最適化にまつわる不具合 14.4 メモリ使用量の削減 14.5 電力使用量を減らすテクニック 14.5.1 プロセッサモード 14.5.2 クロック数 14.5.3 外部メモリアクセス 14.6 C++の影響を制限する 付録A Arcom VIPER-Lite開発キット 付録B ソフトウェア開発環境の設定 B.1 Windowsホストのインストール B.1.1 Cygwinのインストール B.1.2 GNUソフトウェアツールのインストール B.2 Linuxホストのインストール B.2.1 GNUソフトウェアツールのインストール B.2.2 サンプルコードのインストール 付録C GNUソフトウェアツールの構築 C.1 ソースファイルの取り出し C.2 ツール群の構築 付録D eCos開発環境の設定 D.1 eCos構築環境 D.1.1 eCosソースコードのインストール D.1.2 eCosライブラリの構築 付録E 組み込みLinux開発環境の設定 E.1 Linux構築環境の設定 E.2 組み込みLinuxのサンプル E.2.2 Linuxサンプルの構築 E.2.2 Linuxサンプルのダウンロードと実行 E.2.3 組み込みLinuxサンプルのデバッグ 索引