SpresenseとBLEボードを買った
どんどんボードが増えていく。。
とりあえずスペーサーを買い忘れたのをめっちゃ後悔している。。メインボード(黒)の下部に高密度コネクタがあって、メインボードとBLEボードはこのコネクタだけで乗っている状態。さすがにこの状態ではちょっと持ち歩けないかなぁ。。
消費電力は何も動作していない状態だと低すぎて測れなかった。センサボードまで全部載せた状態で6.2mA@5V。(メインボード単体で5mA、BLEボードの追加で6mA程度) 実際には更にGPSを動作させようと思っているので、+30mAくらいで50mAくらいの予算を見込んでいる。
BLEボード上のCoresight10コネクタはBLEチップ(nRF52)側のものでSpresenseにはアクセスできない。
高さが高い
かなりコンパクトなボードだけどアドオンボードを積むと結構高さがある。
こういう基板を買ってきて、ユニバーサル基板に貼った方が良いかな。
というか今気付いたけど、BLEベースボード上のnRF52をSpresense側からリセットする方法が無いんだな。。まぁJTAGで頑張れば良い話ではあるけど。。
GPSアンテナとBluetoothアンテナが近すぎるんじゃないか疑惑
↑ の写真見てて思ったけど、GPS(1.6GHz)とBluetooth(2.4GHz)のアンテナを近くに置くのは不味い気がする。これスマホとかではどうしてるんだろうな。。
公式のハードウェアガイドによると メインボード上端6mm をクリアしろということになっている。この領域にはスペーサ用の穴もあるので、 金属製のスペーサとネジを使用した場合には、GNSSの受信性能に著しい悪影響を及ぼします。かならず樹脂製のものをご使用ください。 という注意事項もある。
nRF52モジュールのISP1507の方では、keep-out zoneとして黒い側に金属を配置しないようにアドバイスしている。実際、BLEベースボードの基板もそのようにデザインされている。
BLEベースボードでは更にnRF52の部分だけではなくGPSアンテナのところも公式ハードウェアガイドの推奨通りに抜いてはあるが(赤い網かけ部分)、効果のほどは謎。。外に出て測定するしかないかな。。
ファームウェア
ユーザがアプリケーションを実行するCortexM4F以外に、IOPとGPSモジュールがそれぞれ追加のArmプロセッサを持っていてそれらのファームウェアがバイナリ形式で用意されている。
WARNING: New loader v2.4.0 is required, please download and install.
Download URL : https://developer.sony.com/file/download/download-spresense-firmware-v2-4-000
Install command:
1. Extract loader archive into host PC.
./tools/flash.sh -e <download zip file>
2. Flash loader into Board.
./tools/flash.sh -l /home/oku/repos/spresense/firmware/spresense -c <port>
SpresenseはROMローダーも持っており、リカバリツールでこれらを再度ロードすることもできる。
SDKのビルド
SDKはNuttXプロジェクトとして実装されているため、ビルド方法はNuttXのものそのままになる。手元ではCygwin上のcrosstool-NGでビルドした自前のツールチェーンを使用しているので、ホストOSをLinuxに設定する必要があった。
まず、Kconfigを含むコンフィギュレータをビルド & インストールする。
git clone https://bitbucket.org/nuttx/tools.git nuttx-tools
cd kconfig-frontends
./configure && make && make install
その後、適当に config → make menuconfig
する。
./tools/config.py default
make menuconfig
コンポーネントの選択は。。これドキュメントを熟読するしか無いかな。。
ファームウェアの書き込み
Cygwinでも COM5
のような指定が使えるようだ。
SDKのビルド時に spresense-binaries-v2.4.0.zip
をDLするように指示されるので、ダウンロードしてリポジトリの firmware
ディレクトリに展開させる(zipの展開も flash.sh
で行う)。
oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -e spresense-binaries-v2.4.0.zip
Update succeed.
oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -l ../firmware/spresense -c COM5
>>> Install files ...
install -b 115200
Install ../firmware/spresense/AESM.espk
|0%-----------------------------50%------------------------------100%|
######################################################################
28944 bytes loaded.
Package validation is OK.
Saving package to "AESM"
updater# install -b 115200
Install ../firmware/spresense/dnnrt-mp.espk
|0%-----------------------------50%------------------------------100%|
######################################################################
109808 bytes loaded.
Package validation is OK.
Saving package to "dnnrt-mp"
updater# install -b 115200
Install ../firmware/spresense/gnssfw.espk
|0%-----------------------------50%------------------------------100%|
######################################################################
454512 bytes loaded.
Package validation is OK.
Saving package to "gnssfw"
updater# install -b 115200
Install ../firmware/spresense/loader.espk
|0%-----------------------------50%------------------------------100%|
######################################################################
129968 bytes loaded.
Package validation is OK.
Saving package to "loader"
updater# install -b 115200
Install ../firmware/spresense/sysutil.spk
|0%-----------------------------50%------------------------------100%|
######################################################################
174080 bytes loaded.
Package validation is OK.
Saving package to "sysutil"
updater# sync
updater# Restarting the board ...
reboot
アプリの起動
とりあえず起動はした。
oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -c COM5 nuttx.spk
>>> Install files ...
install -b 115200
Install nuttx.spk
|0%-----------------------------50%------------------------------100%|
######################################################################
155664 bytes loaded.
Package validation is OK.
Saving package to "nuttx"
updater# sync
updater# Restarting the board ...
reboot
流石にRAM1.5MiBもあるんだしflashせずに実行したいもんだな。。いやまぁELFローダとか持ってるのでそれ使えば良いんだろうけど。