ウインドリバーのオンラインサポートTechTip

第6回 kprintfを使ってデバイスドライバの簡単デバッグ
今回のTechTipは、kprintfです。Kprintfは、シリアルI/Oにてポーリングモードで動作するローレベルのプリント機能です。printfと同じ機能でありながら、通常できないカーネル起動時の出力を可能にします。VxBusのデバッグでOS起動前は、通常、ICEやLEDを点滅させるなどでデバッグするしかありませんので、多くの時間を要していました。しかし、 VxBus対応のドライバーのデバッグでBSPの初期のブート時にprintfの代わりに使用することで、シリアルドライバーの初期化前でも、print文を表示させることができます。下記の図をご覧ください。
通常は、sysHwInit2が終了しないとシリアルにログを出すことはできません。そこでsysHWInitでkprintfの初期化をすれば、それ以降のドライバー、カーネルの立ち上げ時のprint文を表示させることができます。
それでは、実際にVxBusの初期化時にkprintfでメッセージを表示させる方法をご紹介いたします。(手順は、VxWorks6.8以降を想定しています。)

新たにデバッグ文を追加したい場合は、
VXB_DEBUG_MSG(2,"vxbDevInitInternal: vxbInitPhase = 2\n",1,2,3,4,5,6);
のように表示したいレベルを付けてください。
通常このタイミングでは表示されないデバッグ文をkprintfを使うことで、可能にするので、デバイスドライバの開発が非常に容易になるでしょう。ぜひ、お試しください。
Technical Tips一覧 »ページの先頭へ戻る »

