2018年8月4日土曜日

SpresenseでHello world

 

はじめに


SONY Spresenseという変態(誉め言葉)ボードが出たので思わず目的もなくポチってしまったのでメモを残していこうと思います。



とりあえずArduino的に使うのは全く興味ないので「とりあえず」はNuttXをいじろうと思います。基本的には公式ページ

https://developer.sony.com/ja/develop/spresense/developer-tools/get-started-using-nuttx/set-up-the-nuttx-environment#HOW_TO_BUILD_CONFIGURATION_JA

に情報があるのでそれ通りにやればよいという話ですが何点か補足を兼ねて書いておこうと思います。まず用意した環境はコンナカンジ。

  • PC (Win10) 母艦
  • Virtualbox
  • Ubuntu 16.04 LTS ServerのVM (Virtualbox用)
  • Spressense(メインボード+拡張ボード)
  • USBケーブル (マイクロ)

これで全てデス。UbuntuはGUIいらないのでServerを最小限の構成でインストールしています。またインストール後は母艦からputtyでVMにつないでいます。

ソースを取得するための前準備


まず最初にgithubにアクセスする為にユーザー登録及びssh keyの登録が必要になるようです。

https://qiita.com/yysskk/items/974c9c55d66a26515651

あたりを参考にすると良さそうです。書く順番が逆になってしまっていますが、こちらはVMへの登録が必要なのでVMの設定が先なので注意

開発環境用のVM(Virtual Machine)

 

バージョン

 開発環境のOSとしてUbuntu 64bitが奨励されているようです。Ubuntuは長期メンテされる偶数のバージョンを使う感じでよいと思いますが2018/08/04時点での最新は18.04 LTSになります。最初こちらでやろうと思ったのですが、標準で色々必要なパッケージが無かったりして面倒くさそうだったのでとりあえず16.04 LTSにしました。ある程度余裕が出来てきたら再度環境を見直してみます。

追加で必要なパッケージ

それからServerの場合作業を行う前に事前に二つのパッケージのインストールが必要になります。

$ sudo apt-get install openssh-server

こちらは母艦からつなぐために必要です。Virtualboxのコンソールからいじる場合は不要ですがファイルの転送とかにも使えるのであっても良いと思われます。

$ sudo apt-get install build-essential

make等のコマンドが足りないのでこれを入れておく必要があります。

ネットワーク関連

また、母艦との通信を行うために下記の設定をしています。よくブログでホストオンリーアダプターを設定せいという記述がありますが外との通信もしたいのでブリッジを選んでいます。



USB

あとVMでUSBにアクセスさせる為に下記の設定をしています。とりあえずターゲットをPCとUSBで接続し、右サイドの+付きのアイコンをクリックするとUSBシリアルブリッジのCP2102Nが見えると思うので、それを選択してUSBデバイスフィルターに追加します。



最後にUbuntu側からシリアルポート(USB)へアクセスする場合「/dev/ttyUSB0」(末尾の数字はぶら下がっているデバイスの数にもよります)へのアクセスをしますがこちらは基本的には管理者権限がいるので

$ sudo ./tools/flash.sh -l /home/dev/spresense/firmware/spresense -c /dev/ttyUSB0
$ sudo ./tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
$ minicom -D /dev/ttyUSB0 -b 115200 -s

のような形でsudoを使う必要があるので注意です。これへの対策はオフィシャルのドキュメントの「1.1.2. USB接続の設定」に書かれている物が該当するはずです。

最後に


とりあえずここまでを終えると準備完了です。あとは手順通りにやれば下記の様にHello worldが動くはずです。手順は使用するバージョンまで固定しているのでハマりポイントは少ないのではないかと思います。


とりあえず最低限の環境は出来たので、ここから色々弄ってみたいと思います。