#噂のSpresenseが届いたぞ
すごいぞソニー、(SPIRITZERとして発表した1年前から)待ってたぞソニー
重さは5.9g GNSS込みでこのサイズ感なのでロボットやドローンにもってこいなだな
ただし本体についてるGPIOは1.8Vなのでこういうレベル変換が必要
何がすごいってこのブロック図がやばい
メインプロセッサはCortex-M4の6コアだけど、GNSS用のCortex-M4とIO用のCortex-M0+も乗ってる
大奮発だな!
###早速開発環境を用意するぞ
SpresenseはNuttXというPOSIXなリアルタイムOSで動いている
ちなみにドローンのコントローラで有名なPixHawkも実はNuttXで動いてたりする
Arduino?男は黙ってRTOSだぞ
...別に否定するつもりはないんですが、Arduinoだと今のところマルチコア使うプログラムは書けないそうで
価格帯からしても入門者向けなマイコンではないんじゃないかな
けどLinux用意するの面倒だなぁ (USBブートとか仮想とかラズパイとかあるけどさ)
##Windows10上で開発できるようにする
Windows Subsystem for Linuxを利用します ちょっと前までBash on Ubuntu on Windowsとか呼ばれてたあれです。
わたしゃコレとゲーム画面録画機能がwindows10最大の恩恵だと思ってます
2018/9/18
・Windows10 Pro 1803 (April 2018 Update)
・WSL Ubuntu 16.04 LTS (Linux 4.4.0-17134-Microsoft)
・Spresense SDK v1.0.1
所要時間:おおよそ45分(WSL導入に時間がかかる)
#####始める前に
Linuxにほとんど触ったことないって人は、コマンドをググりながら頑張ってね
それと指定のフォルダでコマンドライン(cmd.exe)の作業をしたいとき、
エクスプローラでフォルダを開き、そのアドレスバーにcmd
と打つと
そのフォルダを作業フォルダとしてcmdが呼べます
またアドレスバーにbashと打つとWSL(ubuntu)が起動できます
さらにcmd上でwsl ls
のように頭にwslを付けるとlinuxコマンドが使えます
今回はNuttXのビルドをWSLで、書き込みをcmdで行うのでややこしいです
###1、WSLをインストールする
https://qiita.com/Brutus/items/f26af71d3cc6f50d1640
こちらとか参考に
以下ざっくり説明
1、スタートから「Windowsの機能の有効化または無効化」を検索
2、「Windows Subsystem for Linux」にチェックを入れ、指示に従い再起動
3、Microsoft StoreでLinuxと検索しUbuntuを入手、起動してユーザー名とパスワード設定
4、レポジトリを日本(jaist)に設定して更新
$ sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get upgrade
linuxコマンドなんて使ったことないって人はググってね
upgradeは時間がかかるのでほっといて次の作業に移りましょう
###2、雑多な準備
作業フォルダを用意します
今回は私の好みでユーザーフォルダ内にwsというフォルダを作って、作業フォルダとします
C:\Users\ユーザー名\ws
書き込みに必要なCP2101N(シリアル変換)のドライバーを入手
https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
zipを解凍し、CP210xVCPInstaller_x64.exe
に従いドライバーを導入してください
スタートでデバイスマネージャを検索し実行します
ポート(COMとLPT)
の項目にSilicon Labs CP210x USBto UART Bridge (COM3)
という項目があれば成功です COMポート番号を覚えておいてください
###3、WSL内にSpresense SDKを構築
公式wikiやGithubのREADMEを参考に
作業フォルダC:\Users\ユーザー名\ws
でWSLを呼び出します(アドレスバーにbash
と入力)
ツールの準備
$ sudo apt-get install make git gperf libncurses5-dev flex bison gcc-arm-none-eabi
Spresense SDkを取ってきます (wiki手順が間違ってます修正されたようです 9/3追記)
$ git clone --recursive https://github.com/sonydevworld/spresense.git
$ git submodule foreach git checkout master
kconfigの取得とリポジトリのクローン (wiki手順だと失敗?Githubを参照)
$ git clone -n https://patacongo@bitbucket.org/nuttx/tools.git tools
$ cd tools
$ git config core.autocrlf false
$ git checkout 891510d2534287afef6b5c90a375f94442a7e94d
$ cd kconfig-frontends/
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
$ cd ..
$ cd ..
ブートローダーを以下からダウンロードしてきます (注:2018/8/18現在 このリンクが分かりにくい)
https://developer.sony.com/file/download/download-spresense-firmware-v1-0-000
ws内に移動して解凍し、zipもws内に残しておきます
ブートローダー更新
$ cd spresense/sdk
$ tools/config.py examples/hello
$ ./tools/flash.sh -e /mnt/c/Users/ユーザー名/ws/spresense-binaries-v1.0.000.zip
Update succeed.
と表示されれば成功です
ここから、windows側でブートローダーの書き込みを行います
ここからは公式にない自己流です
WSLから書き込むことができなかったため、flash.shが呼び出しているflash_writer.exeを使います
まず、先ほど解凍したブートローダーの中にある
gnssfw.espk
loader.espk
の2ファイルをコピーし、
/ws/spresense/sdk/tools/windows/
フォルダ内に貼り付けます
このwindowsフォルダにてcmd.exeを呼び出します(エクスプローラのアドレスバーにcmd)
以下を実行します(COMポート番号はデバイスマネージャで確認)
flash_writer.exe -s -c COM3 -d -b 115200 -n gnssfw.espk loader.espk
何事もなく元のcmdに戻ってきたら書き込み成功です cmdを閉じてください
Cannnot open port : COM3
と出た場合、シリアル接続に問題があるようです
最後に、flash_writer.exe
をコピーし、/ws/spresense/sdk
内に貼り付けます
###4、サンプルコードのビルドと書き込み
いよいよサンプルコードのビルドです
なぜかWSLがCPUをフルパワーで使ってくれないので結構時間がかかります
(引き続き/ws/spresense/sdk
にてWSLを起動して)
$ tools/config.py --kernel release
$ tools/config.py examples/hello
$ make buildkernel
$ make
これでエラー表示が出ず、sdk
フォルダ内にnuttx.spk
が生成されれば成功です
書き込みは/ws/spresense/sdk
でcmd.exeを呼び出して
flash_writer.exe -s -c COM3 -d -b 115200 -n nuttx.spk
これで書き込めました
WSLからscreenでシリアル接続してみます(Teraterm等お好みで)
デバイスは(COM3の時)ttyS3、ボーレートは115200、フロー制御:なし です
sudo screen /dev/ttyS3 115200 -fn
enterを押すとnshターミナルが出てきます
help
で実行可能なコマンドと先ほど書き込んだサンプルコードが見えます
hello
でサンプルコードが実行されます
screenはCtrl + a
k
y
で終了できます (終了できないとプロセスが残るのでタスクマネージャから消してください)
いまのところ手元には拡張ボードがないので、ほかに試せるサンプルはgnss
ぐらいですね
####デバッガはまた今度
だって拡張ボード買うお金ないんだもん
VScodeにopenOCDを連携させるつもりです
いずれはVScodeからビルドも呼び出せるようにしたい
##感想
twitterで様子見してましたが、Ubuntu導入からつまずいてる人がちょくちょく見られるので書いてみました
Bash on Windowsが初めて登場した時はデバイスが繋がらなくてはーつっかえ...でしたが、いつの間にかUSBストレージやらシリアルやら使えるようになってたんですね
GithubにはdockerによるSDK導入も書いてあったんですが、私ではどうにもWSLにdockerが入らなかったので諦めました
Kconfigを使ってるので、完全にwindowsネイティブでビルドするのは今後も難しいんですかね
maker faire 2017で発表されたときはマルチコアなマイコンにどんな開発環境が用意されるのか不安でしたが、wikiを見た感じわりと丁寧に用意されてるようで安心しました
立ち位置的にはmbedやラズパイZERO(Edisonなんてなかった)がライバルといったところでしょうか
やや玄人向けですが、ハイグレード・マイコンとしてガシガシ使っていきたいです
####...ところで、Spresenseってなんて読むんですか...?