webstation plus

 組み込みシステムを理解しようと思うと、ハードもソフトも理解する必要があるので、何から手をつければいいのか分からなくなりますよね。

 そんなときにおすすめなのが『これだけ組み込みシステム』。詳細を理解するには他の本を読む必要がありますが、概要理解にはとても役立ちます。

 というわけで、今回は本書から理解しておきたい内容を簡単に紹介していきます。

 目次

 本書は以下の構成で書かれています。

第1章 電気機器から電子機器へ
第2章 コンピュータシステムを知る
第3章 組み込みシステムとは何か
第4章 組み込みシステムの構成
第5章 ハードウエアの構成方法
第6章 知っておきたいCPUの周辺機能
第7章 現在の組み込みシステムに求められる無線通信機能
第8章 組み込みシステムのハードウエア開発
第9章 組み込みソフトウエアとOS
第10章 組み込みシステムのソフトウエア開発

 第1章 電気機器から電子機器へ

 家電が電気機器から電子機器に変わる過程が書かれています。しかし、フワっとしていて中身がないんですよね。

 この辺りの知識があれば別ですが、なければ『コンピュータ、どうやってつくったんですか?』を読んだ方が確実に理解が深まります。

 第2章 コンピュータシステムを知る

 CPUとメモリ、入出力インタフェースについて書かれています。

CPUの行う処理は次の4つが基本

①メモリのアドレスをコントロールする
アドレスを自動的に1つずつ増やしていく、条件分岐等では次の行き先アドレスに変更する。

②データを取り込む
プログラムメモリから命令を取り込む、作業メモリ/データメモリからデータを取り込む、入出力インタフェースを介して外部装置から情報を取り込む。

③データを出力する
メインメモリに書き込む情報を出力する、入出力インタフェースを介して外部記憶装置に情報を提供する。

④演算をする
数値演算と論理演算を行う、条件結果を導き出す。

CPUの実行サイクルはフェッチ、デコード、実行、ライトバック

フェッチ:プログラムメモリのアドレスを指定して、命令をレジスタに取り込む
デコード:命令を翻訳して処理内容を制御部に伝える
実行:制御部が命令に従って演算器などの処理回路を制御して実行する
ライトバック:処理結果をレジスタやメモリに書き込む

 第3章 組み込みシステムとは何か

 組み込みシステムとは、メーカーが開発したハードウェアとソフトウェアで、ユーザが追加・変更しないもののことです。たとえば、テレビやカメラ、洗濯機のハードとソフトが該当します。

パソコンのソフトウェアは大きく4つで構成

アプリケーション:目的の処理を行うソフト
OS:アプリケーションの管理と入出力処理を行うソフト
ドライバ:ハードウェアの直接的な制御を行うソフト
BIOS:ハードウェアの初期設定を行ってOSを起動させるソフト(ROMで保存)

BIOSは以下の流れで処理を実行

①CPUとバス管理ユニットのチェックと初期化
②ディスプレイへの表示処理の開始
③マザーボードの各種ハードウェアのチェックと初期化
④起動ドライブの検出
⑤ブートストラップローダ(ディスクにあるOSをロードして実行させるプログラム)の起動

OSの基本的な役割

①ユーザインタフェースの提供

②ハードウェアの間接的制御
アプリケーションからの要求を受けてドライバに対して論理的な指示を与える

③データ管理機能の提供
ファイルシステムによる合理的な管理

④APIの提供
OSが管理する汎用プログラムの提供

⑤CPUの割り当てとメモリの管理
マルチプロセスを実現するためにプログラムをメモリごとに割り当てる

ミドルウェアとは

一般的にはOSを除いて標準で提供されるプログラムのこと(プロトコルスタックやGUI、ブラウザなど)

 第4章 組み込みシステムの構成

CPUの周辺ロジック回路

汎用機能:タイマ/カウンタやリアルタイムクロック、電源監視用リセットIC、ブザーICなど
独自機能:標準ロジックICとASIC

メモリ

電源が供給されていないとデータが消えるRAM(SRAMやDRAM)と電源が切れてもデータを保持することができるROM(フラッシュメモリやEEPROM)がある。

 第5章 ハードウェアの構成方法

CPUの分類

①処理bit数
8bit,16bit,32bit

②アーキテクチャ
CISC:拡張命令セットコンピュータ。プログラムに便利な機能をハードウェアで実現。Z80など。
RISC :縮小命令セットコンピュータ。使用頻度の高い命令だけを用意し、高速処理を行う回路を組み込んだもの。ARMとかPICなど。

③MMU
メモリ・マネージメント・ユニット。実際にハードウェアに搭載しているメモリを有効に用いるための機能。たとえば、実行したいプログラムが物理メモリよりも大きい場合に、プログラムの一部をメモリに書き込んで実行し、必要になったときに随時別の部分のプログラムを書き込んで実行する必要があるため、メモリを管理する機能が必要になる。そこで、仮想メモリという考えを導入し、ハードウェアでスワップを実現したのがMMU。マルチプロセスでも有効な機能。

仮想メモリ

物理メモリと補助記憶装置を合わせてすべてのプログラムが収まる大きなメモリ空間を想定し、補助記憶装置にスワップファイルと呼ばれる専用の領域を用意して、メモリ容量が不足したら使われていないメモリ領域の内容を退避させ、必要に応じてメモリに書き戻すこと。この補助記憶装置とメモリ間でプログラムを入れ替える動作をスワップという。

システムLSIとASIC

システムLSIとはこれまで個別のLSIとして用意されていたCPUやROM、RAM、シリアル/パラレルインタフェース、LCDコントローラ/ドライバやタイマといったコンピュータに必要な機能を1チップ化することを目的としたもの。汎用のシステムLSIをワンチップマイコンとも呼ぶ。一方、ASICは独自機能を実現する専用回路をLSI化するもの。

USIC

半導体メーカーに依頼してLSI化するASICのこと。LSIはシリコンウェアを加工したもので、拡散工程と配線工程に分かれる。

拡散工程では、基本素子レベルで表現した回路のうち、配線を除いた部分だけをウェハ上に形成する。配線工程では、金属薄膜で配線し、電気回路を形成する。

拡散工程で基本素子を最適な配置にすることをレイアウト設計といい、この作業が回路集積度を決める。

フルカスタムLSIは上記内容に加えて、フォトマスク(カメラで言うところのフィルム)を作成し、UV照射してウェハにパターンを形成する。ただし時間とお金がかかるので、拡散工程まで終了した汎用ウェアを用いるゲートアレイという方法もある。

FPGA

USICのマスク生成とIC製造をなくし、ランダムロジックをユーザ側で実装するもの。USIC開発のメリットである性能の最適化と量産時の低価格化よりも、ユーザ側の開発コストと開発期間のメリットをとってFPGAが普及した。

FPGAの開発フロー

①デザインエントリ/RTLコーディング
ハードウェア記述言語(VHDLやVerikog)を用いて設計する工程。

②ファンクション検証(RTL)
テストパターンを回路に入力し、設計仕様にあった出力データが得られるかを検証。

③シンセサス(論理合成)
RTLから論理回路部品(ゲートやフリップフロップ等)を割り当てる工程。

④配置配線
論理合成で割り当てた回路部品をFPGAのどこに配置するかを決定する工程。開発ツールが自動的に最適化する。

⑤タイミング検証
内部動作周波数と配置配線後の回路情報に基づいて信号の遅延時間を計算し期待時間以内に収まってるか検証。

⑥デバイスプログラミングとオンチップデバッグ
FPGAにデータを書き込み、システム全体でデバッグを行う工程。

エンベデッドプロセッサとPSoC

エンベデッドプロセッサは、FPGAにMPU(ワンチップマイコン)を内蔵したもの。
PSoCは、FPGAほどの大規模回路には対応していないものの、1チップでデジタル回路だけでなくアナログ回路も自由に構成できるもの。

 第6章 知っておきたいCPUの周辺機能

タイマ系

タイマユニット:クロックでの経過時間をカウントしCPUに割り込みを要求
タイマパルスユニット:PWM信号を生成
リアルタイムクロック:時計機能
ウォッチドッグタイマ:暴走したCPUをリセット

シリアル通信

UART:CPUから送られるパラレルデータをシリアルデータに、外部機器から送られるシリアルデータをパラレルデータに変換する回路。

I2CとSPI:外部機器ではなくCPU周辺のICとデータのやり取りをすることを目的としたもの。

USB:従来のシリアル通信と異なるところは、差動伝送によるパケット通信方式をベースにしているところ。すべての転送はホストコントローラから開始されファンクションコントローラからは転送要求を行えない。

 第7章 現在の組み込みシステムに求められる無線通信機能

RFタグ:バーコードとの違いは、データの書き込みが出来ることと、複数個を同時にスキャン出来ること。

Bluetooth :パソコンやモバイル機器と周辺機器通信のワイヤレス化として登場。シリアル通信からの置き換えが容易。

 第8章 組み込みシステムのハードウェア開発

ハード仕様書では、キーやリモコンで利用できる内容、表示仕様、AV出力、シリアルインタフェースを定義する。

 第9章 組み込みソフトウェアとOS

基本となる4つの構成

①起動処理
IOポートとレジスタ、メモリの初期化、外部ハードウェアの初期化

②終了処理
外部ハードウェアのOFF、CPUのハードウェアのOFF、CPU停止命令の実行

③キースキャン処理
新たにキーが押された状態、キーが押されたままの状態、キーが離された状態、キーが全く押されていない状態を管理

④メイン処理

組み込みOSの必要性

OSが持っている機能を使うことで簡素化できることがメリット。汎用OSでは、カーネルを中心に
・ファイルシステム
・日本語処理システム
・通信制御システム
・グラフィカルユーザインタフェース
・プログラムインタフェース
などを持っているが、ROMやRAMに制約がある組み込み系では、必要なものだけを選択して組み込む。

マルチプロセスとリアルタイム処理

マルチプロセスとは、OS側で複数のプログラムを並列に実行させる機能。複数のプロセスをスケジューリングしてCPUに実行させていくが、最優先で実行が必要なプロセスもある。これを実現するのがリアルタイム処理。

マルチプロセスとリアルタイム処理に必要なOSの機能

①割り込み処理
割り込みが入れば、CPUのレジスタに設定されていたデータをメインメモリの一部に保存(プロセスの退避)し、割り込みにより発生した処理を実行する。その後、プロセスの退避で保存した情報を再びCPUのレジスタに設定し(プロセスの設定)、続きの処理を実行する。

②プロセス管理
複数のプロセスを一定の時間単位で切り替える(並列化する)ために、タイマ割り込みを発生させる。このとき、割り込み処理を行うことで、プロセスの切り替えを実現している。

③プロセス間通信
複数のプロセスでデータをやり取りすること。そのために共有メモリを用意する。ただし、漫然と管理するとウェイト時間が長くなるため、キューを用意して短縮する。また複数のデータを書き換える場合は、メールボックスを介して書き換えたアドレスを通知する。ただし、複数のプロセスがデータを書き換える場合は、排他処理が必要になるためセマフォが必要。

 第10章 組み込みシステムのソフトウェア開発

プログラムを通信処理、演算処理、データ取り出し処理、データ加工処理、表示処理といったモジュールに細分化する。また、細分化したモジュールをアプリケーションとOSが用意しているミドルウェアに切り分ける。

その後、それぞれに対して
・受け取る情報の内容と構成
・処理の分岐
・各処理の内容
・処理結果の出力条件
の4つを明確化する(詳細設計)。

デバッガ

ICE:CPUの動作を再現するものと、オンチップデバッガ(JTAG):システムバスもROMも解放されていないワンチップマイコンでデバッグできるものがある。

組み込みOS

個々のCPUに依存する部分をできるだけ減らすために、ライブラリを共通化し、高級言語で記述できるようにしたもの。ITRONやT-Kernelなどがある。

 最後に

 今回は組み込みシステムに関係が深いキーワードとその簡単な説明を紹介してきました。よくわからないところがあれば、ぜひ本書を読んでみてください。

 私も引き続き組み込みシステムの本を読んで理解を深めていきたいと思います。

 関連記事

数学が苦手な人に読んで欲しい本『数学ガールの秘密ノート/式とグラフ』

(※『数学ガールの秘密ノート/式とグラフ』表紙より)  数学は得意ですか。  私は学生の頃は得意だったのですが、社会人になってからは苦手意識が強くなりました。複雑な数式が理解できなくなってきたからです。  そこで中学レベ …

物語を読むだけで「オートマトン理論」と「形式言語理論」がわかる本『白と黒のとびら』

 オートマトン理論と形式言語理論ってよくわからないですよね。  とはいえ、情報科学や数学、言語学や認知科学などの重要な基礎理論なので、「わからない!」で済ませておくわけにはいきません。  そんな情報科学初心者におすすめな …

三角関数とは円の回転をあらわす関数

(※『数学ガールの秘密ノート/丸い三角関数』表紙より)  三角関数をご存知ですか?  最近、橋下徹さんが学校で教えなくてもいいと言ったサイン、コサイン、タンジェントのことです。  実はこの三角関数。AIやロボティクスなど …

AIを正しく理解したいなら最低限知っておきたいこと/『コンピュータ、どうやってつくったんですか?』

 最近、AIに関する話題が多いですよね。ところが、コンピュータの仕組みについてあまり知らない人が語っているケースも多いように思います。  当たり前のことですが、コンピュータがどのような機械なのかを知らなければ、人工知能技 …

微分って何?/微分がわかれば変化が捉えられる

(※『数学ガールの秘密ノート/微分を追いかけて』表紙より)  微分とは何か説明できますか?  結論からいえば、「瞬間の変化率」を求めることです。  たとえば、ある時刻における新幹線の瞬間速度を捉えるために微分を求める。ま …

物理が苦手な人におすすめの本『いやでも物理が面白くなる』

 物理って面白くないですよね。  私は理系の大学を出ていますが、高校のときは物理がまったく面白くありませんでした。  なぜなら、理屈抜きに数式を暗記し、「問題」の「答え」を機械的に、そして限られた時間内に見つけることを要 …

線形代数イロハの「イ」を理解しよう

(※『マンガ 線形代数入門』表紙より)  線形代数をご存知ですか。  高校で行列を習った人も多いと思いますが、少し強引な説明をすると行列を使った演算のことです。  行列を使えば、連立方程式などの問題がパソコンを使って簡単 …

当たり前のことから始めよう!?『数学ガールの秘密ノート/整数で遊ぼう』

(※『数学ガールの秘密ノート/整数で遊ぼう』表紙より)  「数学をもう一度学び直そう!?」と思って読みはじめた本『数学ガールの秘密ノート』。  第2弾の本作は、前作より少し難しくなっていますが、数学マジックなど楽しく学べ …

数学者が辿り着いた幸せに生きる方法とは?/『数学する人生』感想

 数学者と言うと堅いイメージがありますよね。世間で騒がれているような些細なことに興味がない人が多いように思います。  しかし、そんな数学者だからこそ、私たち凡人とは違う視点で生き方について考えられるんですよね。  『数学 …