💻

Sony SpresenseでHello Worldチュートリアルをやってみた

2024/01/08に公開

Sony Spresenseを手に入れたので、Hello Worldチュートリアルをちょっとやってみます。

参考サイト:
https://developer.sony.com/spresense/development-guides/sdk_set_up_en.html

自分の環境

Macbook Pro 2019 (Intel)
Mac OS Sonoma

環境構築

幸いMac OSでも対応しているということなので、手順を踏んでMac OS用の環境を整備することにしました。High Sierraってほぼ6年前のOSなのでちょっと不安でしたが。

https://developer.sony.com/spresense/development-guides/sdk_set_up_en.html#_setup_for_macos

# 結構時間かかります、10分以上自分のラップトップではかかりました
$ curl -L https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh > install-tools.sh
$ source ~/spresenseenv/setup

レポジトリをCloneしてみます。

$ git clone --recursive https://github.com/sonydevworld/spresense.git
$ cd spresense/sdk

ところがこのようなエラーが出てきてしまいました。

$ tools/config.py examples/hello
WARNING: New loader v3.1.0 is required, please download and install.
         Download URL   : https://developer.sony.com/file/download/download-spresense-firmware-v3-1-0
         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 /Users/lvchammm/code/spresense/firmware/spresense -c <port>

サイトに飛んでDownloadします。

Updateはうまくいきました。

$ ./tools/flash.sh -e ~/Downloads/spresense-binaries-v3.1.0.zip
Update succeed.

もう一回走らせるとうまくいきました。ログはとくに何も出ません。

$ tools/config.py examples/hello

Makeは結構時間かかります。でもうまくいきました。

$ make
...
AR (create): libboard.a   cxd56_main.o cxd56_clock.o cxd56_bringup.o cxd56_appinit.o cxd56_power.o cxd56_ioctl.o cxd56_gpioif.o cxd56_pwm.o cxd56_spi.o cxd56_boot.o cxd56_uid.o cxd56_crashdump.o cxd56_netinit.o cxd56_flash.o cxd56_usbmsc.o cxd56_i2cdev.o cxd56_spidev.o
IN: arch/arm/src/board/libboard.a -> staging/libboard.a
make[3]: `libboard.a' is up to date.
LD: nuttx
Generating: nuttx.spk
tools/cxd56/mkspk -c2 nuttx nuttx nuttx.spk;
File nuttx.spk is successfully created.
Done.

# ファイルができていることを確認
$ ls | grep nuttx.spk
nuttx.spk

SpresenseをMacにつなげてシリアルポートの名前を確認します。
以下のように出てきたので/dev/tty.usbserial-14320を使います。
Rebootまでうまくいきました。

$ ls /dev/{tty,cu}.*
/dev/cu.BLTH                     /dev/cu.usbserial-14320          /dev/tty.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Incoming-Port  /dev/tty.BLTH                    /dev/tty.usbserial-14320

$ tools/flash.sh -c /dev/tty.usbserial-14320 nuttx.spk
>>> Install files ...
install -b 115200
Install nuttx.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

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

Screenコマンドを使い、確認します。ctrl + a, ctrl + k で抜けれます

$ screen /dev/tty.usbserial-14320 115200
...
NuttShell (NSH) NuttX-11.0.0
nsh> hello
Hello, World!!
nsh>

トラブルシューティング

以下のように出てくる場合はBootloaderをFlashできていません。

$ screen /dev/tty.usbserial-14320 115200
Welcome to nash (build 7bf64de)
                               updater#

cuのほうのSerial PortにFirmwareをFlashしておきましょう。

$ ./tools/flash.sh -l ~/code/spresense/firmware/spresense -c /dev/cu.usbserial-14320
>>> Install files ...
install -b 115200
Install /Users/lvchammm/code/spresense/firmware/spresense/loader.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

感想

ドキュメントが見るからにちょっと古そうだったので不安でしたが無事チュートリアルができてちょっと安心です。

Discussion