組み込みシステム設計者のためのLIN2.0マイコン実装術(前編) ――プロトコル仕様を正しく読みこなすコツ
次章の"WORK FLOW CONCEPT"では,LINクラスタ開発の際のしくみについて概要が示されています(図3).
"NODE CONCEPT"の章ではソフトウェア構造について述べられています.LIN 1.3の仕様書よりも図がわかりやすくなりました(図4).要は,図4のとおりの階層構造のソフトウェアにしなさいということです.API(application program interface)から物理リソース制御(UARTやポート,内部タイマなど,LIN通信に必要となるマイコンのハードウェアの制御)までを,通常,LINドライバと呼ばれるソフトウェアで処理します.多くの場合,半導体メーカやツール・ベンダの設計者がこの部分の開発を担当することになります.一方,セット・メーカの設計者はAPIの仕様を遵守してアプリケーションを作成します.実際には,マイコンの限られたリソースの中で実装しなくてはならないため,いろいろな妥協が必要になります.例えば,速度優先のためにグローバル変数を多用することなどが挙げられます.これには,性能と引き換えにモジュール間やプログラム階層間のインターフェースがあいまいになってしまうという副作用があります.
アプリケーションもドライバも両方開発しなければならない設計者は,APIの境界だけは遵守しておくべきでしょう.図4のように,APIはノードの機能を実現するアプリケーションとLINプロトコルを実現するドライバの境界です.アプリケーションの中でハードウェアに依存する記述を行ったり,LINドライバ内部で管理している情報へAPIを介さずに直接アクセスするような構造をとると,移植性や拡張性が大きく損なわれるだけでなく,(ドライバ部分も含めた)ソフトウェア全体の信頼性も低下してしまいます.