デバイスドライバ (tef_em1d 用) ソース構成



1. はじめに

ここでは、T-Engine リファレンスボード (tef_em1d) 用の以下のデバイスドライバのソースコードの構成に関して説明します。

各デバイスドライバの機能仕様に関しては、トロンフォーラム から公開されている「T-Engine 標準デバイスドライバ仕様」を、実装に依存する部分に関しては、 「T-Kernel 2.0(tef_em1d)実装仕様書」 を参照してください。

2. ディレクトリ構成

デバイスドライバのソースコードは、T-Kernel ソースコードパッケージの中に含まれています。

デバイスドライバのソース全体のディレクトリ構成図を以下に示します。

  tkernel_source
    |
    |-- ...               ( T-Kernel ソースディレクトリ )
    |-- lib                     ライブラリ
    |-- include                 定義ファイル (ヘッダファイル)
    |   `-- device                 デバイスドライバ定義ファイル
    |-- etc                     make ルール、各種スクリプト
    |
    |-- driver           デバイスドライバソースディレクトリ
       `-- <機種名>
           |
           |-- clk              時計ドライバ
           |   |-- build
           |   `-- src
           |       `-- svc          拡張 SVC インタフェース用
           |
           |-- console          コンソールドライバ
           |   |-- build
           |   `-- src
           |       `-- svc          拡張 SVC インタフェース用
           |
           |-- kbpd             KB/PD ドライバ
           |   |-- build
           |   `-- src
           |
           |-- lowkbpd          KB/PD - 実I/Oドライバ
           |   |-- build
           |   `-- src
           |
           |-- screen          スクリーンドライバ
           |   |-- build
           |   `-- src
           |
           |-- sysdsk          システムディスクドライバ
           |   |-- build
           |   |-- obj            MMC 用オブジェクトファイル
           |   `-- src
           |
           `-- build           全体構築ディレクトリ

3. clk ディレクトリ

T-Engine リファレンスボード上の RTC に対応した時計ドライバのソースです。

RTC のアクセスで必要になるシリアルインタフェース (I2C,SPI) は、他のデバイスドライバでも使用するため、サブシステムとして分離して実装し、拡張 SVC でアクセスするようにしています。そのため、拡張 SVC のインタフェースライブラリが必要になります。

構築ディレクトリで make を実行すると、ドライバのオブジェクトファイルと、拡張 SVC のインタフェースライブラリの両方が構築されます。インタフェースライブラリのソース、および定義ファイルは"src/svc" サブディレクトリに置かれますが、存在しない場合は、"perl" スクリプトにより自動的に生成されます。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされ、インタフェースライブラリ (libem1diic.a) は、"tkernel_source/lib/build/<機種名>" ディレクトリにコピーされます。

4. console ディレクトリ

T-Engine リファレンスボード上のシリアルポートに対応したコンソールドライバのソースです。

コンソールドライバは、サブシステムとして実装され、拡張 SVC でアクセスされますので、拡張 SVC のインタフェースライブラリが必要になります。

構築ディレクトリで make を実行すると、ドライバのオブジェクトファイルと、拡張 SVC のインタフェースライブラリの両方が構築されます。インタフェースライブラリのソース、および定義ファイルは "src/svc" サブディレクトリに置かれますが、存在しない場合は、"perl" スクリプトにより自動的に生成されます。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされ、インタフェースライブラリ (libconsolesvc.a) は、"tkernel_source/lib/build/<機種名>" ディレクトリにコピーされます。

5. kbpd ディレクトリ

一般的なキーボードとポインティングデバイス(マウス)に対応した KB/PD ドライバのソースです。 本ドライバでは、実際のデバイスに依存しない論理的な処理のみを行い、実際のデバイスに対応した処理は実 I/O ドライバ (lowkbpd)で行います。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされます。

6. lowkbpd ディレクトリ

T-Engine リファレンスボードに接続されるタッチパネル、およびボード上のボタンスイッチに対応した実I/O ドライバのソースです。

タッチパネルをポインティングデバイスとみなして、ボタンスイッチをキーボードのキーとみなして処理します。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされます。

7. screen ディレクトリ

T-Engine リファレンスボードに接続される LCD に対応したスクリーンドライバのソースです。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされます。

8. sysdsk ディレクトリ

T-Engineリファレンスボード上のマイクロ SD カードスロットに対応したシステムディスクドライバのソースです。

ただし、マイクロ SD カード(MMC)アクセス用関数のソースファイルは含まれていません。"obj" サブディレクトリにオブジェクトファイルが置かれています。

マイクロ SD カード(SD, SDHC) にのみ対応し、他のディスクメディアには対応していません。

構築ディレクトリで構築したオブジェクトファイルは、"driver/<機種名>/build" ディレクトリにコピーされます。

9. build ディレクトリ

すべてのデバイスドライバを一括して構築する構築ディレクトリです。構築した各デバイスドライバのオブジェクトファイルは、本ディレクトリに置かれ、その際、古いオブジェクトファイルは、"!OLD" の名称のサブディレクトリにバックアップされます。

本ディレクトリに置かれた各デバイスドライバのオブジェクトファイルは、T-Kernel の実行イメージ構築の際に使用されます。