📢 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の操作インタフェースの公開 =====
==== GPIOの操作インタフェースの公開 ====
まず、/sys/class/gpioディレクトリにアクセスして、カーネル空間からユーザ空間にGPIOの操作インタフェースを公開する。<br>
まず、/sys/class/gpioディレクトリにアクセスして、カーネル空間からユーザ空間にGPIOの操作インタフェースを公開する。<br>
<br>
<br>
180行目: 182行目:
各レジスタの制御ピンの開始番号ベース、レジスタ名、総ピン数を含む。<br>
各レジスタの制御ピンの開始番号ベース、レジスタ名、総ピン数を含む。<br>
<br>
<br>
===== gpioカーネルモジュールのインストール =====
==== 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=fs/f2fs</code>と指定する場合、インストールディレクトリは<code>/lib/modules/$(uname -r)/fs/f2fs</code>ディレクトリとなる。
*: 例えば、<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=fs/f2fs -j $(nproc)
  sudo make -C . M=drivers/gpio -j $(nproc)
   
   
  sudo mkdir -p /lib/modules/$(uname -r)/kernel/fs/f2fs/
  sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/gpio
  sudo cp fs/f2fs/f2fs.ko  /lib/modules/$(uname -r)/kernel/fs/f2fs/
  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=fs/f2fs -j $(nproc)
  sudo make M=drivers/gpio -j $(nproc)
  sudo make modules M=fs/f2fs -j $(nproc)
  sudo make modules M=drivers/gpio -j $(nproc)
  sudo make modules_install M=fs/f2fs INSTALL_MOD_DIR=kernel/fs/f2fs -j $(nproc)
  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>