SpresenseでWi-Fi Add-onボードを使用するサンプルアプリの動作確認で少しはまった話
これは何?
SpresenseでWi-fi Add-onボードを使うチュートリアルの動作確認で少しはまりました。解決のためにやったことを情報共有させていただきます。
結論
先に結論を書くと次になります。
Wi-fi Add-onボード[1]のハードウェアバージョン(V1.0A・V1.0A・V1.0C)に一致するようコンフィギュレーションを設定する必要がある、ということです。
multiwebcam サンプルアプリケーション[2]のコンフィギュレーションのデフォルトはV1.0Aになっています。
Wi-fi Add-onボードのハードウェアバージョンとサンプルアプリケーションのコンフィギュレーション設定が一致していないとサンプルアプリケーションがハングアップしますのでご注意ください。
対象チュートリアル
動作確認したチュートリアルはWebに書いてある5.2. multiwebcam サンプルアプリケーション[2:1]です。
カメラで撮影したJPEG画像をWi-fi経由で確認できるサンプルアプリケーションです。
Wi-fi Add-onボードはIDY社のiS110B[1:1]を使用します。
動作確認環境
ハードウェア
- Spresenseメインボード
- Spresenseカメラボード
- IDY Wi-Fi Add-on Board iS110B 基板バージョン V1.0C
ソフトウェア
Spresense SDKバージョン
Spresense SDKで開発しました[3]。
Spresense SDKのバージョンは記事を書いた時点の最新バージョン2.4.0です。
動作確認手順
動作確認手順はチュートリアルの5.2.4. ビルドおよび実行手順(1対1のMotion JPEG over HTTPモードの場合) 5.2.4.1. ビルド手順[4]のとおりに実施します。
はまったこと
ビルド完了し、書込み、シリアルターミナルでシェルに接続したところ次のメッセージが表示されました。
Welcome to minicom 2.8
OPTIONS:
Compiled on Jan 4 2021, 00:04:46.
Port /dev/cu.usbserial-14140, 23:32:30
Press Meta-Z for help on special keys
up_assert: Assertion failed at file:wireless/gs2200m.c line: 893 task: lpwork
up_registerdump: R0: 00000001 2d038020 000000e0 2d039e2c 2d038020 2d03ca90 2d039e18 000186a0
up_registerdump: R8: 0d030b61 0000037d 2d03c010 00000000 00000000 2d03ca90 0d0084a5 0d008af8
up_registerdump: xPSR: 61000000 BASEPRI: 000000e0 CONTROL: 00000004
up_registerdump: EXC_RETURN: ffffffe9
up_dumpstate: sp: 2d03ca90
up_dumpstate: IRQ stack:
up_dumpstate: base: 2d036fe0
up_dumpstate: size: 00000800
up_dumpstate: used: 000000d0
up_dumpstate: User stack:
up_dumpstate: base: 2d03cbe0
up_dumpstate: size: 000007d8
up_dumpstate: used: 000002ec
up_stackdump: 2d03ca80: 2d03ca90 2d039e18 2d03cbe0 0d0085df 000000e0 00000004 00000000 00000000
up_stackdump: 2d03caa0: 2d03ca90 0d0084a5 0d008af8 2d03cae8 0d0188e9 2d0434d0 2d03cb1a 2d043cb0
up_stackdump: 2d03cac0: 000186a0 000186a0 2d043cb0 2d0434d0 00000000 0d0068b1 00000013 0d013877
up_stackdump: 2d03cae0: 000002a5 1c05dc00 000013a5 ec000000 000186a0 2d043c30 2d043c30 2d04350c
up_stackdump: 2d03cb00: 0d030d33 0d013957 2d03ccac 00000014 00000000 0d005c31 0d008b18 01000000
up_stackdump: 2d03cb20: ffffffff 2d03aa28 00000002 0d003d77 2d03aa28 0d007af9 2d043c30 2d0434d0
up_stackdump: 2d03cb40: 2d043c30 2d04350c 0d030d33 000186a0 00000080 ffffffff 00000000 0d014971
up_stackdump: 2d03cb60: 2d0434d0 2d039f78 0d014925 fffffffe 2d0434f4 2d039f78 00000000 000000e0
up_stackdump: 2d03cb80: 2d037fdc 00000080 ffffffff 0d00560f 0d004548 0000002b 00000000 00020000
up_stackdump: 2d03cba0: 00000000 00000000 2d039f78 00000000 00000000 00000000 00000000 00000000
up_stackdump: 2d03cbc0: 00000000 0d0047bf 00000002 0d004791 00000000 0d00456f 00000000 00000000
up_taskdump: Idle Task: PID=0 Stack Used=332 of 1024
up_taskdump: hpwork: PID=1 Stack Used=324 of 2008
up_taskdump: lpwork: PID=2 Stack Used=804 of 2008
up_taskdump: lpwork: PID=3 Stack Used=332 of 2008
up_taskdump: lpwork: PID=4 Stack Used=332 of 2008
up_taskdump: AppBringUp: PID=5 Stack Used=716 of 2000
up_taskdump: cxd56_pm_task: PID=6 Stack Used=400 of 976
調査
現象についてWebで調べていたところ次のGitHubのissue見つけました。
Not support hardware version v1.0B/v1.0C of WIFI board (iS110B) #137
上のissueから次のコミットを見て次のことがわかりました。
- Wi-fi Add-onボードのハードウェアバージョンでソースコードの処理が分かれていること
- Wi-fi Add-onボードのハードウェアバージョンはコンフィギュレーションで設定できること
デフォルトのコンフィギュレーション設定はWi-fi Add-onボードのハードウェアバージョンはV1.0Aに設定されていました。
私が購入したWi-fi Add-onボードのハードウェアバージョンはV1.0Cでコンフィギュレーション設定はV1.0Aと設定していためバージョン設定の不一致がおきていました。
結果、前述のエラーメッセージが表示されているのでは?と考えました。
解決方法
コンフィギュレーション変更
Wi-fi Add-onボードのハードウェアバージョンのコンフィギュレーション設定をV1.0AからV1.0Cに変更します。
次のコマンドでコンフィギュレーション画面を開きます。
$ tools/config.py -m
【/】キーを押下するとコンフィギュレーションを検索画面になります。
コンフィギュレーション検索
検索するキーワードはコンフィギュレーション名称に含まれているWIFI_BOARD_IS110Bとします。検索キーワードを入力しエンターキーを押下します。
コンフィギュレーション検索キーワードの入力
コンフィギュレーションが定義されている階層がわかりました。
Wi-fi Add-onボードのハードウェアバージョンは次の階層に定義されているようです。
- Board Selection
- Spresense Wi-fi Add-on board (iS110B)
コンフィギュレーション検索キーワードの検索結果
【Exit】にカーソルをあわせてエンターキーを押下し検索結果の画面から出ます。
Board Selectionを選択します。
Board Selectionを選択
【Spresense Wi-fi Add-on board (iS110B)】を選択します。
Spresense Wi-fi Add-on board (iS110B)〜を選択
デフォルトではWi-fi Add-onボードのハードウェアバージョンはV1.0Aが選択されています。
デフォルトV1.0A設定
Wi-fi Add-onボードのハードウェアバージョンV1.0Cに移動し【スペース】キーを入力します。
V1.0C選択・設定
ひとつ上の階層に移動するので再びWi-fi Add-onボードのハードウェアバージョン設定画面に移動します。
V1.0Cに設定できていることが確認できました。
V1.0C設定確認
【esc】キー押下し続け次の画面が表示されたら<Yes>を選択し、コンフィギュレーションを保存します。
コンフィギュレーション保存確認
ビルド
コンフィギュレーション変更を保存したらmake、書込み、シリアルコンソールでシェルに接続します。
動作確認
シリアルコンソールでシェルに接続すると次のメッセージが表示されました。
エラーは解消されました。
Welcome to minicom 2.8
OPTIONS:
Compiled on Jan 4 2021, 00:04:46.
Port /dev/cu.usbserial-14140, 23:57:49
Press Meta-Z for help on special keys
NuttShell (NSH) NuttX-10.1.0
helpと入力するとBuiltin Apps:にmultiwebcamが追加されていることが確認できました。
nsh> help
help usage: help [-v] [<cmd>]
. cp exit kill mv set unset
[ cmp false ls nslookup sleep usleep
? dirname free mkdir poweroff source xd
arp date help mkfatfs ps test
basename dd hexdump mkfifo pwd time
break df ifconfig mkrd reboot true
cat echo ifdown mksmartfs rm uname
cd exec ifup mount rmdir umount
Builtin Apps:
gs2200m myfirstcameraapp sh
multiwebcam nsh
Webのチュートリアルの記載とおりにコマンドを実行し動作確認します。
nsh> gs2200m -a 1 spresense_net 0123456789 &
gs2200m [8:50]
nsh> sleep 5
nsh> ifconfig
wlan0 Link encap:Ethernet HWaddr 14:5a:fc:f8:17:21 at UP
inet addr:192.168.11.1 DRaddr:192.168.11.1 Mask:255.255.255.0
サンプルアプリケーションmultiwebcamを実行し、スマホでWi-fiのspresense_netネットワークにパスワード0123456789で接続します。
nsh> multiwebcam
== Start Camera thread ==
前の手順でSpresenseのIPアドレスがわかったので、スマホのブラウザのURLに次を入力します。
http://192.168.11.1
スマホのブラウザにSpresenseカメラボードが撮影している画像が表示されました。
最後に
Wi-fi Add-onボード[1:2]のサンプルアプリケーションで少しはまったことを書きました。
もし困っていた方、これからSpresenseでWi-fi Add-onボードを使ったサンプルアプリケーションの動作確認をしようと考えていた方の参考になれば・・・と思います。
今回は5.2. multiwebcam サンプルアプリケーション[2:2]が対象でしたがWi-fi Add-onボードを使用したサンプルは他にもあります。
- 9.1. ftp サンプルアプリケーション
- 9.2. tcpecho サンプルアプリケーション
- 9.3. tcpblaster サンプルアプリケーション
- 27. VTUN (Virtual Tunnels over TCP/IP networks)
これらのサンプルアプリケーションも今回書いたコンフィギュレーションが必要になると思います。
最後まで読んでいただきありがとうございました。
素敵なSpresense開発ライフをお楽しみください!!!
-
Spresenseの開発手法はSpresense SDK, Arduino IDEの2つがWebのマニュアルで紹介されています。 ↩︎
-
5.2.4. ビルドおよび実行手順(1対1のMotion JPEG over HTTPモードの場合) 5.2.4.1. ビルド手順のリンクはこちらです ↩︎
Discussion