esp-open-rtosを使ってみる
全体的な印象
今までesp-open-rtosを紹介してきましたが、ベースとしているFreeRTOSのドキュメントが非常に充実しています。
APIのリファレンスには必ずサンプルコードが記載されているので、APIの使い方に迷うことはありませんでした。
OSの機能としては十分で、本格的なマルチタスクのシステムを構築することができます。
それに比べ、lwIPはドキュメントが単にAPIの羅列になっているので、APIの使い方に苦労します。
mDNSのAPIが有るのですが、色々調べてもAPIの使い方が分かりません。
Socket-APIが使えるのは嬉しいです。
サンプルコードが多数公開されているLinuxのコードが、ほぼそのまま使えます。
SPIFFSのAPIについては、こちらの
WiKiを見た方が分かりやすいです。
FreeRTOSのAPI、lwIPのAPI、MQTT-API、SPIFFSのAPIに加え、SDKのAPIを使うことができるので、ほぼ何で
もできてしまいます。
なお、SDKのAPIは、esp-open-rtos/lib/allsymbols.renameの中で、全てsdk_hogehoge()に
renameされています。
wifi_station_dhcpc_stop → sdk_wifi_station_dhcpc_stop
SDKのAPIについては、こ
ちらにESP8266 Non-OS SDK API Referenceが公開されていますが、
どうやって使えばいいのかよく分からないAPIが沢山有ります。
せっかく色々なAPIが有るのに、使い方が分からないのはもったいないです。
GPIO、SPI、i2cなどの周辺機器に関しては、具体的なサンプルが有るので、すぐに試すことができます。
まずは実際に動くことが大事です。
但し、アクセス関数群として提供されていたり、アクセスタスクとして提供されていたりで、提供されてる形態はまちまちです。
ソースを確認して、使い方を確認する必要が有ります。
examplesディレクトリには沢山のサンプルコードが有りますが、使い方が分からないサンプルもいくつかあります。
各サンプルの簡単な説明が欲しいです。
wificfgサンプルが気になっていますが、使い方が分かりません。
softuartの機能もありますが、マルチタスクの環境では正常に動きません。
UART通信は時間に厳しいので、カーネルレベルで対応しないと難しいです。
嬉しいのはビルドに要する時間です。
単純なLチカコードをコンパイルする場合、ESP8266 core for Arduinoでは書き込み完了までに約2分掛かりますが、
明らかにスペックの落ちるマシンを使っても、esp-open-rtosではフルコンパイルしても約50秒で終わります。
もちろん、makeシステムを使うので、少しだけコードを変更した場合は、あっという間に書き込みが完了します。
よく使う処理(例えばWiFi接続を監視する処理など)は、タスクとしておけば簡単に使いまわしができます。
RTOSにはタスクスイッチのオーバーヘッドが有るので、ベアメタルよりもパフォーマンスは落ちます。
続く...