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

Conversation

KuraZuzu
Copy link
Contributor

@KuraZuzu KuraZuzu commented Aug 28, 2024

What does this implement/fix?

Ubuntu Server 24.04上でデバイスドライバをビルドして動作するように修正しました。

Does this close any currently open issues?

#81 をクローズします。

How has this been tested?

以下の手順にしたがってビルドとサンプルプログラムの動作確認をしました。

環境

  • Raspberry Pi Mouse V3
    • Raspberry Pi 4B
      • Ubuntu Server 24.04 (kernel: 6.8.0-1008-raspi)
      • Ubuntu Server 22.04 (kernel: 5.15.0-1061-raspi)
      • Raspberry Pi OS (32-bit) (kernel: 6.6.31+rpt-rpi-v8)
      • Raspberry Pi OS (64-bit) (kernel: 6.6.31+rpt-rpi-v8)
    • Raspberry Pi 3B v1.2
      • Ubuntu Server 24.04 (kernel: 6.8.0-1008-raspi)
      • Ubuntu Server 22.04 (kernel: 5.15.0-1061-raspi)
      • Raspberry Pi OS (32-bit) (kernel: 6.6.31+rpt-rpi-v8)
      • Raspberry Pi OS (64-bit) (kernel: 6.6.31+rpt-rpi-v8)

手順

以下の手順で動作確認まで行います。環境により、操作が違います。

Ubuntu Server 24.04

  1. sudo apt update && sudo apt upgradeを実行します

  2. /boot/firmware/config.txtを編集し、ファイル末尾に以下の記述を追加します

dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000
dtparam=i2c_baudrate=62500
  1. Raspberry Pi を再起動します

  2. 以下のコマンドを実行し、出力が62500になっていることを確認します

$ printf "%d\n" 0x$(xxd -ps /sys/class/i2c-adapter/i2c-1/of_node/clock-frequency)
62500
  1. ラズパイマウスのデバイスドライバのコードをcloneし、本開発リポジトリにチェックアウトした後にインストールします
$ git clone -b spi-overlay https://github.com/rt-net/RaspberryPiMouse.git
$ cd RaspberryPiMouse/utils
$ sudo apt install linux-headers-$(uname -r) build-essential
$ ./build_install.bash
  1. step1.shからstep6.shのサンプルプログラムの動作を確認します(この手順は、ラズパイマウスのマニュアルの通りです)
$ cd ../SampleProgram
$ bash step1.sh
$ bash step2.sh
.
.
.
$ bash step6.sh

Ubuntu Server 22.04

  1. sudo apt update && sudo apt upgradeを実行します

  2. /boot/firmware/config.txtを編集し、ファイル末尾に以下の記述を追加します

Ubuntu`dtparam=i2c_baudrate=62500`
  1. Raspberry Pi を再起動します

  2. ラズパイマウスのデバイスドライバのコードをcloneし、本開発リポジトリにチェックアウトした後にインストールします

$ git clone -b spi-overlay https://github.com/rt-net/RaspberryPiMouse.git
$ cd RaspberryPiMouse/utils
$ sudo apt install linux-headers-$(uname -r) build-essential
$ ./build_install.bash
  1. step1.shからstep6.shのサンプルプログラムの動作を確認します(この手順は、ラズパイマウスのマニュアルの通りです)
$ cd ../SampleProgram
$ bash step1.sh
$ bash step2.sh
.
.
.
$ bash step6.sh

Raspberry Pi OS(32-bit, 64-bitで共通)

モニタとマウスをRaspberry Piに接続し、GUI上で操作します。

  1. 起動したら、GUIからSPIとI2Cを有効化します

画像の通り、[画面左上のロゴマーク] -> [Preferences] -> [Raspberry Pi Configuration] とクリックしたら出てくるウィジェットから、SPII2CのトグルをONにします。

これ以降は、ターミナルを開いて操作します。

activate_spi_and_i2c

  1. sudo apt updateを実行します

  2. /boot/firmware/config.txtを編集し、ファイル末尾に以下の記述を追加します

arm_64bit=0の記述は、64-bit版では不要です。

arm_64bit=0  # 64-bit版では不要です
dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000
dtparam=i2c_baudrate=62500
  1. Raspberry Pi を再起動します

  2. 以下のコマンドを実行し、出力が62500になっていることを確認します(同時にxxdのインストールも行います)

$ sudo apt install xxd
$ printf "%d\n" 0x$(xxd -ps /sys/class/i2c-adapter/i2c-1/of_node/clock-frequency)
62500
  1. ラズパイマウスのデバイスドライバのコードをcloneし、本開発リポジトリにチェックアウトした後にインストールします
$ git clone -b spi-overlay https://github.com/rt-net/RaspberryPiMouse.git
$ cd RaspberryPiMouse/utils
$ sudo apt install linux-headers-$(uname -r) build-essential
$ ./build_install.bash
  1. step1.shからstep6.shのサンプルプログラムの動作を確認します(この手順は、ラズパイマウスのマニュアルの通りです)
$ cd ../SampleProgram
$ bash step1.sh
$ bash step2.sh
.
.
.
$ bash step6.sh

Any other comments?

Checklists

KuraZuzu added 13 commits July 16, 2024 18:14
[WIP]ビルドでエラーが出る状態
[補足]サンプルプログラムstep2以外は動作した状態
@KuraZuzu KuraZuzu changed the title Spi overlay デバイスドライバのUbuntu Server 24.04への対応 Aug 28, 2024
Copy link
Contributor

@ShotaAk ShotaAk left a comment

Choose a reason for hiding this comment

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

確認しました。実機動作ができているため良いと思います。
コメントを残したので、他のPRで対応お願いします。

#IF文の分岐が増えていたり、冗長なコードが増えていたり、可読性が落ちているのが懸念点です。

別のPRでリファクタリングを実施しましょう。

@@ -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

README.md Outdated

```sh
arm_64bit=0 # "64-bit"版では不要です
dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000
Copy link
Contributor

Choose a reason for hiding this comment

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

この行の末尾にコメントで、「カーネル〇〇 以下の場合は不要です」と追記してください。

また、これらを手動で追加するのは難しいので、自動で設定するスクリプトを追加してください。
別PRで良いです。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

追加しました。マイナーバージョンを含めた場合分けを考慮して未満という表現にしました。

dtoverlay=anyspi:spi0-0,dev="microchip,mcp3204",speed=1000000 # カーネル5.16未満の場合は不要です

@ShotaAk
Copy link
Contributor

ShotaAk commented Sep 6, 2024

LGTMです

@ShotaAk ShotaAk merged commit bc5b66d into master Sep 6, 2024
6 checks passed
@ShotaAk ShotaAk deleted the spi-overlay branch September 6, 2024 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants