1. 概要
本稿では、Rockchip製RV1103チップにRealtek RTL8723BSモジュールのWiFi機能を移植する手順について解説します。同様の手順はRV1106、RV1126、RK3588などRockchipシリーズ全般に適用可能であり、ARMアーキテクチャのLinuxベースデバイスにおけるRTLシリーズWiFiドライバ移植にも参考になります。
SDKの使用例については最後のセクションを参照してください。
- 使用プラットフォーム:RV1103
- SDK:Luckfox SDK V1.3
- 対象WiFiモジュール:BluetoothとWiFi機能を統合したRTL8723BS
2. ハードウェア接続仕様
RTL8723BSモジュールとの接続には以下の主要信号線を使用します:
- WL_REG_ON:WiFi有効化GPIO。スリープ中も電源を維持しないと内部状態が消失し、復帰時に問題が発生します。
- WL_HOST_WAKE:データ受信時にCPUを割り込みで喚醒するための信号線
- CLK:SDIOクロック信号
- CMD:コマンド送受信用双方向信号線
- DAT0-DAT3:4本のデータ転送線
- XTAL_OUT/XTAL_IN:外部クリスタル発振器接続端子
3. カーネル設定
WiFi機能を有効化するにはカーネル設定を変更します。SDKルートディレクトリで以下のコマンドを使用してカーネル設定メニューを開けます:
./build.sh kernelconfig
3.1 cfg80211サブシステム
LinuxにおけるWiFi管理基盤となるサブシステムです。主な構成要素:
- nl80211:Netlink経由のユーザー空間インターフェース
- wiphy:無線ハードウェアの抽象化オブジェクト
- wdev:仮想デバイス管理インターフェース
3.2 ドライバビルドオプション
ドライバはMオプションでモジュールビルドが可能です。ロードはinsmodコマンドで実施します。
3.3 rfkillサブシステム
無線デバイスの電源制御を行うためのカーネルモジュールです。WiFiとBluetoothの電源管理には必須です。
4. Buildrootパッケージ追加
SDK V1.3以降では以下のコマンドでBuildroot設定が可能です:
./build.sh buildrootconfig
4.1 wpa_supplicant
無線ネットワーク認証管理ツールです。以下の主要コンポーネントを含みます:
- wpa_supplicant:バックグラウンドで動作する認証サービス
- wpa_cli:コマンドライン管理インターフェース
4.2 wireless-tools
Wireless Extension対応デバイス向けの管理ツール群です。
4.3 ビルド注意点
Buildroot設定完了後はmake cleanを実行しないでください。設定は自動保存され、makeコマンドで必要なパッケージをダウンロードできます。
5. デバイスツリー修正
5.1 電源制御ノード
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
reset-gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>;
};
5.2 SDMMCノード追加
&sdmmc {
max-frequency = <50000000>;
bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
non-removable;
rockchip,default-sample-phase = <90>;
supports-sdio;
mmc-pwrseq = <&sdio_pwrseq>;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_bus4 &sdmmc0_det>;
status = "okay";
};
5.3 GPIO設定
sdmmc0{
sdmmc0_det: sdmmc0-det {
rockchip,pins =
<3 RK_PA1>;
};
}