電子機器製品を制御するためは小型コンピュータであるマイコン(MCU)をプログラミングし、電子機器の動作を制御するハードウェア・ソフトウェアを作成するシステム開発が必要となります。今回は、マイコンのシステム開発における重要な項目について説明いたします。
何らかの製品を開発するために必要となる、マイコンを使った組み込みシステムの機能は、製品全体のシステム設計によって分担する機能が決められることになります。
通常の場合、製品設計は図-1のような手順を繰り返すことになります。この設計の最初に行われるのがシステム設計で、ここで市場調査や競合他社などの調査結果から、製品の具体的な内容を決めることになります。
その最終段階で、ハードウェアとソフトウェアの機能分担が行われ、その一部として組み込みシステムの内容が決まることになります。その後、ハードウェア設計とソフトウェア設計に分かれますが、組み込みシステムの分担ではハードウェアとソフトウェアが分離されず同じチームで分担することも多くなっています。
図1 製品のシステム設計
このシステム設計の一部として切り出された組み込みシステムの設計では、次のような項目についてより深く検討することになります。
1)要件定義の明確化
最初に行うのはシステム設計で切り出された機能を明確にすることです。ここでのポイントは次のような項目になります。
① どの程度の性能が必要か
ここではリアルタイム性や応答時間の見積りが重要です。これにより組み込みシステム全体のハードウェアとソフトウェアの分担が決まります。つまり 高速な応答が必要でソフトウェアでは間に合わない場合はハードウェアで分担します。さらにマイコンに要求される性能も左右されますから、マイコン選定の大きな要素となります。
② 使用環境の確認
温度、湿度、振動、塵芥などの環境により表1のような影響がでます。また利用できる電源の確認も重要な要素です。安定度や瞬断の有無の確認が必須です。
表1
項目 | 影響要素 |
---|---|
温度 |
高温、低温により使う半導体の仕様が変わる 放熱、保温対策が必要となり実装設計に影響する |
湿度 | 実装方法で結露などへの対策が必要 |
振動 |
長時間継続する振動は多くの問題を引きおこすので、 部品の固定方法、筐体の構造に影響する |
塵芥 | 密閉が必要となると筐体設計と冷却方法にも影響する |
③ 目標コストや製品寿命
コストは常に部品選択の制限となり、常に最適なものを使えるとは限りません。使える範囲で工夫をしなければならないことも多くなります。
④ プロトタイプ開発の必要性の確認
機能、性能の実現性が不明な場合には、部分的なプロトタイプで確認することが必要となります。
2)ハードウェア設計の留意点
要件定義から決められた性能機能を満足するハードウェア設計での留意点は次のようになります。
① 適切なマイコンの選定
性能、メモリ容量、消費電力などの要素による選択が必要です。常に最新の情報の調査が重要ですし、これまでの自社の既存の資産を考慮して開発工数を含めたコストパフォーマンスで選定することになります。
② 内蔵周辺モジュールの確認とI/Oの数の確認
必要となるマイコン内蔵の周辺モジュールの有無の確認が必要です。特に最近のマイコンは表2のように内蔵周辺モジュールが豊富になっていますから、これらを使うことで大幅に開発コストを削減することができることもあります。ここは設計で重要な要素となります。デジタル入出力、アナログ入力、通信インターフェースを含め必要なピン数を見積ります。
表2
モジュール名 | 機能内容 |
---|---|
ADC |
ADC:Analog to Digital Convertor アナログ電圧を入力とし、電圧を数値に変換するモジュール 10ビット、12ビットの分解能のものが多い |
DAC |
DAC:Digital to Analog Convertor 数値をアナログ電圧として出力するモジュール |
PWM |
PWM:Pulse Width Modulation(パルス幅変調)のパルス出力モジュール モータの速度制御やLEDの調光制御に使われる |
UART |
UART:Universal Asynchronous Receiver Transmitter パソコンなどとのシリアル通信用のモジュール |
I2C |
I2C:Inter Integrated Circuit センサや液晶表示器などと接続するシリアル通信用のモジュール |
SPI |
SPI:Serial Peripheral Interface メモリやAD、DAコンバータなどと接続する高速シリアル通信用モジュール |
GPIO |
GPIO:General Purpose Input Output 汎用のデジタル入出力モジュール |
Timer | 一定間隔の時間を生成するモジュール |
③ 電源設計
使える電源を確認し、それからマイコンや周辺デバイスに必要な電源を供給するための電源回路を設計します。ノイズ対策や瞬断対策、保護回路などの検討も必須です。
④ 信頼性設計
必要な寿命や、稼働性能から必要な信頼度を確保できる部品選択や回路設計が必要です。 特に最近ではESD対策が必須ですし、特に高信頼が要求される場合には冗長化が必要になることもあります。
3)ソフトウェア設計の留意点
開発負荷を最小にすべくハードウェア設計と協調しながら設計を進めることが重要です。ソフトウェア設計で留意するポイントは次のようになります。
① リアルタイム性の確保
要求される応答速度を満足させるために必要なプログラミング言語とプログラム構成を検討します。複数機能の並列処理が必須となる場合には、RTOSを活用することも重要な要素となりますし、マイコン選定にも影響を与えることになります。
② 割り込み処理の管理
複数の割り込みが必要な場合には、優先度、排他制御、競合回避などを検討し、プログラム構造の設計が必要となります。これらの検討時には応答のタイミング制御が重要な要素となります。
③ メモリ管理
必要なメモリ容量の見積りでメモリ配置を設計します。これで必要なメモリ容量を把握します。
④ モジュール化、再利用性の高いコード設計
プログラム設計では、モジュール化とモジュールの名前付けが重要な要素です。これらをうまく設計すればプログラム構造が明確になり、メンテナンスも再利用性も高いコードとなります。
⑤ ファームウェア更新の必要性の検討
製品リリース後のファームウェア更新が必要かどうかの検討です。場合によってはOTAによる更新も必要となります。
4)通信と接続性の検討
周囲のデバイスや上位、下位システムとの接続が必要かどうかの検討です。接続が必要な場合には、その通信方法の検討が必要で、次のようなことに留意が必要です。
① 通信の方法の確認
通信には多くの種類があり、プロトコルも個々に異なっていることも多いので、十分なすり合わせが必須です。
② テスト方法の設計
通信ではテスト方法や通信の正常性の確認方法を事前に設計しておくことが重要です。
③ 通信エラー対策
通信で接続する場合には、エラー処理が重要で、再送制御、チェックサム、タイムアウト処理などを設計しておきます。
5)セキュリティ対策の検討
最近の組み込みシステムではセキュリティ対策が必須の機能となっています。ここでは次のような留意が必要です。
① セキュリティレベルの設計
セキュリティ対策には、どのレベルの対策をすべきかの設計が重要です。そのレベルによりハードウェア、ソフトウェア両方に大きな負荷かかることもあります。ここではコストと納期のバランスを考えながら設計します。
6)検証、テスト方法
システムを完成させるまでの段階的なテスト方法を設計しておく必要があります。ここでは次のようなことに留意が必要です。
① テスト段階ごとのテストしやすさの設計
単体テスト、結合テスト、システムテストの段階ごとのテスト方法を検討しておき、テストしやすく、確実な方法とすることが必要です。また不具合の原因特定が容易なプログラム設計とすることも重要な要素です。
② 検査治具の準備
あらかじめ検査に必要な治具を設計し用意しておくことが重要ですし、現場でのソフト更新や設定変更が容易にできるようにしておきます。
③ スケジュールの設定
開発全体のスケジュールと整合させながらテスト段階をスケジュールし、その進捗具合を見えるようにしておくことが重要です
以上が組み込みシステムの設計での留意点になります。
第2回については、ハードウェア設計方法を解説していきます。
PDF 資料請求
特別連載_MCU_1:組み込みシステムのシステム設計とは
著者プロフィール
後閑 哲也 Tetsuya Gokan
経歴 |
1971年 東北大学卒業後 大手通信機メーカにて各種の制御装置を開発 2003年 有限会社マイクロチップ・デザインラボ設立 |
---|---|
現在の活動 |
|
書籍 (技術評論社) |
|