ドライバ開発とネットワークプログラミングT-Engineプログラミング入門(4)(1/6 ページ)

ドライバの作成と複数のモジュールからなるアプリ開発およびネットワークプログラミングについて解説する

» 2006年09月08日 00時00分 公開
[中村 大真 パーソナルメディア株式会社,@IT MONOist]

 これまでこの連載では、タスクやハンドラといった組み込み分野の基礎技術を取り上げてきました。

 今回は連載のまとめとして、T-Engineの大きな強みの1つであるデバイスドライバ(以下ドライバ)を取り上げます。デジタル温度計のプログラムを通して、T-Engineでのドライバ開発と、ドライバを利用したアプリケーション開発をマスターしましょう。

デジタル温度計のシステム構成

 この連載の想定環境であるTeaboardのボード上には、温度センサが実装されています。これを利用して現在の温度を測定し、7セグメントLEDに表示します。Teaboardにはイーサネットポートも付いているので、これを活用して「Web配信機能付きデジタル温度計」にしてみましょう。つまり、Teaboardをネットワークに接続しておけば、別の場所にあるPCからWebブラウザでTeaboardにアクセスすることで、現在の温度を表示させることができます。

 今回使用するデバイスは、図1のとおりです。

今回使うTeaboard上のデバイス 図1 今回使うTeaboard上のデバイス

 次にソフト設計です。図2のように、Teaboard側は次の5個のモジュールで構成しました。

LEDドライバ

 前回までは直接7セグメントLEDを制御していました。今回はアプリケーションから独立したLEDドライバを作成し、アプリケーションからドライバにライトする(書き込む)ことでLED表示を行います。

温度センサドライバ

 同じく温度センサのドライバも作成して、アプリケーションからドライバをリードする(読み出す)ことで温度を読み出せるようにします。

アプリケーションプロセス

 アプリケーション本体は、前回取り上げたマルチタスクの技法を用いて、3つのタスクで構成します。

メインタスク
温度センサドライバから現在の温度をリードして、その値をLEDドライバにライトします。

Webサーバタスク
Webブラウザからのコネクトを受け付け、後の処理をセッションタスクに渡します。

セッションタスク
温度センサドライバから現在の温度をリードして、その値をWebブラウザにHTMLで返します。

 今回はこの3つのタスクをプロセスとして1つにまとめて、安全なアプリケーションを構築します。

TCP/IPマネージャ

 ネットワークについては、Teaboardに標準で付属しているTCP/IPマネージャというミドルウェアを使います。

LANドライバ

 LANドライバもTeaboardに標準で付属しています。TCP/IPマネージャ内部から呼び出されるので、アプリケーションから直接呼ぶことは通常ありません。

デジタル温度計のモジュール構成 図2 デジタル温度計のモジュール構成

 このように、バイナリレベルでモジュール化できるところがT-Engineの大きな特徴です。各モジュールは完全に独立して開発し、個別にロードやデバッグ、変更ができます。作成したモジュールを別の開発案件に再利用することも簡単です。

※コラム:プロセスとは
プロセスとは、タスクに独立したメモリ空間と資源を与えたもので、T-Kernel Extensionで実現されます。プロセスはメモリ保護が行われるので、自プロセス以外のメモリ内容を破壊することはありません。
また、ミドルウェアの資源もプロセス単位で管理されます。例えばプロセスが異常終了しても、そのプロセスがオープンしていたデバイスは自動的にクローズされます。このような理由で、プロセスは安全なシステム構築に役立ちます。


       1|2|3|4|5|6 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.