Spresense

SETUP

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

Spresense SDK 開発ガイド
https://developer.sony.com/ja/develop/spresense/developer-tools/get-started-using-nuttx/nuttx-developer-guide

PIN

Windows Subsystme Linuxを使う

Ubuntu 18.04

下記フォルダで作業します。

cd /mnt/c/SPRESENSE

windowsの、c:\SPRESENSEです。

 

GCC ARM toolchain の他、必要なパッケージをインストールします。

sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get installgit gperf libncurses5-dev flex bison gcc-arm-none-eabi genromfs pkg-config autoconf automake cmake

 

kconfig-frontends を取得し、インストール

git clone https://bitbucket.org/nuttx/tools.git
cd tools/kconfig-frontends/
./configure –disable-shared
make
sudo make install

 

Spresense SDK リポジトリからソースコードをダウンロード

git clone –recursive https://github.com/sonydevworld/spresense.git

 

USB接続の設定

sudo usermod -a -G dialout <user-name>

 

Kernelのビルド

cd spresense/sdk
tools/config.py -k release
tools/config.py -k -m
(設定の変更)
make buildkernel

SDKのビルド

 tools/config.py default
 tools/config.py -m
(設定の変更)

 make

※ビルドが成功すると sdk ディレクトリ以下に nuttx(ELF形式の実行ファイル)と nuttx.spk(実機に書き込むためにパッケージングされた独自形式のファイル)ができます。

 

設定の変更

 MENUCONFIG

 tools/config.py -m

または、make menuconfig

 

[CXD56xx Configuration]
  [Power Management]
    [*] Dynamic clock control

  [I2C]

    [*] I2C0

       [  ] SCU Sequemcer  <= チェック外す。

[System tools]  

  [*] I2C Tool
  [NSH Library]
    [Scripting support]
      [*] Support ROMFS start-up script
    [ROMFS header location]
      [*] Architecture-specific ROMFS path

※Dynamic clock control を有効にすると、システムは HV モード で起動した後に RCOSC モードまでクロックを落とします。定常状態では、RCOSC モードで動作します。

Sensor Control Unit (SCU) は、SCU デバイス内の SPI もしくは I2C バスに接続されたセンサーデバイスからのセンシングデータを取得することができます。CPUとは独立して動作するため、センサー取得に関わるCPUの負荷を軽減することができます。

 

起動スクリプトを作成する。(/etc/rc.S)

$ cd bsp/include/arch/board
$ cp ../../../../system/nshlib/rcS.template .

boardフォルダは、シンボリックリンク。
board -> /mnt/c/spresense/spresense/sdk/bsp/board/spresense/include

 

bsp/include/arch/board/rcS.templateの中身を下記に書き換え
nestra &

 

ROMFSを作成

※bsp/include/arch/boardに移動した状態

$ ../../../../tools/mkromfs.sh ../../../../

nsh_romfsimg.hができます。

 

sdkフォルダに戻って、ビルドします。

cd ../../../..
make cleankenel
make clean
make buildkernel
make

 

ブートローダーの書き込み

ブートローダをwindowsでダウンロードします。

https://developer.sony.com/file/download/download-spresense-firmware-v1-2-000

spresense-binaries-v1.2.0.zipを、

/mnt/c/SPRESENSE/にコピーします。

 

./tools/flash.sh -e /mnt/c/SPRESENSE/spresense-binaries-v1.2.0.zip


presense-binaries-v1.2.0.zipを解凍し、 gnssfw.espk loader.espkをsdk/tools/windowsにコピーしておく。

 

$cd tools/windows/
cmd.exe
(wineows)$ flash_writer.exe -s -c COM13 -d -b 115200 -n gnssfw.espk loader.espk

 

カーネル・SDKを書き込み

cd /mnt/c/SPRESENSE\spresense\sdk 

cmd.exe

C:\SPRESENSE\spresense\sdk >
.\tools\windows\flash_writer.exe -s -c COM13 -d -b 115200 -n nuttx.spk

書き込み終了したら、exitでubuntuに戻る。

 

TeraTermでシリアルポートにつなぐ。

#SPRESENSEのターミナルにつなげる
sudo screen /dev/ttyS13 115200 -fn

 

I2C Toolの使い方

busのdump

nsh> i2c dev -b0 0 7f

 

readの例

CCS811をつなぎました。

nsh> i2c get -b 0 -a 5b -w 8 -r 20
nsh: i2c: too many arguments
READ Bus: 0 Addr: 5b Subaddr: 20 Value: 81

 

nsh> i2c get -b 0 -a 5b -w 8 -r 21
nsh: i2c: too many arguments
READ Bus: 0 Addr: 5b Subaddr: 21 Value: 12