[NXP プロセッサー 初心者ガイド 8] | [NXP プロセッサー 初心者ガイド 10]準備中... | ||
NXP プロセッサー 初心者ガイドまとめ | NXP プロセッサー実機検証ガイド まとめ |
もくじ
- 1. はじめに
- 2. Semtech RC76xx の Linux カーネルドライバーの準備
- 3. Yocto Project の OS Image と SDK の準備
- 4. Yocto Project SDK の環境で カーネルドライバーを Make
- 5. Semtech RC76xx カーネルモジュールのインストール
- 6. Semtech RC76xx の通信環境構築方法
1. はじめに
組み込みプロセッサーと通信するデバイスのカーネルドライバーは、自作のカーネルソースコードを実装する場合もあれば、デバイスメーカーから提供されているカーネルソースコードを実装場合があります。
今回は Semtech 社が提供している LTE Module RC76xx 向けの MBPL(Mobile Broadband Package for Linux) カーネルソースコード を i.MX Linux カーネルに実装する方法を解説します。
他のカーネルソースコードを実装する場合でも参考になる手順となります。
2. Semtech RC76xx の Linux カーネルドライバーの準備
こちらのサイトから "MBPL_DRIVERS_R35_ENG4-usb-src.tar" をダウンロードします。
Mobile Broadband Package for Linux (SDK, Drivers, Documentation) (sierrawireless.com)
解凍すると下記ファイルが格納されています。
ビルドは make コマンドで実施します。Makefile の中身も事前に確認しておきましょう。
開発 PC 上に下記フォルダーをコピーしておきます。
図1:MBPL(Mobile Broadband Package for Linux) カーネルソースコード
3. Yocto Project の OS Image と SDK の準備
Yocto Project の OS イメージの生成と Yocto SDK の生成を①~⑤の手順で実施します。
①. bitbake コマンドが使用できるまで開発環境を構築します。
下記コンテンツを参考にビルドの設定まで作業を進めてください。
参考:[NXP プロセッサー 初心者ガイド 1] i.MX 系の Linux イメージ作成方法 5-1ビルドの設定
DISTRO=fsl-imx-xwayland MACHINE=imx8mp-lpddr4-evk source imx-setup-release.sh
を実行し、imx-yocto-bsp/build/conf/local.conf が生成されていれば準備完了です。
②. local.conf ファイルに下記を追記し、Semtech RC76xx と通信する為に必要なパッケージを追加します。
IMAGE_INSTALL:append = " libqmi"
パッケージの追加方法は下記コンテンツをご参照ください。
参考:[NXP プロセッサー初心者ガイド 5] i.MX Yocto Project にアプリケーションを追加する方法
③. 下記コマンドを実行し Semtech ソースコード の Make に必要なカーネル設定変更をします。
$ bitbake linux-imx -c menuconfig
USB_WDM を M に変更します。
Location: -> Device Drivers -> USB support (USB_SUPPORT [=y]) -> USB Wireless Device Management support (USB_WDM[=m])
図2:カーネルコンフィギュレーション USB_WDM[=m]
④. 下記コマンドを実行し、OS Image を生成します。
$ bitbake imx-image-multimedia
指定できるイメージ名は 下記コンテンツの 5-2 を参照ください。
参考:[NXP プロセッサー 初心者ガイド 1] i.MX 系の Linux イメージ作成方法 5-2. i.MX Yocto Project イメージの選択
⑤. 下記コマンドを実行し、Yocto SDK を生成します。Semtech ソースコード の Make に使用します。
$ bitbake imx-image-multimedia –c populate_sdk
⑥. 下記コマンドを実行し Yocto SDK を開発 PC にインストールします。
$ ./imx-yocto-bsp_6.1.22.2.0.0/build/tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64-imx-image-multimedia-armv8a- imx8mp-lpddr4-evk-toolchain-6.1-mickledore.sh
$ source /opt/fsl-imx-xwayland/6.1-mickledore/environment-setup-armv8a-poky-lin
ポイント:パスは開発 PC の環境や Yocto Linux で指定した OS バージョンによって異なります。
4. Yocto Project SDK の環境で カーネルドライバーを Make
下記コンテンツを参考に、生成した Yocto SDK を使ってクロスコンパイル環境を構築してください。
参考:[NXP プロセッサー 初心者ガイド 2] i.MX Linux Kernel と U-Boot を個別 PC 環境下でビルドする方法
Semtech ソースコード が格納されているフォルダーに移動します。
Makefile の KERNELDIR を Yocto Project 内にある Kernel ソースコードのパスに変更します。
$ vim Makefile
下記は変更例
KERNELDIR ?= /home/nxp_linux/imx-yocto-bsp_6.1.22.2.0.0/build/tmp/work-shared/imx8mm-lpddr4-evk/kernel-build-artifacts
図3:Makefile の KERNELDIR 修正
Make を実行します。
$ make
make -C /home/nxp_linux/imx-yocto-bsp_6.1.22.2.0.0_ver2/build/tmp/work-shared/imx8mm-lpddr4-evk/kernel-build-artifacts M=/home/altnxp/nxp_linux/USB_semtech_6.1.22.2.0.0/usb
make[1]: Entering directory '/home/nxp_linux/imx-yocto-bsp_6.1.22.2.0.0_ver2/build/tmp/work-shared/imx8mm-lpddr4-evk/kernel-build-artifacts'
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qcserial.o
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/usb_wwan.o
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qmi_wwan.o
MODPOST /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/Module.symvers
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qcserial.mod.o
LD [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qcserial.ko
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qmi_wwan.mod.o
LD [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/qmi_wwan.ko
CC [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/usb_wwan.mod.o
LD [M] /home/nxp_linux/USB_semtech_6.1.22.2.0.0/usb/usb_wwan.ko
make[1]: Leaving directory '/home/nxp_linux/imx-yocto-bsp_6.1.22.2.0.0_ver2/build/tmp/work-shared/imx8mm-lpddr4-evk/kernel-build-artifacts'
カーネルモジュールである qcserial.ko と usb_wwan.ko と qmi_wwan.ko が生成されていることを確認します。
5. Semtech RC76xx カーネルモジュールのインストール
Yocto Project のビルドが完了すると、<build directory>/tmp/deploy/images/<board name>/ に *.wic.zst というファイルが生成されます。これが、SD Card 等に格納する *.wic が圧縮されたファイルです。
生成されたイメージファイルを SD Card など Boot Flash に格納し、OS が起動するか確認します。
参考:[NXP プロセッサー 初心者ガイド 1] i.MX 系の Linux イメージ作成方法 6.ビルドされたイメージの書き込み
生成したカーネルモジュールである qcserial.ko と usb_wwan.ko と qmi_wwan.ko をルートファイルシステムに格納します。
Semtech ソースコード の Makefile に記載されているコマンドを実行しカーネルモジュールをインストールします。
root@imx8mp-lpddr4-evk:~# cp qcserial.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/qcserial.ko
root@imx8mp-lpddr4-evk:~# cp usb_wwan.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/usb_wwan.ko
root@imx8mp-lpddr4-evk:~# cp qmi_wwan.ko /lib/modules/`uname -r`/kernel/drivers/net/usb/qmi_wwan.ko
root@imx8mp-lpddr4-evk:~# depmod
6. Semtech RC76xx の通信環境構築方法
Semtech RC76xx の評価ボードを i.MX EVK に USB ケーブルで接続し i.MX EVK の電源を入れると起動が開始します。Semtech RC76xx の評価ボード は「PWR ON/OFF スイッチ」を一度押します。
すると、ttyUSB として認識されます。
図4:評価ボード間の接続
認識されると下記ログが出力され、wwan0 に割り振りされていれば無事接続成功です。
図5:接続後の出力ログ
下記コマンドの手順にて通信環境を構築していきます。
ポイント:connman が起動している場合、qmicli がエラーとなる場合がございますので、systemctl でサービスをストップしてから実行ください。
root@imx8mp-lpddr4-evk:~# chmod 777 /sys/class/net/wwan0/qmi/raw_ip
root@imx8mp-lpddr4-evk:~# echo Y > /sys/class/net/wwan0/qmi/raw_ip
root@imx8mp-lpddr4-evk:~# qmicli --device=/dev/cdc-wdm0 --wds-noop --client-no-release-cid
root@imx8mp-lpddr4-evk:~# ifconfig wwan0 up
root@imx8mp-lpddr4-evk:~# minicom -D /dev/ttyUSB2
minicom コンソール上にて下記コマンドを実行します
AT+CFUN=0
AT+CGDCONT=1,"IP","<APN>"
AT+CFUN=1
AT!GSTATUS?
AT!SCACT=1,1
ポイント:AT+CGDCONT=1,"IP","<APN>" で指定する IP と APN は LTE モジュールに指している SIM カードにより異なります。
minicom を終了後下記コマンドを実行し IP アドレスを取得します
root@imx8mp-lpddr4-evk:~# udhcpc -i wwan0
Ping で接続確認を行います。
root@imx8mp-lpddr4-evk:~# ping 8.8.8.8 -I wwan0
Ping の応答があれば LTE モジュールでのインターネット接続完了です。
その後は、速度テストなど評価に進むことができます。
[NXP プロセッサー 初心者ガイド 8] | [NXP プロセッサー 初心者ガイド 10]準備中... | ||
NXP プロセッサー 初心者ガイドまとめ | NXP プロセッサー実機検証ガイド まとめ |