📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の3版が非表示) | |||
| 32行目: | 32行目: | ||
オンライン上にあるGPIOに関するドキュメントの多くは、ArduinoおよびRaspberry PiのようなSoCを対象にしている。<br> | オンライン上にあるGPIOに関するドキュメントの多くは、ArduinoおよびRaspberry PiのようなSoCを対象にしている。<br> | ||
PCにおいては、SoCとは異なり、GPIOのあるPCはGPIOピンをCPUに直接統合していないが、スーパーI/Oチップ (SIO) を使用している。<br> | PCにおいては、SoCとは異なり、GPIOのあるPCはGPIOピンをCPUに直接統合していないが、スーパーI/Oチップ (SIO) を使用している。<br> | ||
<br> | |||
[[ファイル:Qt GPIO 1.png|フレームなし|中央]] | |||
<br> | <br> | ||
Qtを使用して、PCのGPIOピンを直接制御することは一般的ではないが、OSやハードウェアに依存した方法を使用することで可能である。<br> | Qtを使用して、PCのGPIOピンを直接制御することは一般的ではないが、OSやハードウェアに依存した方法を使用することで可能である。<br> | ||
| 150行目: | 152行目: | ||
sysfsを使用して、GPIOを制御することができる。<br> | sysfsを使用して、GPIOを制御することができる。<br> | ||
<br> | <br> | ||
==== GPIOの操作インタフェースの公開 ==== | |||
まず、/sys/class/gpioディレクトリにアクセスして、カーネル空間からユーザ空間にGPIOの操作インタフェースを公開する。<br> | まず、/sys/class/gpioディレクトリにアクセスして、カーネル空間からユーザ空間にGPIOの操作インタフェースを公開する。<br> | ||
<br> | <br> | ||
| 180行目: | 182行目: | ||
各レジスタの制御ピンの開始番号ベース、レジスタ名、総ピン数を含む。<br> | 各レジスタの制御ピンの開始番号ベース、レジスタ名、総ピン数を含む。<br> | ||
<br> | <br> | ||
==== gpioカーネルモジュールのインストール ==== | |||
<u>もし、gpioカーネルモジュールが無い場合は、インストールする必要がある。</u><br> | <u>もし、gpioカーネルモジュールが無い場合は、インストールする必要がある。</u><br> | ||
<br> | <br> | ||
| 213行目: | 215行目: | ||
*: 一般的に、カーネルモジュールは、/lib/modules/$(uname -r)/extraディレクトリにインストールされる。 | *: 一般的に、カーネルモジュールは、/lib/modules/$(uname -r)/extraディレクトリにインストールされる。 | ||
*: 任意のディレクトリに配置したい場合、<code>INSTALL_MOD_DIR</code>オプションを付加して、extraディレクトリに代わるパスを指定する。 | *: 任意のディレクトリに配置したい場合、<code>INSTALL_MOD_DIR</code>オプションを付加して、extraディレクトリに代わるパスを指定する。 | ||
*: 例えば、<code>INSTALL_MOD_DIR= | *: 例えば、<code>INSTALL_MOD_DIR=drivers/gpio</code>と指定する場合、インストールディレクトリは<code>/lib/modules/$(uname -r)/kernel/drivers/gpio</code>ディレクトリとなる。 | ||
sudo make scripts prepare modules_prepare -j $(nproc) | sudo make scripts prepare modules_prepare -j $(nproc) | ||
sudo make -C . M= | sudo make -C . M=drivers/gpio -j $(nproc) | ||
sudo mkdir -p /lib/modules/$(uname -r)/kernel/ | sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/gpio | ||
sudo cp | sudo cp drivers/gpio/gpio-it87.ko /lib/modules/$(uname -r)/kernel/drivers/gpio | ||
# または | # または | ||
| 224行目: | 226行目: | ||
sudo make prepare -j $(nproc) | sudo make prepare -j $(nproc) | ||
sudo make modules_prepare -j $(nproc) | sudo make modules_prepare -j $(nproc) | ||
sudo make M= | sudo make M=drivers/gpio -j $(nproc) | ||
sudo make modules M= | sudo make modules M=drivers/gpio -j $(nproc) | ||
sudo make modules_install M= | sudo make modules_install M=drivers/gpio INSTALL_MOD_DIR=kernel/drivers/gpio -j $(nproc) | ||
<br> | <br> | ||
Linuxカーネルモジュールのインストール後は、Linuxカーネルのビルドファイルを削除する。(ファイル容量が膨大なため)<br> | Linuxカーネルモジュールのインストール後は、Linuxカーネルのビルドファイルを削除する。(ファイル容量が膨大なため)<br> | ||
| 232行目: | 234行目: | ||
または | または | ||
sudo make distclean -j $(nproc) # .configファイル等の設定ファイルを全て削除する | sudo make distclean -j $(nproc) # .configファイル等の設定ファイルを全て削除する | ||
<br> | |||
==== Linuxカーネルモジュールの読み込み (セキュアブートが無効の場合) ==== | |||
Linuxカーネルモジュール全体を読み込む。<br> | |||
sudo depmod -a $(uname -r) | |||
<br> | |||
PCを再起動して、gpioカーネルモジュールが正常に動作するかどうかを確認する。<br> | |||
また、gpioカーネルモジュールが正常に読み込まれているかどうかを確認する。<br> | |||
lsmod | grep gpio-it87 | |||
# または | |||
sudo modinfo gpio-it87 | |||
<br> | |||
必要であれば、F2FSモジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br> | |||
# XZ形式の場合 | |||
cd /lib/modules/$(uname -r)/kernel/drivers/gpio | |||
sudo xz -f gpio-it87.ko | |||
# Zstandard形式の場合 | |||
cd /lib/modules/$(uname -r)/kernel/drivers/gpio | |||
sudo zstd --rm gpio-it87.ko | |||
<br><br> | <br><br> | ||