GadgetSeed  0.9.6
デバイスドライバ

GadgetSeedは標準化されたデバイスドライバAPIとデバイスドライバ構造体が定義されています。

これらは device.h で定義されています。


デバイスドライバ構造体

デバイスドライバ構造体は以下の構造体で定義されています。

st_device デバイスドライバ構造体

GadgetSeedでアプリケーションがIOをアクセスするにはデバイスドライバを経由することを推奨します。
GadgetSeedでデバイスドライバを開発することは device データとそのメソッドを作成することになります。


デバイスドライバユーザAPI

ユーザがデバイスにアクセスするためのAPIとして、以下のAPIがあります。

include ファイル : device.h

API名 機能
open_device() デバイスをオープンする
close_device() デバイスをクローズする
lock_device() デバイスをロックする
unlock_device() デバイスをアンロックする
read_device() デバイスよりデータを読み出す
block_read_device() デバイスよりブロックデータを読み出す
getc_device() デバイスよりデータを1バイト読み出す
write_device() デバイスにデータを書き込む
block_write_device() デバイスにブロックデータを書き込む
putc_device() デバイスにデータを1バイト書き込む
ioctl_device() デバイスを制御する
seek_device() デバイスのアクセスポイントを設定する
sync_device() デバイスの書き込みデータの同期をとる
select_device() デバイスのアクセス準備完了を待つ

デバイスタイプ

GadgetSeedでは以下のデバイスタイプが定義されています。 また、各デバイスタイプで実装すべき ioctl コマンドが規定されています。 ioctl コマンドは各デバイスタイプ用の include ファイルに定義されています。

デバイスタイプ 説明 includeファイル
タイマ 汎用タイマデバイス timer_ioctl.h
UART シリアル通信デバイス uart_ioctl.h
RTC時計 リアルタイムクロックデバイス rtc_ioctl.h
I2Cマスター I2Cマスターコントローラデバイス i2c_ioctl.h
SPIマスター SPIマスターコントローラデバイス spi_ioctl.h
ストレージ SD、MMC等のストレージデバイス sd_ioctl.h
ビデオ出力 LCD等の画像表示デバイス video_ioctl.h
ビデオIO 画像表示デバイス制御用IO vio_ioctl.h
圧電ブザー 圧電ブザー等のサウンダデバイス buzzer_ioctl.h
外部割り込み(IRQ) 外部割り込み端子 irq_ioctl.h
Etherデバイス Etherデバイス ether_ioctl.h
GPIO GPIOデバイス gpio_ioctl.h
AUDIO AUDIOデバイス audio_ioctl.h
タッチセンサ タッチセンサデバイス ts_ioctl.h
環境センサ 温度センサ、湿度センサ、気圧センサ等 envsnsr_ioctl.h