7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spresenseの開発環境をRaspberryPiで作ってみる

Last updated at Posted at 2021-12-11

はじめに

ソニーから発売されているSpresenseはGNSSによる位置測位や、ハイレゾオーディオ、
ソニー製イメージセンサを使ったカメラ、そしてLTE接続などに対応した高機能ボードです。

公式から公開されている開発環境はWindows/Linux/macOSですが、Linuxはどうやらx86_64環境だけに対応している模様。
今回はaarch64(ARM 64bit)であるRaspberryPiを使ってSpresenseで遊んでみようと思います。

用意するもの

Spresense

今回はSpresenseメインボードとLTE拡張ボードを使ってみます。

ここで購入しました。
https://www.switch-science.com/catalog/3900/

RaspberryPi

今回は開発環境をRaspberryPi 4 model Bを使いました。発熱がすごいので金属ケースも追加で買いました。
ここで購入しました。
https://www.switch-science.com/catalog/6370/

接続方法

RaspberryPi 4 model BはほぼほぼPCと同一なので特にこれといった特殊な接続はないです。
RaspberryPi 4 model BのUSBポートにSpresense MainボードのUSBをUSBケーブルで接続するだけです。

RaspberryPiの作業概要

  1. RaspberryPiにUbuntuをセットアップ
  2. 公式の手順で環境セットアップ
  3. SPKツールのビルド
  4. 書き込みツールのビルド

RaspberryPiにUbuntuをセットアップ

@y-tsutsuさんのページを参考にセットアップしました。
Raspberry Pi 4でUbuntuデスクトップを動かして遊ぶ

公式の手順で環境セットアップ

まずは公式の手順でセットアップしちゃいます。
公式の手順はSpresense SDK スタートガイド (CLI 版)に記載されています。

ターミナルを開く

すべてはターミナルを開いてから始まります。
Ctrl + Alt + t キーを同時押してサクッと立ち上げます。

Screenshot.from.2021-12-11.21-18-18.png

シリアル通信の設定

Spresense MainボードとのUART接続は以下のコマンドを実行すると可能になる。
コマンド実行後RaspberryPiを再起動しないといけないので要注意。


$ sudo usermod -a -G dialout $USER

ツールチェーンのインストール

ツールチェーンはスクリプトで一括インストールできる。
スクリプトをダウンロードして、bashで実行するだけのようだ。
内部でsudoを実行しているのでパスワードが1回聞かれます。要注意!


$ wget https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh
$ bash install-tools.sh -r

Screenshot.from.2021-12-11.21-17-36.png

ツールチェーンの有効化

ツールチェーンの有効化というよりは、ツールチェーンのPATHを設定している模様。


$ source ~/spresenseenv/setup

.bashrc に spresenseenv/setup を追加

毎度このコマンドを実行するのはダルいので以下のコマンドで自動実行されるようにする。
コマンドの中の >> は2文字が重要!1文字にしないように要注意!


$ echo "source ~/spresenseenv/setup" >> ~/.bashrc

Spresense SDKのダウンロード

Spresense SDKはGithubで公開されているので、git コマンドを使ってダウンロードする。


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

Screenshot.from.2021-12-11.21-29-21.png

ビルドを試してみる

すんなり、ツールチェーンもインストールできてしまった。
もしかしてこのままRaspberryPiでSpresenseをビルドして遊ぶことができちゃう・・?(だとしたらこの記事の意味...)

Screenshot.from.2021-12-11.21-42-00.png

やはり対応していないようでビルドに失敗する。
ビルドエラーの失敗の要因は以下のメッセージのようだ。どうやらmkspkというツールがx86_64用にコンパイルされている模様。
これをaarch64デコンパイルしてみたらビルド成功するのでは・・?


/bin/sh: 1: tools/cxd56/mkspk: Exec format error

mkspkを作り直してみよう。

SPKツールのビルド

ここでは、先ほどビルド失敗した要因のSPKツール(mkspk)をaarch64用にコンパイルして使えるようにしてみる。

mkspkのソースコードは spresense/nuttx/tools/cxd56 に有ったのでこれをコンパイルしてみる。


$ cd spresense/nuttx/tools/cxd56
$ make -f Makefile.host clean
$ make -f Makefile.host

試しに実行してみる。

Screenshot.from.2021-12-11.22-15-08.png

おぉ!formatエラーから解放されたようだ!
これを spresense/sdk/tools/linux/ にコピーすればCleanしても使い続けられるようなので次のコマンドでコピーする。


$ cp -a mkspk ../../../sdk/tools/linux/

改めてSpresenseをビルドしなおしてみる。


$ cd spresense/sdk
$ ./tools/config.py examples/hello
$ make -j

Screenshot.from.2021-12-11.22-18-33.png

めでたくビルドが通った!
次はビルドした nuttx.spk をSpresenseに書き込んでみる。

Screenshot.from.2021-12-11.22-18-57.png

おっと、、、書き込みのツールもx86_64用にコンパイルされているようだ。
flash_writerも作り直してみよう。

書き込みツールのビルド

ここでは先ほど失敗した nuttx.spk の書き込みに使う flash_writer をaarch64用にコンパイルしてみる。

flash_writer のソースコードは spresense/sdk/tools/flash_writer にあるようだ。
この中の README.md によると pyserialpyinstaller が必要なので、次のコマンドでサクッとインストール。


$ pip install pyserial
$ pip install pyinstaller

そして、 Makefile も用意されているのでコンパイルも make を実行するだけでよいらしい。


$ cd spresense/sdk/tools/flash_writer
$ make

Screenshot.from.2021-12-11.22-25-58.png

無事にコンパイルできたようだ。
試しに、 nuttx.spk をSpresenseに書き込んでみる。


$ cd spresense/sdk
$ ./tools/flash.sh -c /dev/ttyUSB0 nuttx.spk

おぉ!書き込みもできた!

Screenshot.from.2021-12-11.22-34-19.png

続いて試しにSpresenseのターミナルを minicom で開いてみる。


$ minicom -D /dev/ttyUSB0

ビルドしたものでターミナルを開くこともできた!

Screenshot.from.2021-12-11.22-36-42.png

★minicomで開くときは Hardware Flow ControlNo にしておく必要があるので要注意。

Screenshot.from.2021-12-11.22-36-53.png

最後に

Spresense SDKの開発環境をWindowsで用意している人は、そのセットアップの複雑さやビルド時間の長さで困っている人も多いと思います。
より安価で準備できるRaspberryPiを使うことでそれが少しでも改善すればうれしいです。

また、今回 mkspkflash_writer を再作成する方法を紹介しましたが、これを一発で行えるpatchファイルを作ったので、
是非使ってみてください。

更新ファイル(spresense-aarch64.tar.bz2)ダウンロード

反映方法


$ cd spresense/
$ tar xvf spresense-aarch64.tar.bz2
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?