SPRESENSEのNuttXに起動スクリプトを設定する

SPRESENSEのNuttXに起動スクリプトを設定する

概要

Arduino IDEで作成したプログラムは,電源投入時に自動実行されるようになっていますが,SPRESENSE SDKを使用して直接NuttX上に実装したコマンドは,デフォルトではnshを使って手動で実行する必要があります. 実はnshには起動スクリプト(init.dのようなもの)の機能があり,適切に設定を行えば,プログラムの起動や環境変数の設定などを自動で行うことができます.

この記事では,SPRESENSEのNuttXの設定を変更し,起動スクリプトを有効化する方法を紹介します.

Read More

Share Comments

NuttShell(nsh)のボーレートを変える

NuttShell(nsh)のボーレートを変える

概要

NuttXに付属しているシェルであるNuttShellにアプリケーションの実行ログを垂れ流すと,転送速度が足りず,バッファが詰まって処理が遅くなることがあります. これはNuttXのカーネルの設定で転送速度(ボーレート)を変更することで解決できます.

この記事では,SPRESENSEのNuttXを例に設定方法を紹介します.ほかのプラットフォームでも同様に変更が可能なはずです.

SPRESENSEでの手順例

設定を保存するまでの動画を用意したので,こちらをご確認ください. menuconfigでは,矢印キーで選択,Enterで下の階層に入り,Escを2回押して上の階層に戻れます.

  1. ターミナルでSPRESENSE SDKのディレクトリに移動し,カーネルのmenuconfigを実行します.
$ make menuconfigkernel
  1. “Device Drivers” -> “Serial Driver Support” -> “Serial Console” から,ペリフェラルの名前(UART1等)を確認します.
  2. 確認した名前に対応する設定("UART1 Configuration"等)を開き,“BAUD rate” を変更します.
  3. 設定を保存して終了します.
  4. カーネルとアプリケーションをビルドし直します.
$ make cleankernel
$ make buildkernel
$ make clean
$ make

注意事項

  • SPRESENSEでは,実用上921600bpsが限界なようです.これよりも大きい値を指定すると正常な動作が期待できなくなります.
  • tools/flash.py を使用した書き込みでは,2Mbpsでも可能です.
Share Comments

SPRESENSEのNuttX上でuClibc++を使用したC++アプリケーションを動かす

SPRESENSEのNuttX上でuClibc++を使用したC++アプリケーションを動かす

概要

nuttx/libxx の中に基本的なC++の機能を提供するためのライブラリは付属していますが,STLがカバーしている iostreamvector 等の機能を利用したプログラムは,そのままではコンパイルできません. この記事では,軽量なSTL互換ライブラリであるuClibc++をSPRESENSEのNuttXに組み込み,C++の標準ライブラリを利用できるようにする方法を紹介します.

バージョン等

  • SPRESENSE SDK v1.0.1
  • NuttX: git(33597a8)

Read More

Share Comments

SPRESENSE SDKをArch Linuxにセットアップする

SPRESENSE SDKをArch Linuxにセットアップする

概要

Arch Linuxは推奨のUbuntuとは異なりローリング・リリースを採用しているため,想定環境とのバージョンの不一致によって若干手順が異なります.

基本手順

セットアップの基本的な手順はここにしたがいます. apt-get 等は適宜読み替えて pacman 等でパッケージをインストールします.

Spresense SDK チュートリアル - Spresense - Sony Developer World

異なるポイント・失敗したポイント

kconfig-frontendsのビルドの段階で,以下のようなエラーが出ます.

In file included from yconf.c:234:
hconf.gperf:141:1: error: conflicting types for 'kconf_id_lookup'
hconf.gperf:12:31: note: previous declaration of 'kconf_id_lookup' was here
static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
^~~~~~~~~~~~~~~
make[3]: *** [Makefile:456: libkconfig_parser_la-yconf.lo] Error 1
make[2]: *** [Makefile:350: all] Error 2
make[1]: *** [Makefile:334: all-recursive] Error 1
make: *** [Makefile:385: all-recursive] Error 1

これはESP32向けNuttXにおいてすでに確認されている現象です.

こちらにしたがって, libs/parser/hconf.c の163行目を以下のように変更します.

-kconf_id_lookup (register const char *str, register size_t len)
+kconf_id_lookup (register const char *str, register unsigned int len)

その他

バージョンアップ等で変更点があれば更新していきます.

Share Comments

SPRESENSE SDKでArduinoを使わずにとりあえずLチカする

SPRESENSE SDKでArduinoを使わずにとりあえずLチカする

概要

Arduino IDEとかいうぬるま湯に浸かりたくない人や,SPRESENSE SDKを使って自作のアプリケーションをCやC++で書いてみたい人向けの記事です. Arduino信者はお帰りください.

今回は,最も基本的な例としてLチカとシェルへの文字列の出力を扱います.

この記事では,SDKのインストールができているという前提で進めます.
参考→ SPRESENSE SDKをArch Linuxにセットアップする

Read More

Share Comments