豚吐露@wiki

cli

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

SPRESENSE IDE (CLI版)

WIndows11 22H2 (22621.1848)
Ubuntu 20.04.6 LTS on WSL2

https://developer.sony.com/ja/spresense/development-guides/sdk_set_up_ja.htmlを参考に環境を構築する。
手順を参考にすると、Linux、msys2(Windows)、Mac、WSLの手順がごっちゃになっとって、どれが必要な手順か分かり難いのでメモ。

Spresense SDK build instructions

build tools
WSL1のconsoleから以下のinstall commandを実行。
sudo apt update
sudo apt upgrade
curl -L https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh > install-tools.sh
bash install-tools.sh -r
. ~/spresenseenv/setup

install後の確認。
arm-none-eabi-gcc -v

gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10)

"Command 'arm-none-eabi-gcc' not found, did you mean:"とか表示されたらsetup command実行し忘れ。

setupは起動する度に実行する必要があるので、bashrcに追加しておくと良い。
echo ". ~/spresenseenv/setup" >> ~/.bashrc

Serial USB接続
dmesgでcp210xの接続状況を確認する。
$ dmesg | grep "cp210"
[ 0.793227] usbcore: registered new interface driver cp210x
[ 0.793836] usbserial: USB Serial support registered for cp210x
[ 101.626573] cp210x 1-1:1.0: cp210x converter detected
[ 101.633942] usb 1-1: cp210x converter now attached to ttyUSB0

4行目の"cp210x converter now attached"ってのが接続されたよってlog。
この末尾に書いてある"ttyUSB0"って名前で認識されてるので、大事。メモっとく。

で、当該行が表示されなかったら、WSLからUSB Serialを利用するを試してみると良い。

SDK source download
cd 【SPRESENSE_SDK_PATH】
git clone --recursive https://github.com/sonydevworld/spresense.git
cd spresense
git submodule sync
git submodule update
submodule commandは、基本的に実行不要なハズ。

sampleのbuild
cd sdk/
tools/config.py examples/hello
"/bin/sh: 1: kconfig-conf: not found"とか表示されたらsetup command実行し忘れ。

実行できるconfigの一覧は以下で取得可能。
tools/config.py -l

build結果は以下でclearできる。
make clean

config含めたbuild結果全てをclearするにはdistclean。
make distclean

make buildの実施。
make -j
SDKのversionが古くて(2.3未満)buildの並列実行ができない場合や、並列実行の影響で負荷が大きくなりすぎてbuildできない場合は、"-j"のoptionを外して実行するか、"-j2"のように並列実行の上限を指定して実行する。

参考までにbuildに必要な時間の差異はこんな感じなので、並列buildできるなら、並列buildした方が良い。
command build time
make -j 11 sec
make 44 sec

build結果書き込み
以下のcommandを実行。
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
>>> Install files ...
install -b 115200
Install nuttx.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

159616 bytes loaded.
Package validation is OK.
Saving package to "nuttx"
updater# sync
updater# Restarting the board ...
reboot

書き込んでて、bootloaderが古いとか出たらbootloaderの更新が必要。

Cannot open port
Cannot open port : /dev/ttyUSB0 tools/flash.sh spresense
Sonyが確認したWSL環境がどんな環境なんか分からんので何とも言えんのんじゃが...
なんかUSBのPort周りで権限絡みで差異がある。
権限が無いので、sudoで実行するか、権限与えてやるなりすればえぇんじゃが、正直どうするのが正解か分からん。

build結果確認
SpresenseへUARTで接続して動作確認を行う。
serial通信用に"screen"をinstall。
sudo apt install screen

screenを使ってSpresenseへ接続。
sudo screen /dev/ttyUSB0 115200

UART接続できたら、"hello"とcommand入力。responseに”Hello, World!!”と返ってきたらsampleが正しく書き込まれてることが確認できる。
NuttShell (NSH) NuttX-11.0.0
nsh> hello
Hello, World!!
nsh>

UART接続を終了させるには、"Ctrl+A, K"を入力。以下の確認が表示されるので、"y"を押下。
Really kill this window [y/n]

ここまでできたらCLIの開発環境は整ってるとしてok。

SDK boot loader書き込み
boot loaderは、ブラウザ経由でしかdownloadできません。

downloadしたzip fileを”spresense/sdk”配下に配置し、以下のcommandを実行。
"/dev/ttyUSB0”は"dmesg"commandを実行して確認。
./tools/flash.sh -e spresense-binaries-v3.0.0.zip
sudo ./tools/flash.sh -l ~/spresense/firmware/spresense -c /dev/ttyUSB0
+ 成功時log
>>> Install files ...
install -b 115200
Install /home/s1n/wk/spresense/firmware/spresense/loader.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

129968 bytes loaded.
Package validation is OK.
Saving package to "loader"
updater# install -b 115200
Install /home/s1n/wk/spresense/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 /home/s1n/wk/spresense/firmware/spresense/AESM.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

28944 bytes loaded.
Package validation is OK.
Saving package to "AESM"
updater# install -b 115200
Install /home/s1n/wk/spresense/firmware/spresense/gnssfw.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

454512 bytes loaded.
Package validation is OK.
Saving package to "gnssfw"
updater# install -b 115200
Install /home/s1n/wk/spresense/firmware/spresense/mp3dec.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

50176 bytes loaded.
Package validation is OK.
Saving package to "mp3dec"
updater# install -b 115200
Install /home/s1n/wk/spresense/firmware/spresense/sysutil.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

283152 bytes loaded.
Package validation is OK.
Saving package to "sysutil"
updater# sync
updater# Restarting the board ...
reboot

Cannot open port
以下のようにポートが開けないってerrorが出た場合...
Cannot open port : /dev/ttyUSB0

いくつかの原因が考えられるので順番に調べる。
  • 正しいportを指定しているか?
  • dialout group追加はしているか?
  • dialout group追加をしていない場合、sudo実行しているか?

多分、WSL2環境だと"dialout"を追加してもダメだと思うので、3番目のsudo実行をするが正解だと思ってる。

コマンドスクリプト(β版)
必須では無いが、入れとくと便利なので、以下のscriptを".bashrc"に追加しておく。
このscriptを実行しておくと、SPRESENSE SDK配下でなくてもSPRESENSE Applicationを製造するdirectoryを作ることができる。
cd 【SPRESENSE_SDK_PATH】/spresense/sdk/
. tools/build-env.sh
+ 成功時log
Warning: Spresense user application directory is not set.
         Please run
         $ spr-set-approot <application home directory>
=======================================
   SDK_VERSION = SDK3.0.1
 NUTTX_VERSION = 11.0.0
 SPRESENSE_SDK = /home/s1n/wk/spresense
SPRESENSE_HOME =
   GCC_VERSION = arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
          HOST = Linux x86_64
=======================================

  • spr-config
  • spr-make
  • spr-create-approot
  • spr-set-approot
  • spr-create-app
  • spr-go-sdk
  • spr-go-approot


更新日: 2023年08月14日 (月) 08時10分48秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー