ドライバの作成


Kompressorボード上の各種デバイスを操作するため、デバイスドライバとして最低限の動作、つまり、アドレスを指定して読み/書きをするだけの汎用ドライバを作成した。また、そのドライバにアクセスするためのサンプルプログラムも作成した。

カーネルモジュールの作成

ここからkiodrv.tar.gzをダウンロードし、~/cross_compile/srcに置く。
 $ cd ~/cross_compile/src/
 $ tar zxvf kiodrv.tar.gz
 $ cd kiodrv
 $ arm-linux-gcc -D__KERNEL__ -DMODULE -O -Wall -c kompressor_io_driver.c
としてコンパイルするとkompressor_io_driver.oが出来るはずなので、それをkompresor上の適当なディレクトリ(/libなど)にコピーしておく。
kompressorボード上でこのドライバを組み込むときは、
 # insmod /lib/kompressor_io_driver.o
とすれば組み込める。ドライバをアンロードするときは、
 # rmmod kompressor_io_driver
とする。

デバイスファイルの作成

このドライバを使用するためには、/devにデバイスファイルを作成する必要がある。また、このドライバは空いているメジャー番号を自動的に使用するようになっているので、デバイスファイルを作成する前にメジャー番号を確認する必要がある。
kompressor_io_driver.oを組み込んだ状態で、
 # cat /proc/devices
として、kompressor_io_driverの行を探し、メジャー番号を確認する。
それに基づいてデバイスファイルを作成する。例えば、メジャー番号が254ならば、
 # mknod /dev/kompressorio0 c 254 0
 # chmod 666 /dev/kompressorio0
とすればよい。(chmodは必要かどうか不明)

サンプルプログラムのコンパイル

アドレスを指定してRead/Writeするだけのプログラムとして、kdrvtestr/kdrvtestwをコンパイルする。
 $ cd ~/cross_compile/src/kiodrv
 $ arm-linux-gcc -Os --static -o kdrvtestr kdrvtestr.c
 $ arm-linux-strip -s --remove-section=.note --remove-section=.comment kdrvtestr
 $ arm-linux-gcc -Os --static -o kdrvtestw kdrvtestw.c
 $ arm-linux-strip -s --remove-section=.note --remove-section=.comment kdrvtestw
とすればkdrvtestr/kdrvtestwができるので、Kompressorボードにコピーする。
これを使うときは、例えば、
 # ./kdrvtestr 0x08000010
とすればCPLDのアドレス0x08000010を読み出す事ができ、
 # ./kdrvtestr 0x08000010 0x00000001
とすればCPLDのアドレス0x08000010に1を書き込む事ができる。
使用できるアドレス範囲は、安全のため、CPLD、FPGA、SharedSRAMのアドレスに限定してある。

[△ Kompressor BoardでLinuxのページへ]
[<< ファイルシステムの作成] [その他のソフトウェアのコンパイル(作成中) >>]

[藤田研究室 トップページへ]

SASAKI Shunsuke