2016/08/17

[勉]FreeRTOS (1)

組み込み向けのOSというと、RTOSが思いつく。
そうではないOSは、Linuxだったり、自作だったりすると思う。

RTOSの有名どころは、こういうところか。

ThreadXなんて知らなかったのだけど、最近ニュースに出ていたFuchsiaの記事で出ていたのでね。
ARMに絞れば、RTXもある。

eCosというのもあったなぁ、とWikipediaを見たら、あれはずいぶん前に終わってしまったのですな。
でも、本家では昨年の年末にニュースが出ているので、メンテナンスは続けられているようだ。

 

とまあ、調べていけばきりがないほど出てくるRTOSだが、私がよく使っているNordicのマイコンがFreeRTOSをサポートしているので、それを見ていこう(RTXはまだexperimental扱い)。

Nordicの人も、多くの場合RTOSは使わなくて済むとことが多かった、と書かれているように、SoftDeviceとSDKがあるとあまり使いたいと思う気持ちはない。
ただ、nRF52くらいまでいくと、あれこれ考えるくらいだったらタスク分けしてしまえ、と思うかもしれないしね。


まず、バージョンから確認しておこう。

  • 2016/05/25 V9.0.0
  • 2016/03/30 V8.2.3
  • 2015/08/14 V8.2.2
  • 2015/03/24 V8.2.1
  • 2015/01/16 V8.2.0

このくらいでいいかな。
リリースノートはこちらだ。テキストでちょっと読みにくいが、V9系になって大きく追加されたのは、これららしい。

  • tasks, semaphores, queues, timers and event groups can now be created using statically allocated memory, so without any calls to pvPortMalloc()
    • タスクなどが静的に作れるようになりました?
  • Added the xTaskAbortDelay() API function which allows one task to force another task to immediately leave the Blocked state, even if the event the blocked task is waiting for has not occurred, or the blocked task's timeout has not expired.
    • タスクの待ち状態が解除されなくても強制的にディスパッチするAPIができましたよ?

まあ、V8系を知っていないと意味がない情報だが、どのバージョンを使いたいかの指針にはなるかも(V9のアップデート情報はここにあった)。
V9.0.0で「All ARM Cortex-M3/4F/7 ports」とCortex-M移植が進んでいるようだから、私はV9の方を使いたいかもしれん。
ただ、NordicのnRF5 SDK v11.0.0では、V8.2.1をベースに移植したものだった。


では、ホームページに書いてある特徴を列挙しよう。

  • 12年もやってる
  • RTOSのマーケットリーダーだ!
  • 商用でもプロプライエタリなソースコードの公開をせずに無料で使える
  • IP infringementリスクがない(?)

使う側としての特徴も書かれている。

  • バイナリイメージは6K~12KBくらい
  • 機能いっぱい
  • カーネル部分はCソース3ファイルだけとシンプル
  • サポートフォーラムがある

他にもいろいろ書かれているのだが、まあよかろう。


さて、あとは使い方なのだが、一から調べたくないので先人の資料を読む。

FreeRTOSの全体構成 - 電子工作室

  • 移植するファイルはportable/ にまとまっている
  • 環境設定はFreeRTOSConfig.h

 

では、V8.2.1を見てみよう。

image

Plusは追加機能のサンプルなのかな。
こちらには「Free commercial licenses」とあるので、マークがついているものは特定のユーザに限っては商用利用無料ということだろうか。

NordicのnRF5 SDK v11.0.0も同じような構成だが、少し違う。

  • FreeRTOS-Plusがない
  • portableフォルダが2つあり、上層にはコンパイラとCMSIS、下層にはMemMangだけがある
    • マイコン差分は上層のportableにあるようだ。

 

Nordicのサンプルを見比べて使い方を把握しようと思ったのだが、DFUに対応していないなどちょっと違いがある。
いきなりNordicチップだとよくわからないので、手頃そうなSTM32F4のボードを使ってみるか。
何が手頃かというと、LEDが付いていて、OSのHello Wolrd的な「タスクでLED点滅」をやりやすいのだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。