組み込みシステム設計者のためのLIN2.0マイコン実装術(後編) ――スレーブ・ノード用ドライバ・ソフトウェア開発のポイント
● 機能ごとにモジュール化する
図4に,LINドライバ(ソフトウェア)の構成例を示します.最下層はマイコンのハードウェアです.タイマ,UART,外部割り込み(INTPx)を使います.用途はそれぞれ,次のとおりです.
- タイマ :各種時間規定の実現
- UART:ヘッダの一部の受信とレスポンスの送受信
- INTPx:ブレークの検出,同期バイトの計測,ウェイクアップの検出
下から2層目には物理リソースのドライバを配置しています.この層でマイコンごとのハードウェア仕様の差異を吸収することにより,移植性を確保しています.
LINプロトコルそのものはLINコア・モジュールという部品で実現しています.このモジュールでは,LINスレーブ・タスクの基本機能であるヘッダ受信,データ(レスポンス)送受信,スリープ制御などを行います.メッセージ制御モジュールが,これらのモジュールを制御して実際の通信を行います.
図4 プログラムの構造
移植性,拡張性などを考慮して,階層化と部品化を行っている.