SSブログ

ESP32でマルチタスクを行う為の、とりあえずここまで判った事 by freeRTOS 31タスク目 [ESP32]

現在実用ガイドを読みながら編集中、、、ある事ない事書いちょりまっす!
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf

ESP32はRTOSができるらしい、、、

メモリ管理、、、1

カーネルは、タスクや、データキューや、セマフォが生成されるとき、動的にメモリ割り付けを行う。
標準のmalloc()やfree()のライブラリ関数は使う事ができるが、次に述べる問題を1つ以上抱える事になる。
1.小規模な組み込みシステムでは、常に有効とは限らない。

2.実装すると比較的大きなコード領域を取る。

3.スレッドセーフである事は稀である。

4.They are not deterministic. The amount of time taken to execute the functions will differ from
call to call. 、、、ちょっとうまく訳せん。決定論なんて初めて聞いたし、、、下記コメントを参照してください。

5.メモリのフラグメンテーションに苦しむ可能性がある。

6.リンカーの設定が複雑になる可能性がある。

さまざまな組み込みシステムではRAMの割り当てとタイミングの要件が異なるため、1つのRAM
割り当てアルゴリズムは、アプリケーションのサブセットにしか適さない。したがって、FreeRTOS
(コアコードベースの一部ではなく)ポータブルレイヤの一部としてメモリ割り当てを処理する。この
個々のアプリケーションが適切なときに固有の実装を提供できるようにする。

カーネルがRAMを必要とするとき、malloc()を直接呼び出すのではなく、代わりにpvPortMalloc()を呼び出す。RAMが不要になったとき、free()を直接呼び出すのではなく、カーネルは代わりにvPortFree()を呼び出す。pvPortMalloc()はmalloc()と同じプロトタイプを持ち、vPortFree()はfree()と同じプロトタイプを持つ。

FreeRTOSには、pvPortMalloc()とvPortFree()の3つの実装例があり、この章で説明していく。 FreeRTOSのユーザーは例題の1つの実装を利用したり、独自に実装する事ができる。

この3つの例は、それぞれheap_1.c、heap_2.c、heap_3.cファイルで定義されている。これらはFreeRTOS\Source\Portable\MemMangディレクトリにある。(1)
FreeRTOSの非常に初期のバージョンで使用されていた、元のメモリプールやブロック割り当て方式は、ブロックとプールの次元を決定するのに努力や理解を必要とするため、削除された。

小規模な組み込みシステムでは、スケジューラーが起動する前に、タスクや、データキューや、セマフォが生成される。アプリケーションが真のリアルタイム機能をスタートし、実行する前に、メモリが動的に割り付けが行われるケースであり、一度割り付けられたメモリは決して開放されない。この意味は選ばれた割り付けの仕組みが、決定論やフラグメンテーションの様なより複雑な問題に対する考慮を必要としない。その代わりコードサイズや単純性の様な属性に対する考慮をするであろう。

※訳がつらい、、、うまく訳せない。

(1) https://github.com/jameswalmsley/FreeRTOS/tree/master/FreeRTOS/Source/portable/MemMang
なんて事でしょう!heap何とかが5つも有る!

※そもそもFreeRTOSの関数リストにはpvPortMalloc()とかvPortFree()は無い。μiTRONの固定長メモリプールとか、可変長メモリプールと同等の関数も存在しない。つまり、heap何とか.cのいずれかをユーザーが選んで、それを使え!と言う話なのであろう。



ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/23
  • メディア: Kindle版



図解 μITRONによる組込みシステム入門(第2版)

図解 μITRONによる組込みシステム入門(第2版)

  • 作者: 武井 正彦
  • 出版社/メーカー: 森北出版
  • 発売日: 2018/02/17
  • メディア: 単行本(ソフトカバー)



μITRON4.0標準ガイドブック

μITRON4.0標準ガイドブック

  • 作者:
  • 出版社/メーカー: パーソナルメディア
  • 発売日: 2001/11/01
  • メディア: 単行本(ソフトカバー)



リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

  • 作者: 高田 広章
  • 出版社/メーカー: CQ出版
  • 発売日: 2004/02
  • メディア: 単行本



nice!(0)  コメント(2) 

nice! 0

コメント 2

forth83

dterministic については wikipedia の 決定的アルゴリズムを参照してみて下さい。

(非決定的アルゴリズムの)関数の実行に要する時間は呼出し毎に異なる。(なのでリアルタイムでは使い物にならない)

ということだと思います。
by forth83 (2018-03-12 12:20) 

hamayan

ありがとうございます。言わんとしている事がなんとなく判りました。
by hamayan (2018-03-13 00:15) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。