組込み現場の「C」プログラミング 基礎からわかる徹底入門

書籍の概要

この本の概要

組込み開発が,日本メーカーが世界で生き残るための切り札ともなっていることは周知の事実です。ケータイをはじめとする家電のデジタル化や高機能化,またモデルチェンジ周期の短縮傾向などもあって,新規プログラムの需要は増すばかり。こういった状況からして,ここでの情報ニーズが高まっていることも明らかでしょう。

本書は,その道の達人たちが,組込み開発ならではの実用的なノウハウや勘所,落とし穴に対する注意などを重点的に伝授するものです。取り扱っているのが組込み開発では間違いなく主流のC言語であることもポイント。

こんな方におすすめ

  • 組込み現場で配属されたプログラマー
  • C言語の初歩はわかるが現場での実践経験には乏しいという方
  • 組込みプログラミングに特有の作法を知りたい方

この書籍に関連する記事があります!

組込みエンジニアが学ぶべきこととは何か?
携帯用機器や家電製品から自動車の制御用にも用いられる組込みプログラムの開発が脚光を浴びるようになったのは,それほど昔の話ではありません。もちろん,こういったプログラムで何らかの制御を行うしくみそのものは,ずいぶん前から使われています。

目次

第1章 組込みソフトウェアとは?

  • 1.1 組込みソフトウェア=メジャーなソフトウェア
  • 1.2 組込みソフトウェアとC言語
  • 1.3 組込みソフトウェアの特徴
    • 1.3.1 ハードウェアとの関連
    • 1.3.2 信頼性などの品質
    • 1.3.3 制約
    • 1.3.4 クロスプラットフォーム
    • 1.3.5 移植性への配慮
  • 1.4 組込みソフトウェアを構成する要素
  • 1.5 組込みソフトウェア開発の工程

第2章 組込みプログラムの品質

  • 2.1 C言語一般の特徴/ポイント
    • 2.1.1 低レベルの処理を記述できる高級言語
    • 2.1.2 フリーフォーマット
    • 2.1.3 プリプロセッサ
    • 2.1.4 ポインタ
    • 2.1.5 データの型変換
    • 2.1.6 演算子の優先順位
    • 2.1.7 独自拡張
  • 2.2 品質を上げるには?―「品質」のさまざまな側面を知ろう
    • 2.2.1 「品質」の定義
    • 2.2.2 機能性品質
    • 2.2.3 効率性品質
    • 2.2.4 信頼性品質
    • 2.2.5 保守性品質/移植性品質
    • 2.2.6 使用性品質
  • 2.3 品質を上げるには?―きちんと設計しよう
    • 2.3.1 モジュール間の構造を設計しよう
    • 2.3.2 モジュール凝集度を考えよう
    • 2.3.3 モジュール結合度を考えよう
    • 2.3.4 モジュール分割の指針を意識しよう
    • 2.3.5 インクルードファイル分割の指針を意識しよう
    • 2.3.6 シンプルなモジュール内部構造を設計しよう
  • 2.4 品質を上げるには?―レビューをしよう
    • 2.4.1 なぜレビュー?
    • 2.4.2 レビューでチェックする視点の例
    • 2.4.3 レビュー結果への対処
    • 2.4.4 レビューでしてはいけないこと
    • 2.4.5 静的解析ツールはレビューの代わりになるか?
  • 2.5 品質を上げるには?―良いコードを書こう
    • 2.5.1 良いコードとは?
    • 2.5.2 C言語で陥りやすい罠
    • 2.5.3 良いコード―信頼性についての例
    • 2.5.4 良いコード―効率性についての例
    • 2.5.5 良いコード―保守性/移植性についての例
  • 2.6 品質を上げるには?―良い再利用をしよう
    • 2.6.1 モジュール単位の再利用
    • 2.6.2 クラス継承による再利用
    • 2.6.3 コピー&ペーストによる再利用
    • 2.6.4 再利用と知的所有権
  • 2.7 品質を確認するには?―テストをしよう
    • 2.7.1 テストの進め方
    • 2.7.2 網羅とピンポイント
    • 2.7.3 モジュール単体テスト
    • 2.7.4 モジュール結合テスト(関数の結合)
    • 2.7.5 状態遷移のテスト
    • 2.7.6 テストしやすいプログラムを書こう
  • 2.8 品質を上げるには?―原理を知ろう
  • 2.9 品質を上げるには?―構成を管理しよう
  • 2.10 品質を上げるには?―変更を管理しよう
  • 2.11 品質を上げるには?―不具合を管理しよう

第3章 Cプログラム実行の裏

  • 3.1 CPUはプログラムをどのように実行するのか?
  • 3.2 メモリとCプログラム
    • 3.2.1 メモリマップ
    • 3.2.2 スタック
    • 3.2.3 関数の呼び出し
    • 3.2.4 変数の配置
    • 3.2.5 コードの配置とポインタ
    • 3.2.6 I/Oポート
  • 3.3 割り込みの仕掛け
    • 3.3.1 割り込みとは?
    • 3.3.2 割り込みの仕掛け
    • 3.3.3 割り込み処理の前後で必要なソフトウェア処理
    • 3.3.4 多重割り込みと割り込みの優先度
    • 3.3.5 割り込み処理を記述するときの注意点
  • 3.4 スタートアップルーチン
  • 3.5 コンパイルとリンク
    • 3.5.1 コンパイラの仕事
    • 3.5.2 リンケージエディタの仕事
    • 3.5.3 コンパイラを信頼するな?
  • 3.6 ハードウェアとのお付き合い
    • 3.6.1 ハードウェアへのアクセスはどのようになっているか?
    • 3.6.2 プログラムからハードウェアにアクセスするには?
    • 3.6.3 メモリの種別とアクセススピード
    • 3.6.4 入出力に関する回路要素の知識
    • 3.6.5 ハードウェアの特性
  • 3.7 リアルタイムOS

第4章 組込みプログラムの慣用句

  • 4.1 ビット制御
  • 4.2 バッファ制御
  • 4.3 メモリ配置
  • 4.4 ポインタ
  • 4.5 ポートへのアクセス

第5章 組込みプログラムのサンプル

  • 5.1 組込みプログラムサンプルの仕様について
    • 5.1.1 プログラムの仕様
    • 5.1.2 ハードウェアの仕様
  • 5.2 プログラム例 ―1
  • 5.3 プログラム例 ―2