Ideal Reality

興味の赴くままに

Raspberry Pi PicoでFreeRTOS+CLI

Raspberry Pi PicoでFreeRTOSを使う

FreeRTOS-SMP-Demos/FreeRTOS/Demo/CORTEX_M0+_RP2040 at main · FreeRTOS/FreeRTOS-SMP-DemosRaspberry Pi...

ここからの続きです。

Contents
スポンサーリンク

調査

とりあえずFreeRTOS+CLIのExampleをざっと眺めてみましょう。

FreeRTOS/UARTCommandConsole.c at main · FreeRTOS/FreeRTOS

'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel. - FreeRTOS/UARTCommandConsole.c at main · FreeRTOS/FreeRTOS

vSerialPutStringとかxSerialGetCharというのが見えますね。どうやらUARTのAPIを直接叩いて入出力を行なっているようです。

ところで、Raspberry Pi Picoの場合はPico SDKがシリアルコンソールをstdioで扱えるようにしてくれる機能があります。pico_enable_stdio_usbってやつですね。なので、UARTを叩いてる関数あたりはそのままprintfとかgetcharで置き換えれば大丈夫そうです

(UnixのTTYではないので、scanfみたいな便利な関数は使えない。そのため、stdioを使う場合でも入力はgetcharで1バイトずつ取ってきて、CRLFとかエスケープシーケンスをある程度考えて制御してやる必要はある)

Example

GitHub - Hiroki-Kawakami/pico-freertos-example at freertos-cli

Use FreeRTOS on Raspberry Pi Pico. Contribute to Hiroki-Kawakami/pico-freertos-example development by creating an account on GitHub.

とりあえずこっちもGitHubにポイ。

FWをビルドして焼いて起動したらシリアルポートが見えるようになるので、それをpicocomとかで開けばCLIにアクセスできます

スポンサーリンク

概略

前回からの差分だけざっくりと説明

freertosディレクトリ

  • FreeRTOS-Plus-CLI
  • CMakeLists.txt
    • FreeRTOS-Plus-CLIをビルド・インクルード対象に追加しています
  • FreeRTOSConfig.h
    • FreeRTOS+CLIを動かすにあたってちょっと設定を変えてます

exampleディレクトリ

  • console.c
    • FreeRTOS_Plus_CLI_DemosでいうUARTCommandConsole.cの代わりです
    • stdioの関数で書き換えた〜あたりはこのファイルの話です
  • Sample-CLI-commands.c

後書き

ここまで来れば準備はOKですね。あとは以下の公式ドキュメントの通りに独自のコマンドを自由に追加すればよかろうなのです。

Implementing a user defined command to use with the FreeRTOS+CLI command line interpreter

M5Stackだと画面とボタンがあるので、それらを使って実行中に操作して動きを見たりなんかは十分だったのですが、Picoは画面とかボタンは標準装備じゃないので、こうやってPCから色々いじれるようにしておけば便利かもですね。

スポンサーリンク

コメント

投稿されたコメントはありません

名前

メールアドレス(任意)

コメント

関連する投稿
NO IMAGE

Raspberry Pi PicoでFreeRTOSを使う

Raspberry Pi PicoでFreeRTOSのSMPを試してみる