組み込みソフトウェア工学
第3回
組み込みシステムアーキテクチャ
前回の講義のおさらい
開発プロセス
製品を開発する上での必要なプロセス
何を作るか(要求,戦略)
どうやって作るか(開発プロセス)
開発で必要な要因(人物金情報)
スケジュールと仕様書
本日の内容
組み込みシステムアーキテクチャ
組み込みシステムにおけるソフトウェアを作成する上
で必要な構成要素をどのように考えるかについて理
解する
組み込みで必要な技術要素・構成要素
ブロック図
状態遷移図
組み込みで必要な技術は何か
MPU(マイクロプロセッサ)に関する知識
MPUの種類
CISC : Z80, 8051, 8085 RISCCPU Core : MIPS, ARM, PowerPC, NIOS With IO : PIC, H8, SuperH, AVR
色々なプログラミング言語の知識(クロスコンパイラ)
ASM, C, C++, Java
RTOS (Real-Time OS)
の知識
iTRON, VxWORK, OS-9, QNX, Linux, WindowsCE
メモリ管理技術(
MMU : Memory Management Unit
)
周辺装置の使い方
構成要素で必要なことは
どんな構成要素があるのか?
どんな製品を作るのか?
製品のコンセプト,
アーキテクチャ
その製品はどのような要素で成り立つのか?
機能毎のブロック図
ハードウェアおよびソフトウェアのブロック図状態遷移図
処理単位の状態の変化とイベント製品に対する
設計思想(哲学)
直感的に分かり易くするために
図で状態を表す
組み込みシステムアーキテクチャ
専用の機能を実現
→
ハードウェアとソフトウェアが緊密に統合されたコンピュータシス
テム
特定のアプリケーション用に構築
→
ハードウェアとソフトウェアのコンポーネントは高度に統合される
→開発モデルはハードウェア/ソフトウェアの共同設計モ
デルとなる.
アーキテクチャが無いとどうなるのか?
何を拠り所としてシステムを作るのか
開発途中で思いつきでどんどん変更されると...
専用の機能を実現
→
ハードウェアとソフトウェアが緊密に統合されたコンピュータシス
テム
特定のアプリケーション用に構築
→
ハードウェアとソフトウェアのコンポーネントは高度に統合される
→開発モデルはハードウェア/ソフトウェアの共同設計モ
デルとなる.
アーキテクチャが無いとどうなるのか?
何を拠り所としてシステムを作るのか
開発途中で思いつきでどんどん変更されると...
組み込みシステムアーキテクチャ
変更の部分が多岐に渡る可能性 があるため,システムの完成が遅 れる. 遅れないように無理をすると潜在 的なバグが多くなる可能性がある. 少しの変更でも他に与える影響が 大きくなり,バグや製品自体が動 かない物が出来上がってしまう つまりバグだらけの製品となる つまりバグだらけの製品となるどんな製品を作るのか
補助記憶装置を例に
容量
アクセスタイム
インターフェース
大きさ
信頼性
コスト
より大容量に
単位面積辺りの記憶容量より速く
回転の高速化シリアルATA
3.5インチ
S.M.R.T
信頼性技術より安く
設計の前 提となる 要求はどんな製品を作るのか
補助記憶装置を例に
容量
アクセスタイム
インターフェース
大きさ
信頼性
コスト
より大容量に
単位面積辺りの記憶容量より速く
回転の高速化シリアルATA
3.5インチ
S.M.R.T
信頼性技術より安く
設計の前 提となる 要求は これらから全体 のアーキテクチャ を考え,その後 各々の技術的な 要素を検討して いく実際のHDDはどうなっているのか
スピンドル モータ 磁気ヘッド VCMVCM : Voice Coil Motor
電子回路基板 電子回路基板 電子回路基板 電子回路基板 スピンドル モーター 磁気ヘッド 記録媒体 磁気ヘッド の動き制御 モーターの 動き制御 データの 読み書き データの 送受信 全体を動かすソフトウェア の存在
HDDの簡略図
VCM Pre-amp Spindle channel HDC ATA CPU Buffer Memory Motor Driver 電子回路基板 電子回路基板 電子回路基板 電子回路基板簡略図では個々の機能は分からない
機能ブロックに分けて考えることの必要性
ブロック図
ブロック図とは
機能単位を四角のブロックで表示し、データや制御の
流れを表わすのに利用される。
ブロック図の必要性
一目で全体像を描き,理解する
全体のアーキテクチャから機能毎への細分化
ハードウェア/ソフトウェア同士の関わり合いの理解
機能を並べただけのブロック図
CPU データの圧縮 VCM制御 データの増幅 モーター モーター制御 データ信号処理 メモリ 電源制御 リセット IDE IF ディスク ヘッド何があるかは分かるが,CPUとの関係が不明で,
CPU以外のブロックがどの様に関わるかも分からない.
データの流れを追加したブロック図
CPU データの圧縮 VCM制御 データの増幅 モーター モーター制御 データ信号処理 ヘッド メモリ 電源制御 リセット IDE IF ディスクハードウェアがどのような構成になっているかは分かる.
しかし,ソフトウェアをどの様に実装するかが不明
データの流れを追加したブロック図
CPU データの圧縮 VCM制御 データの増幅 モーター モーター制御 データ信号処理 ヘッド メモリ 電源制御 リセット IDE IF ディスクCPU
と関連する部分がソフトウェアが関係する部分
ソフトウェアとして
CPU
が関連する部分のみに着目すれば良い
ブロック図は...
ハードウェアがどのような構成をしているかが理解でき
る
ソフトウェアエンジニアにとって詳細の回路図を理解する必要
はない
ソフトウェアをどのように設計して良いかはハードウェアのブ
ロック図だけでは分からない
しかしCPUに関する部分についてソフトウェアが関連すること
は分かる
ハードウェアに依存する部分と依存しない部分とに分けて,ソフ
トウェアのブロック図を考えてみる
ソフトウェア
ブロック図
メモリ管理 データ処理 全体管理 IF 管理 RAS タイマ管理 ヘッド制御 ディスク制御 割込み ディスク ヘッド IDE IF メモリ HDC HWソフトウェアを機能毎に分割し,うまくHWと関係させる
単純に細かい機能をタスクするのでなく,集約して扱えるものを探す
1つの機能と して管理可能 1つの機能と して管理可能 矢印はシステムコー ルや関数の呼び出しRAS : Reliability, Availability and Serviceability(信頼性、可用性、保守性)