デバイスドライバインターフェース
今回はデータ出力処理のみなので,
OSからデータ書き込みリクエストがあるとlcd_
LCDの1行あたりの文字数は16文字なので16文字目でリスト1の95行目ではLCDでの改行処理をしています。ASCIIコードでスペースより小さいコードは制御コードなので,
その他補足事項
最下位層であるLCD端子の個別制御はそれぞれ次の3つの関数で行っています。
CDのE端子の制御はリスト1の18~24行目で行なっています。
LCDのRS端子の制御はリスト1の27~33行目で行なっています。
4本のデータ端子の制御はリスト1の36~57行目で行なっています。
LCDの制御は汎用I/
LCDデバイスドライバのコンパイルと実行
LCDデバイスドライバのコンパイルには,
リスト2 Makefile
1 TARGET:= lcd.ko
2
3 all: ${TARGET}
4
5 lcd.ko: lcd.c
6 make ARCH=sh CROSS_COMPILE=sh3-linux- -C ../linux-2.6.28.10 M=`pwd` modules
7
8 clean:
9 make ARCH=sh CROSS_COMPILE=sh3-linux- -C ../linux-2.6.28.10 M=`pwd` clean
10
11 obj-m:= lcd.o
12
13 clean-files := *.o *.ko *.order *.mod.[co] *.markers *~
コンパイルは以下のように行います。
$ make make ARCH=sh CROSS_COMPILE=sh3-linux- -C ../linux-2.6.28.10 M=`pwd` modules make[1]: Entering directory `/home/general/linux-2.6.28.10' CC [M] /home/general/lcd/lcd.o Building modules, stage 2. MODPOST 1 modules CC /home/general/lcd/lcd.mod.o LD [M] /home/general/lcd/lcd.ko make[1]: Leaving directory `/home/general/linux-2.6.28.10' $
SH7706LSRボードでLCDデバイスドライバを組み込む場合は insmodコマンドで引数にLCDデバイスドライバを指定します。
比較的新しいLinuxカーネルの場合は自動でデバイスファイルを生成してくれますが,
リスト3 デバイスファイルを生成するシェルスクリプト
1 /bin/sh
2
3 r item in `cat /proc/devices`;
4
5 if [ $item = lcd ]; then
6 mknod /dev/lcd c $major 0
7 fi
8 major=$item
9 ne
次回は
次回はSH7706LSRボードでセルフコンパイル可能なSH3用のgccの移植について解説をします。