今週のWireless Wednesdayでは、マルチチップ・マルチインターフェース・ドライバ (MXM) として知られているワイヤレス・コネクティビティSoC向けのNXPの統合Wi-Fiドライバに焦点を当てます。そのアーキテクチャによって、NXPのワイヤレス・コネクティビティSoCとi.MXアプリケーション・プロセッサを利用した開発を効率化する方法について説明します。
MXMドライバは、NXP独自のWi-Fiドライバ実装で、LinuxおよびAndroidをサポートするNXP i.MX MPUで利用できます。このドライバは柔軟なデュアル・ライセンスを採用し、GPL-2.0と、ライセンスの競合を回避するのに役立つ独占的なライセンスの下で提供されます。このドライバは、NXPワイヤレスSoCのファームウェアとホスト・プロセッサ上の標準Linuxネットワーキング・スタック/cfg80211との間のシームレスなインターフェースとなります。また、ステーション/クライアント (STA)、マイクロAP/SoftAP (uAP)、P2P、Neighbor Awareness Networking/Wi-Fi Aware (NAN) など、さまざまなWi-Fi機能をカーネルとアプリケーションに提供します。
NXPは、GitHubを通じてMXMドライバを提供しています。ドライバのソース・コードを確認およびダウンロードするには、MXMドライバのGitHubソース・リポジトリにアクセスしてください。
マルチデバイス/インターフェースのサポート
MXMドライバは、PCIE、SDIO、およびUSBインターフェースをサポートするNXPワイヤレス・コネクティビティSoCのポートフォリオをサポートしています。SoC/インターフェースの組み合わせは、コンパイル時にMakefile設定を介して簡単に設定できます。複数のSoC/インターフェースの組み合わせを同時に設定する機能もあります。ドライバのコンパイル済みカーネル・モジュールは、ドライバの再ロードや再コンパイルが不要で、さまざまなSoC/インターフェースの組み合わせに対応できます。そのため、現行世代のNXPデバイスから次世代のNXPデバイスに切り替えたい開発者にとっては、アーキテクチャ変更の負担がない製品の世代間であれば、統合作業が少なくなるため移行が容易になり、メンテナンスも容易になります。
ドライバ・アーキテクチャ
図1:MXMドライバ・アーキテクチャ
図1に示すように、ドライバはMLAN層とMOAL層の2層アーキテクチャになっています。これは主に、Linux/Android以外の異なるOSへの移植を簡単にするためです。この2つの層の機能は次のとおりです。
- MLAN:OSに依存しないモジュールで、コマンドの処理およびデバイス上で実行されているファームウェアとのやり取りを担います。プラットフォームに依存しないCコードです
- MOAL:OSに依存するモジュールで、上位のカーネル/プロトコル・スタックと下位レベルのバス・ドライバ・インターフェースとのやり取りを担います
MLANモジュールにはコードの大部分が含まれており、そのまま使用できますが、MOALモジュールはターゲットOSに移植する必要があります。NXPは、FreeRTOSやZephyrなど、NXPのi.MX RTクロスオーバーMCUおよび汎用MCUをサポートする最も一般的なRTOSの一部にMOALモジュールを移植しました。
NXPはMXMドライバをRTOSに移植しています。FreeRTOSおよびZephyrのドライバ・リポジトリを確認して、RTOSプロジェクトを開始しましょう。
FreeRTOSの実装はMCUXpresso SDKに含まれていますが、Zephyr Wi-FiドライバはZephyr Projectのアップストリームに含まれています。RTOSドライバは寛容なBSD-3 Clauseライセンスの下でライセンスされるため、GPLベースでないライセンスが好まれる場合に開発者やお客様の懸念が解消されます。
MCUXpresso SDK 24.12.00のリリースは、ワイヤレス製品の開発者に多くの利点をもたらします。MCUXpresso SDKがワイヤレス製品の開発をどのように前進させるかについては、こちらをご覧ください。
MXMドライバは、x86やARMなどのプロセッサ・アーキテクチャをベースにしたプラットフォームもサポートしているため、i.MX MPUに最適です。過去15年間のLinuxカーネル・バージョンおよび古いバージョンのAndroidとの下位互換性を備えています。ドライバは最新のカーネル・バージョンに準拠するように継続的にアップグレードされ、iwや、cfg80211アプリケーション・プログラミング・インターフェース(Linux 802.11設定API)を介してドライバによってサポートされるwpa_supplicantなどの標準のLinux ユーティリティ/ツールを使用したさまざまな標準およびサード・パーティ・アプリケーションでの動作をサポートします。
NXPプロセッサとの統合
NXPは、MXMドライバをNXPのi.MXアプリケーション・プロセッサに統合し、i.MX 6、i.MX 7、i.MX 8、i.MX 9シリーズのNXP評価キット (EVK) 向けにLinuxおよびAndroidボード・サポート・パッケージ (BSP) を四半期ごとに提供しています。NXPでは、インダストリアル、IoT、および車載の各セグメントをカバーする多様なユース・ケースにわたって、BSPを最適化し、ピーク時のパフォーマンスと豊富な機能セットを検証しています。そのため、NXPのプロセッサおよびワイヤレス・コネクティビティ・ソリューションを検証できるシームレスなアウト・オブ・ボックス・エクスペリエンスが提供されます。BSPはメンテナンス・リリースとパッチでサポートされているため、お客様の所有コストを削減できます。BSPについては、i.MXアプリケーション・プロセッサ向け組込みLinuxおよびi.MXアプリケーション・プロセッサ向けAndroid OSをご覧ください。
NXP EVKを使用して、シームレスなアウト・オブ・ボックス・エクスペリエンスを享受できます。i.MXアプリケーション・プロセッサの、LinuxおよびAndroid向けBSPを導入しましょう。
配布
このドライバはLinux Yoctoプロジェクト・ビルドのサブモジュールとして利用できるため、開発者はNXPベースのEVK向けに簡単にビルドできます。さらに、ドライバはソース・コード形式でリリースされ、GitHubなどのソースからダウンロードできるため、NXPやNXP以外のプラットフォームとのコラボレーションと統合が容易になります。MXMドライバをダウンロードしてビルドする手順については、ユーザー・マニュアルを参照してください。Yoctoベースのシステムをターゲットとするユーザー向けに、MXMドライバ用のNXP Yoctoレシピがこちらで配布されています。このレシピを使用すると、MXMドライバを最小限の開発作業で追加のサード・パーティ製プラットフォームに移植できます。
コラボレーションと統合が容易になることで、開発パスが加速します。MXMドライバのダウンロードとビルドの詳細については、ユーザー・マニュアルを参照してください。