2016年4月14日木曜日

mbed rtosについて

自作mbed+rtosの組み合わせが半端なく便利
いくつか注意点があるので防備録に
・Serialは基本的に使えないものと考える
Serialを使ってそれまで動いていたプログラムも、mbed rtosのライブラリをインポートしただけで(includeを書いていなくても)動かなくなる。RawSerialに書き換える必要がある。
・Mail=Queue+MamolyPoolで基本的にMailを使う
rtosの説明を見るとQueueがいわゆるFIFOの役割をしてくれるように見えますが、こいつはデータのアドレスしか保管してくれず、本体はMemoryPoolでallocする必要があります。
基本的にMailを使いましょう。
Mailのキューにはアドレスが入る関係上、キューの個数x約7Byteのメモリーを使います。あまり大きなキューは使わないようにしましょう。
・waitという名前じゃなくても待つ関数がある。
例えばMailのget関数はMailのキューにデータが来るまで待ちます。waitっぽい名前じゃなくても待機動作をするやつがあるのでリファレンスで確認しましょう。
getは何も無ければスルーする関数かと思った。
・classメンバを割り込みで登録するとき
name.attach(this, &class::func);
・グローバル領域でthreadを作ってはいけない。
新規threadの作成は必ずmain関数(rtos的に言えばmain thread)内で作っていかなければならない。
グローバル領域で作製するとプログラムをクラッシュさせる。

0 件のコメント:

コメントを投稿