WP7605 の開発環境整備と Hello World

Sierra Wireless 社の WPシリーズは,「LTE モデム + Linux が動作するCPU環境」というモジュールで,スタンドアロンでLTE接続可能なIoTエッジ装置の開発にぴったりのアイテムです.

e-trees.Japanでは,このモジュールをコンパクトに組み込める開発ボードを用意しました.

このモジュールでは Linux 上に Sierra Wireless 社が提供する Legato と呼ばれるフレームワークが動作しています.今回は Legato 上で動かすアプリケーションを開発する環境を構築してみます.

開発環境の構築

最初にフレームワークの準備を行い,次にビルドを行うためのツールチェインを導入します.
導入にあたって Legato の Webサイトを参考にします.
OS は Legato が推奨している Ubuntu 18.04 を使用します.
(20.04で行うと GCC のバージョン関連の問題でビルドが行なえませんでした)

フレームワークの準備

https://docs.legato.io/latest/basicBuildLegato.html
必要なツールをインストールします.
openjdk やドキュメント生成用のツールも入れておくと良いと書いてあるので入れます.

ホームディレクトリ以下に workspace ディレクトリを作成し,使用していきます.

次に Legato のソースコードをダウンロードします.
ダウンロードの仕方に 2 種類あり, GitHub からと 直接サイトからダウンロードする方法です.
今回は直接サイトからダウンロードしてきます.

WP7605 のファームウェアに応じてバージョンを指定します.
確認方法は後述しますが,今回使用しているモジュールは「SWI9X07Y_02.28.03.05」なので以下のサイトを参考にして続けます.
https://source.sierrawireless.com/resources/airprime/software/wp76xx/wp76xx-firmware-release-13,-d-,1-components/#sthash.TbNgxygV.WZtZVr6h.dpbs

最終的な legat-19.02.0 ディレクトリ以下の構成です.

フレームワークの準備はこれで完了です.

ツールチェインの準備

クロスコンパイルを行うためにツールチェインの準備を行います.
https://docs.legato.io/latest/basicBuildToolchain.html
WP7605 なので WP76xx を導入していきます.

インストールスクリプトの実行時にインストール場所を尋ねられますが特に変更せず 2 回 Enter を押せば良いと思います.以下ログ.

ログにも出ているようにこのツールチェインを使用する際には新しいシェルセッションのたびに. /opt/swi/SWI9X07Y_02.28.03.05/environment-setup-armv7a-neon-poky-linux-gnueabi を入力する必要があります.

ここまでで環境構築は完了です.

Hello World

それでは実際にアプリケーションをビルドして実機上で動作させてみます.

アプリケーションのビルド

今回は簡単にフレームワークのサンプルをビルドして実行します.
環境の設定としてツールチェインとフレームワークの 2 つがありどちらも実行する必要があります.
サンプルはフレームワーク以下の apps/sample にいくつか存在します.
今回は単純な helloWorld を表示するだけのものを使用します.
apps/sample/helloWorld 以下はこのとおりです.

ビルドされるソースコードの内容は helloComponent/helloWorld.c です.
見るとわかりますが,なかなかクセが強いです.

それでは実際にビルドします.
ターゲットは wp76xx を指定しておきます.

ビルドするとディレクトリとファイルが 1 つずつ増えています.

実機について

実際に実機で動かすのですが,その前に一通り実機の操作について説明します.
PC と USB ケーブルで接続し電源ボタンを長押しします.

そうすると PC 側で認識され NIC として扱うことができます.

余談
今回接続し PC 側から確認したところモデムのみとして認識され WP7605 との通信用の NIC が有効にならない問題が発生しました.
以下の issue より Modem Manager を無効にすると通信ができるという記述がありました.
https://docs.legato.io/17_11/releaseNotes17110.html
Modem Manager を無効化し,再接続することで通信用 NIC が認識され,その NIC を有効化することで問題なく接続できるようになりました.
sudo systemctl disable ModemManager.service
sudo systemctl stop ModemManager.service

Modem Manager がよしなに動いていてくれたのが裏目に出たのでしょうか…


PC から SSH で接続します.モジュールの IP アドレスは 192.168.2.2 ,ユーザ名は root です.
別のターミナルを開いて実行することをおすすめします.

このモジュール特有のコマンドがいくつか存在します.
Target Tools

  • cm info : モジュールについての詳細な情報を確認 (IMEI,ファームウェアのバージョン等)
  • cm sim info : SIM の情報を確認
  • cm data connect : モバイルネットワークに接続
  • fwupdate query : ファームウェアや Linux のバージョンを確認
  • etc…

接続が確認できたところでビルドしたアプリケーションを実機で動かしてみましょう.

実機で動かす

まず別のターミナルで接続しておいたシェルで logread -f | grep "helloWorld" を実行します.
次にコンパイルしたターミナルからアプリケーションを転送し実行します.

モジュール側のログが以下の通りです.
様々な情報が出ていますが一番最後に “Hello, world.” と表示されたことがわかります.

このままでは実行中なので app stop helloWorld 192.168.2.2 と実行し停止することができます.

まとめ

Legato フレームワークを用いた WP7605 向けのアプリケーション開発環境を整える事ができました.
また実機で文字を出力するプログラムを実行することができました.
実行の際の注意は以下のコマンドを新しいシェルを開くたびに実行することです.
(bashrc などに書き込むのもあり?)


ただしこれだけでは LTE モジュールである意味がないのでその利点を生かしたアプリケーションが求められます.

コメント

タイトルとURLをコピーしました