FrootsPiのデバイスドライバ
Raspberry PiをFrootsPi基板に取り付ける前に、
/boot/firmware/usercfg.txt
に次の行を追加してください。
$ sudo vim /boot/firmware/usercfg.txt`
enable_uart=0
dtoverlay=spi1-3cs
dtoverlay=pi3-disable-bt
dtparam=i2c_baudrate=100000
dtoverlay=mygpio
enable_uart=0
でUARTをオフしないと、FrootsPi基板接続じにシリアルコンソールが起動してしまい、ログインできません。
dtoverlay=spi1-3cs
とdtoverlay=pi3-disable-bt
は、SPI1を使用するために必要です。
SPI1が使用できる代わりにBluetoothが使えなくなります。
dtparam=i2c_baudrate=100000
はI2Cのクロック周波数を100kHzにします。
周波数の適正値は調査中です。
dtoverlay=mygpio
はGPIOのプルアップ/プルダウンを設定するために必要です。
後ほどmygpio.dtbo
を生成し、/boot/firmware/overlays/
にコピーするスクリプトを実行します。
$ sudo apt install linux-headers-$(uname -r) build-essential
$ git clone https://github.com/SSL-Roots/FrootsPiDriver
$ cd FrootsPiDriver/utils
$ ./start.bash
$ sudo apt install linux-headers-$(uname -r) build-essential
# モジュールのビルド
$ git clone https://github.com/SSL-Roots/FrootsPiDriver
$ cd FrootsPiDriver/srd/driver
$ make
# モジュールのインストール
$ sudo insmod frootspi.ko
# デバイスファイルに権限を与える
$ sudo chmod +x /dev/frootspi*
# デバッグメッセージの確認
$ dmesg
# モジュールのアンインストール
$ sudo rmmod frootspi
$ cd FrootsPiDriver/utils
$ ./install_dtbo.bash
$ sudo reboot
サンプルプログラム集 (./samples) も見てね。
デバイスドライバ(キャラクタデバイス)の練習用で作成したデバイスファイルです。
# 使い方
$ echo "HELLO FROOTSPI" > /dev/frootspi_hello0
$ cat /dev/frootspi_hello0
HELLO FROOTSPI
プッシュスイッチの状態を取得します。
負論理回路なので押されたら0
です。
# 使い方
$ cat /dev/frootspi_pushsw0
1
プッシュスイッチの状態を取得します。
負論理回路なのでON = 0
です。
# 使い方
$ cat /dev/frootspi_dipsw0
1
LEDを点灯・消灯させます。
1 = 点灯
、0 = 消灯
です。
# 使い方
$ echo 1 > /dev/frootspi_led0
$ echo 0 > /dev/frootspi_led0
LCDに文字を出力します。 半角英数記号と半角カタカナに対応してます。 改行コードを入れると2行目にも出力します。
# 使い方
# エスケープシーケンスを使うためechoに -e オプションを付けます
# 改行コードを書き込むため、teeコマンドを使います
$ echo -e "FrootsPi\nフルーツパイ" | tee /dev/frootspi_lcd0
FrootsPi
フルーツパイ
フォーマットを整える方法
$ sudo apt install clang-format
$ cd FrootsPiDriver/src/driver
$ clang-format -i frootspi_main.c
- License: GPL-2.0
- 参考資料