Seeed Studio XIAO RP2350 with NuttX(RTOS)
ソフトウェアバージョンの変更により、このドキュメントの一部の手順は正確でなくなったり、最新でなくなったりする可能性があります。
はじめに
NuttXは、標準準拠と小さなフットプリントで広く認知されている成熟したリアルタイムオペレーティングシステム(RTOS)です。NuttXの主な特徴の一つはその拡張性であり、8ビットマイクロコントローラから64ビットシステムまでの環境で使用できます。この柔軟性は、POSIXおよびANSI標準への準拠によって実現されており、異なるアーキテクチャ、ファミリー、半導体ベンダーからの幅広いチップで類似のNuttX機能を実験することができます。
さらに、NuttXはUSB、Ethernet、Audio、Graphicsサブシステムなど、多くの高度で有用な機能を提供します。これらの特性により、NuttXは様々なタイプのハードウェア上で動作可能な汎用性があり、堅牢なRTOSを求める開発者にとって魅力的な選択肢となっています。
NuttXは膨大で継続的に拡張されているボードの数をサポートしています。公式ドキュメントでは、アーキテクチャとSystem-on-Chip(SoC)シリーズ別に整理されたサポートボードの包括的なリストを提供しています。
例えば、NuttXドキュメントのSeeed Studio XIAO RP2350ページでは、サポートされている各機能の詳細な説明とそれらの使用方法に関する指示を提供しています。また、Raspberry Pi RP2350シリーズチップ専用のページもNuttXドキュメントにあります。
インストール
Nuttxドキュメントでは、異なるプラットフォーム向けのガイドを提供しています。Seeed Studio XIAO RP2350については、以下の手順に従ってください:
-
picotoolツールをダウンロード(オプション):
git clone https://github.com/raspberrypi/picotool.git picotool
cd picotool
mkdir build
cd build
cmake ..
make
cp picotool ~/local/bin # somewhere in your PATH -
ワークスペースを作成
mkdir nuttxspace
-
リポジトリをクローン
cd nuttxspace
git clone https://github.com/apache/nuttx.git nuttx
git clone https://github.com/apache/nuttx-apps apps
Apache Nuttxは2つのプロジェクトに分かれています:
- Nuttx:カーネル、ドライバー、サブシステムの実装が含まれています。
- Apps:ツール、シェル、ネットワークユーティリティ、ライブラリ、インタープリターのコレクションが含まれています。
アプリケーション
アプリケーションを開始するには、以下のコマンドを呼び出してNuttX上に設定をロードする必要があります:
./tools/configure.sh board_name:your_application
また、以下のコマンドを実行してボードがサポートされているかどうかのリストを確認することも可能です:
./tools/configure.sh -L
-
NuttXをビルドします(ビルドプロセスでnuttx.uf2を含むファームウェアバイナリが生成されます):
cd nuttx
make distclean
./tools/configure.sh xiao-rp2350:nsh
make V=1 -
picotoolを使用してファームウェアをロードします:
picotool load nuttx -t elf
-
RESETボタンとBOOTボタンを使用してブートローダーモードに入ることができます。BOOTボタンを押し続けながらRESETボタンを押して離します。その後、ボードはUSB経由で接続されたコンピューターにストレージデバイスとして認識されます。このデバイスに.UF2ファイルを保存すると、RP2350のFlash ROMの内容が置き換えられます。
ハンズオン
実際にNuttXを探索する時間です。このセッションでは、NSH、USBNSH、COMBOの3つのアプリケーションが利用可能です。
NSH
NuttShell(NSH)はNuttXで使用されるシェルシステムで、bashや他の類似オプションと似ています。豊富な内蔵コマンドセット、スクリプト機能、および独自のアプリケーションを「builtin」(同じNuttXバイナリの一部)として実行する機能をサポートしています。NSH設定では、115200 bpsを使用してUART0でコンソールを有効にします。
前の設定をクリアしてビルドプロセスを開始できます
cd ~/nuttxspace/nuttx
make distclean
次に、xiao-rp2350ボードにNSH設定を選択します:
./tools/configure.sh xiao-rp2350:nsh
ソースコードをコンパイルします。
make -j
ファームウェアをボードにロードし、USB-to-SerialをTXとRXピンに接続してから、miniconやpicocomなどのシリアル通信プログラムを実行してください:
picocom -b 115200 /dev/ttyUSB0
NuttShellコンソールにアクセス:
NuttShell (NSH) NuttX-12.8.0
nsh>
?
を入力すると、コマンドと組み込みアプリケーションの利用可能なオプションにアクセスできます。
nsh> ?
help usage: [-v] [<cmd>]
. cp exec ls reboot truncate
[ cmp exit mkdir rm uname
? dirname expr mkrd rmdir umount
alias date false mount set unset
unalias dd fdinfo mv sleep uptime
basename df free pidof source usleep
break dmesg help printf test xd
cat echo hexdump ps time
cd env kill pwd true
Builtin Apps:
getprime hello nsh ostest sh
NuttXに挨拶してみましょう。hello
と入力すると、コマンドが実行されます:
nsh> hello
Hello, World!!
おめでとうございます。NuttXとの最初のやり取りが完了しました。
USBNSH
NSH設定と似ていますが、CDC/ACMシリアル(USBポートでコンソールが有効、115200 bps)を使用します。
以前の設定をクリアして、ビルドプロセスを開始できます
cd ~/nuttxspace/nuttx
make distclean
次に、xiao-rp2350ボードにNSH設定を選択します:
./tools/configure.sh xiao-rp2350:usbnsh
ソースコードをコンパイルします。
make -j
Load the firmware into you board, run a serial communication program such as minicon or picocom:
picocom -b 115200 /dev/ttyACM0
Enterキーを3回押す必要があり、その後このメッセージがターミナルに表示されます。
NuttShell (NSH) NuttX-12.8.0
nsh>
COMBO
この設定では、gpio、leds、ws2812の3つのサンプルアプリケーションが有効になります。汎用入出力(GPIO)はマイクロコントローラーの最も基本的な部分であり、外部世界との接続を可能にします。この方法でNSHを使用して、これらのピンを希望通りにアクセスし設定します。しかし、まず前の設定をクリアしましょう。
cd ~/nuttxspace/nuttx
make distclean
xiao-rp2350ボードにcombo設定を選択します。
./tools/configure.sh xiao-rp2350:combo
ソースコードをコンパイルします。
make -j
Load the firmware into you board, run a serial communication program such as minicon or picocom:
picocom -b 115200 /dev/ttyUSB0
NuttShell (NSH) NuttX-12.8.0
nsh>
このアプリケーションとの対話で受け入れられるオプションを確認するには、gpio -h
と入力してください。パラメータのリストが返されます。
NuttShell (NSH) NuttX-12.8.0
nsh> gpio -h
USAGE: gpio [-t <pintype>] [-w <signo>] [-o <value>] <driver-path>
gpio -h
Where:
<driver-path>: The full path to the GPIO pin driver.
-t <pintype>: Change the pin to this pintype (0-10):
-w <signo>: Wait for a signal if this is an interrupt pin.
-o <value>: Write this value (0 or 1) if this is an output pin.
mation and exit.
Pintypes:
0: GPIO_INPUT_PIN
1: GPIO_INPUT_PIN_PULLUP
IO_INPUT_PIN_PULLDOWN
3: GPIO_OUTPUT_PIN
4: GPIO_OUTPUT_PIN_OPENDRAIN
5: GPIO_INTERRUPT_PIN
6: GPIO_INTERRUPT_HIGH_PIN
7: GPIO_INTERRUPT_LOW_PIN
8: GPIO_INTERRUPT_RISING_PIN
9: GPIO_INTERRUPT_FALLING_PIN
10: GPIO_INTERRUPT_BOTH_PIN
GPIOデバイスファイルが作成されたことを確認するには、ls/dev
と入力してください。入力後、boards/arm/rp23xx/xiao-rp2350/include/board.hで定義されたいくつかのgpioが宣言されているのを確認できます。これらは以下を表しています:
-
オンボードLED:
- 黄色 -> GPIO25
-
GPIO
- 1つの入力 -> GPIO27
- 1つの割り込み入力 -> GPIO26
- 1つの出力 -> GPIO28
nsh> ls /dev
/dev:
console
gpio26
gpio27
gpio28
leds0
null
ttyS0
userleds
zero
nsh>
以下のコマンドに従って、gpio27とgpio26を読み取り(割り込み付き)、gpio28に書き込みを行います。
nsh> gpio -w 1 /dev/gpio26
Driver: /dev/gpio26
Interrupt pin: Value=0
Verify: Value=0
nsh> gpio /dev/gpio27
Driver: /dev/gpio27
Input pin: Value=0
nsh> gpio /dev/gpio27
Driver: /dev/gpio27
Input pin: Value=1
nsh> gpio -o 1 /dev/gpio28
Driver: /dev/gpio28
Output pin: Value=0
Writing: Value=1
Verify: Value=1
nsh> gpio -o 0 /dev/gpio28
Driver: /dev/gpio28
Output pin: Value=1
Writing: Value=0
Verify: Value=0
USERLEDS は、単一の操作で LED を制御できるサブシステムです。また、printf のようなコマンドラインを使用することもできます。このデモでは、オンボードの黄色 LED を 1 秒ごとにオン・オフします。
leds
と入力すると、LED が同時に点滅するのを観察できます。
NuttShell (NSH) NuttX-12.8.0
nsh> leds
leds_main: Starting the led_daemon
leds_main: led_daemon started
led_daemon (pid# 3): Running
led_daemon: Opening /dev/userleds
led_daemon: Supported LEDs 0x01
led_daemon: LED set 0x01
nsh> led_daemon: LED set 0x00
led_daemon: LED set 0x01
led_daemon: LED set 0x00
led_daemon: LED set 0x01
led_daemon: LED set 0x00
Seeed Studio XIAO RP2350 には WS2812 アドレサブル LED も搭載されており、ws2812 アプリケーションを使用してテストできます:
NuttShell (NSH) NuttX-12.8.0
nsh> ws2812
gpio、LED、ws2812の例のデモについては、以下の動画をご確認ください:
NuttX RTOSの詳細については、NuttX ドキュメントをご覧ください。
✨ コントリビュータープロジェクト
- このプロジェクトは、Seeed Studio コントリビュータープロジェクトによってサポートされています。
- Rodrigoの献身的な努力に特別な感謝を捧げます。あなたの作品は展示されます。
技術サポート & 製品ディスカッション
弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供いたします。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。