狠狠撸

狠狠撸Share a Scribd company logo
NiosII と RTOS について
(有)シンビー
OS?比較
RTOS API ライセンス 提供元
Linux × pthread GPL N/A
ucLinux × pthread GPL N/A
RT‐Linux ○ pthread GPL N/A
TOPPERS ○ 独自 TOPPERS N/A
μC3 ○ iTRON 商用 イーフォース
NORTi ○ iTRON 商用 ミスポ
T‐Kernel ○ T‐Engine 商用 eSOL
eCos?PRO ○ pthread LGPL eCos
FreeRTOS ○ 独自 例外条項付きGPL FreeRTOS
MicroC/OS‐II ○ 独自 商用 Micrium
QNX ○ 独自 商用 QNX
NiosII の標準。すぐに使えるようにテンプレートが用意されている
RTOS の理解
? RTOS ではタスクを有効に使う
– RTOS のタスクはプライオリティを持っている
? タスクはコンテキストを保持することが可能
– CPU?を仮想化する技術
– CPU?の使用率を上げることができる
– 割り込みはコンテキストを保持できない
? 割り込み処理では wait?することができない
? タスクの優先順位と割り込みを理解
→?RTOS の理解
RTOSのタスクの役割
高
IDLE
低
優先順位を
管理
休眠中
タスク
プライオリティをもって優先順位の管理を行う
ハードリアルタイム
? システムに課せられたある処理がデッドライ
ン内に終了しなかった時(デッドラインミス)、
システム全体にとって致命的ダメージが生じ
る
? デッドライン内での終了が保証されなければ
ならないシステム。
Wikipedia?より抜粋
ハードリアルタイム
? ロケットの制御
? レポート提出期限 12/26?17:00?
– 提出しなかったものは落第
デッドラインを過
ぎると価値が0
ソフトリアルタイム
? デッドラインミスが起こっても、システム全体
に致命的なダメージを与えることはなく、その
処理自体の価値も、終了時間などにより徐々
に落ちていく
Wikipedia?より抜粋
ソフトリアルタイム
? 動画の再生
? レポート提出期限 12/26?17:00?
– 1分遅れるごとに1点減点
デッドラインを過
ぎると徐々に
価値が下がる
ポーリング処理
while(true){
wait(100);
polling();
処理()
}
MEMS
Data
処理
Polling
処理
Polling
ポーリング処理(N?G例)
while(true){
wait(100);
polling();
処理()
}
MEMS
Data
処理
Polling
処理
Polling
コンフリクト
取りこぼし
while?(true)?{
}
割り込みを使えばいいか?
処理()
MEMS
Data
処理
処理
割り込み発生後に
即座に他の処理をす
ることは難しい
別の処理
別の処理
割り込み
高
低
割り込み
割り込みの延長は?
MEMS
Data
他の割り込みの管理
が難しくなる
別の処理
別の処理
割り込み
+
処理
割り込み
+
処理
タスクでコンテキストを保持/切り替え
高
IDLE
低
優先順位を
管理
作業中
タスク(1つだけ)
作業を中断している
作業を中断している
割り込みとRTOSで制御
MEMS
Data
タスク1
タスクスイッチ
タスク2
割り込み
OS
TCP/IP
タスク1
タスク2
割り込み
OS
割り込み
TCP/IP
ACK等
多くのRTOSの設計
TCP/IP
高
APP
IDLE
低
ネットワークのタスク
高い優先度
ユーザアプリケーションの
優先度
RTOS アプリケーション設計上の注意
? プライオリティの設定
– RTOS の中には TCP/IP?より高いプライオリティは
設定できないものもある
? タスク設計
– タスク切り替えを考えると複数タスクに分割しな
いほうがよいケースもある
? 割り込みの管理
? 処理時間の見積もり
RTOS でも解決しない事
処理1 処理2 规定时间
各方式比較
アプリ実装 事象への反応 必要RAM TCP/IP?との相
性
ポーリング 易しい △ BRAM/外部RAM ○ 作り方によっては有力
な候補になる
割り込み 難しい ◎ BRAM/外部RAM ○ 簡単なシステムでは
採用
割り込み+優先順位 易しい △ BRAM/外部RAM ○ ポーリングと同じ
多重割り込み すごく難しい ◎ BRAM/外部RAM ○ 難しすぎるので通常
は採用しない
RTOS 難しい ○ 外部RAM △ リアルタイムの性能を
考慮しやすい。
NiosIIのメモリ構成例(1)
0x0000?0000
8KBRAM
0x2000?0000
各種レジスタ
簡単なプログラムを置け
る。FPGA の資源を使うた
め通常は 8K?や 16K?程
度。
RTOS やTCP/IP?のスタック
を置くことは難しいことが
多い。
NiosIIのメモリ構成例(2)
0x0000?0000
8KBRAM
0x2000?0000
各種レジスタ
SOFの後にプログラムを
置くことができる。BRAM?
等に展開する(Qsys が自
動的に作る)
EPCS
NiosIIのメモリ構成例(3)
0x0000?0000
512KFlash?ROM
0x2000?0000
各種レジスタ
プログラムを置くことがで
きる。不揮発性。アクセ
スは高速ではない
1M
SRAM/SDRAM
0x1000?0000
プログラムやデータを置
くことができる。揮発性の
ため電源を切ったら情報
はなくなる。
NiosII で uC/OS?II?を使う方法
? Qsys によるシステムの構築
? Eclipse?のテンプレート
Qsys によるシステムの構築(例)
RTOS の為に Timer?を追加。
RTOS の為にSDRAMを追加。
Eclipse?のテンプレート
RTOS の雛形が標準でついている

More Related Content

NiosII と RTOS について