Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

デバイスドライバのUbuntu Server 24.04への対応 #84

Merged
merged 25 commits into from
Sep 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9a3044f
kernel 6.4.0以降のclass_create関数の引数変化に対応
KuraZuzu Jul 16, 2024
c9479c3
"spi_driver"のメンバ変数"remove"の型変更に合わせて" mcp3204_remove"の型も変更
KuraZuzu Jul 18, 2024
5f6ed95
"i2c_driver"のメンバ変数"remove"の型変更に合わせて" rtcnt_i2c_remove"の型も変更
KuraZuzu Jul 18, 2024
fa2b3e1
"i2c_driver"のメンバ変数"probe"の引数変更に合わせて"rtcnt_i2c_probe"の引数を変更し、idを新規追加され…
KuraZuzu Jul 18, 2024
4c54283
1つ前のコミットでの"rtcnt_i2c_probe"の変更カーネルが6.2.0だったため分岐条件を修正
KuraZuzu Jul 19, 2024
7c00077
mcp3204について、デバイスツリーをオーバーレイで呼び出す処理で対処
KuraZuzu Aug 23, 2024
460d965
buzzer内部のマクロで#elseに#が付いておらずにブザーのクラスが作成されていなかった天を修正。
KuraZuzu Aug 26, 2024
9dc585b
デバイスファイル作成が成功しているかをdevice_createの引数から判定する処理を追加
KuraZuzu Aug 26, 2024
2e320a2
spiをサーチするコールバック関数が過去のカーネルでも実装されてしまう点を修正。分岐条件の大なり小なりを修正して扱いやすいように変更
KuraZuzu Aug 26, 2024
c393000
デバイスツリーから受け取るmcp320x_devの構造体の定義を必要なバージョンのみで行うように変更
KuraZuzu Aug 26, 2024
3d1860e
dtoverlayを/boot/firmware/config.txtの末尾に追加するスクリプトを追加
KuraZuzu Aug 27, 2024
3c5cb33
Raspberry Pi のバージョン指定が2から4に変わってしまっていたので修正
KuraZuzu Aug 28, 2024
988a4b3
"/boot/firmware/config.txt"へ書き込むスクリプトを削除
KuraZuzu Aug 28, 2024
436f93d
マクロ定義部分のインデントを修正
KuraZuzu Aug 28, 2024
cd4967a
リンタに合わせたコードフォーマットの修正
KuraZuzu Aug 29, 2024
d93887e
今回のUbuntu Server 24.04の対応に合わせてバージョンを変更
KuraZuzu Aug 29, 2024
294b6dc
Merge branch 'master' into spi-overlay
KuraZuzu Aug 29, 2024
fd50c21
Merge branch 'master' into spi-overlay
KuraZuzu Aug 29, 2024
6f6b636
Merge branch 'master' into spi-overlay
KuraZuzu Sep 2, 2024
5dad352
Ubuntu 24.04をホストとしたRaspberry Pi用のカーネル6.6をCIのbuild対象に追加
KuraZuzu Sep 2, 2024
093abac
カーネルrpi-6.6yのホスト側のバージョンを22.04に修正
KuraZuzu Sep 3, 2024
5cf2297
modpostフェーズでの警告をエラーとして扱わない処理とするように環境変数を設定
KuraZuzu Sep 3, 2024
e6d91e7
rpi-6.6.yはHost側のバージョンを24.04変更
KuraZuzu Sep 3, 2024
87d7579
READMEを更新
KuraZuzu Sep 3, 2024
80b76a7
Raspberry Pi OSでdtoverlayの追加が不要なバージョンについてコメントを追加
KuraZuzu Sep 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/driver-cross-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ jobs:
- { HOST: 20.04, KERNEL_VER: rpi-5.4.y, OS_BIT: armhf } # Debian 10 (Buster)
- { HOST: 20.04, KERNEL_VER: rpi-5.10.y, OS_BIT: armhf } # Debian 11 (Bullseye)
- { HOST: 22.04, KERNEL_VER: rpi-5.15.y, OS_BIT: armhf } # Debian 11 (Bullseye)
# - { HOST: 24.04, KERNEL_VER: rpi-6.6.y, OS_BIT: armhf } # Debian 12 (Bookworm) 32-bit
# - { HOST: 24.04, KERNEL_VER: rpi-6.6.y, OS_BIT: arm64 } # Debian 12 (Bookworm) 64-bit
- { HOST: 24.04, KERNEL_VER: rpi-6.6.y, OS_BIT: armhf } # Debian 12 (Bookworm) 32-bit
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

現状の設定では、RasPi 4Bの環境でしかビルドテストできていません。

別のPRで、3Bの32bit版でもテストできるように項目を増やしてください。
参考:https://www.raspberrypi.com/documentation/computers/linux_kernel.html#cross-compile-the-kernel

- { HOST: 24.04, KERNEL_VER: rpi-6.6.y, OS_BIT: arm64 } # Debian 12 (Bookworm) 64-bit

runs-on: ubuntu-${{ matrix.env.HOST }}

Expand Down Expand Up @@ -76,7 +76,7 @@ jobs:
run: |
cd linux
if [ "${{ matrix.env.OS_BIT }}" == "armhf" ]; then
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- M=$GITHUB_WORKSPACE/src/drivers V=1 modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- M=$GITHUB_WORKSPACE/src/drivers V=1 KBUILD_MODPOST_WARN=1 modules
else
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- M=$GITHUB_WORKSPACE/src/drivers V=1 modules
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- M=$GITHUB_WORKSPACE/src/drivers V=1 KBUILD_MODPOST_WARN=1 modules
fi
39 changes: 29 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,19 @@ Run the installation script ([`./utils/build_install.bash`](https://github.com/r

インストール用のシェルスクリプト([`./utils/build_install.bash`](https://github.com/rt-net/RaspberryPiMouse/blob/master/utils/build_install.bash))を実行します。

### for Raspbian
### for Raspberry Pi OS

`/boot/firmware/config.txt`を編集し、ファイル末尾に以下の設定を追加します。

```sh
arm_64bit=0 # "64-bit"版では不要です
dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000 # カーネル5.16未満の場合は不要です
dtparam=i2c_baudrate=62500
```

Raspberry Piを再起動します。

以下のコマンドでインストールを実行します。

```sh
$ git clone https://github.com/rt-net/RaspberryPiMouse.git
Expand All @@ -22,6 +34,17 @@ $ ./build_install.bash

### for Ubuntu

`/boot/firmware/config.txt`を編集し、ファイル末尾に以下の設定を追加します。

```sh
dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000 # "Ubuntu Server 22.04"では不要です
dtparam=i2c_baudrate=62500
```

Raspberry Piを再起動します。

以下のコマンドでインストールを実行します。

```sh
$ git clone https://github.com/rt-net/RaspberryPiMouse.git
$ cd RaspberryPiMouse/utils
Expand All @@ -40,7 +63,7 @@ $ sudo insmod rtmouse.ko

## Notes for the installation (ドライバの導入の際の注意)

### for Raspbian
### for Raspberry Pi OS

Enable SPI and I2C functions via `raspi-config` command.

Expand All @@ -50,17 +73,13 @@ Enable SPI and I2C functions via `raspi-config` command.
* SPI機能を「入」にする。
* I2C機能を「入」にする。

2017年1月現在、以下の設定は不要です。
rtmouseをインストールして不具合が出た場合のみ以下の設定を追加で行ってください。

* Device Tree機能を「切」にする。

### for Raspberry Pi 4

Edit [`rtmouse.c`](https://github.com/rt-net/RaspberryPiMouse/blob/dd0343449951a99b067e24aef3c03ae5ed9ab936/src/drivers/rtmouse.c#L54) to change the defined value `RASPBERRYPI` from '2' to '4'.

Raspberry Pi 4ではCPUのレジスタがそれまでのRaspberry Piとは異なります([issues#21](https://github.com/rt-net/RaspberryPiMouse/issues/21))。
Raspberry Pi 4で本ドライバを使用する際には`rtmouse.c`の以下の行(2020年4月13日現在の最新版のv2.1.0では[54行目](https://github.com/rt-net/RaspberryPiMouse/blob/dd0343449951a99b067e24aef3c03ae5ed9ab936/src/drivers/rtmouse.c#L54))を`RASPBERRYPI 4`に書き換えてビルドする必要があります。
Raspberry Pi 4ではCPUのレジスタがそれまでのRaspberry Piとは異なります([issues#21](https://github.com/rt-net/RaspberryPiMouse/issues/21))。
Raspberry Pi 4で本ドライバを使用する際には`rtmouse.c`の以下の行(2020年4月13日現在の最新版のv2.1.0では[54行目](https://github.com/rt-net/RaspberryPiMouse/blob/dd0343449951a99b067e24aef3c03ae5ed9ab936/src/drivers/rtmouse.c#L54))を`RASPBERRYPI 4`に書き換えてビルドする必要があります。
※[`./utils/build_install.bash`](./utils/build_install.bash)を実行すると、Raspberry Piのモデルに合わせて[`rtmouse.c`](./src/drivers/rtmouse.c)が[自動で書き換わります](https://github.com/rt-net/RaspberryPiMouse/blob/a9af4fa2b2a8e34c0f93a6ce5cf88ebd50ff39c2/utils/build_install.raspi4ubuntu.bash#L13-L14)。

```c
Expand All @@ -74,7 +93,7 @@ Raspberry Pi 4で本ドライバを使用する際には`rtmouse.c`の以下の

### パルスカウンタについて

パルスカウンタは値の読み取りにI2Cを使用しています。仕様上は400kHzまでbaudrateを上げることができます(※1)。
パルスカウンタは値の読み取りにI2Cを使用しています。仕様上は400kHzまでbaudrateを上げることができます(※1)。
I2Cのbaudrateを上げると通信に失敗する場合がある([issues#13](https://github.com/rt-net/RaspberryPiMouse/issues/13))ので、基本的にはI2Cのbaudrateはデフォルト値(※2)から変更して62.5kHzに固定してください。

According to
Expand All @@ -86,7 +105,7 @@ Add a following new line in `/boot/firmware/config.txt` to change the i2c_baudra
```
dtparam=i2c_baudrate=62500
```
※1 Raspberry Pi 4 Model B(Ubuntu 18.04とUbuntu 20.04)を搭載して400kHzで通信できることを確認しています。
※1 Raspberry Pi 4 Model B(Ubuntu Server `18.04` / `20.04` / `22.04` / `24.04`)を搭載して400kHzで通信できることを確認しています。
※2 現在設定されているI2Cのbaudrateは以下のコマンドを実行することで確認できます。
```
$ printf "%d\n" 0x$(xxd -ps /sys/class/i2c-adapter/i2c-1/of_node/clock-frequency)
Expand Down
Loading