24
NiosII RTOS について ()シンビー

NiosII と RTOS について

  • Upload
    ryos36

  • View
    512

  • Download
    3

Embed Size (px)

Citation preview

Page 1: NiosII と RTOS について

NiosII と RTOSについて

(有)シンビー

Page 2: 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の標準。すぐに使えるようにテンプレートが用意されている

Page 3: NiosII と RTOS について

RTOSの理解

• RTOSではタスクを有効に使う– RTOSのタスクはプライオリティを持っている

• タスクはコンテキストを保持することが可能– CPU を仮想化する技術

– CPU の使用率を上げることができる

–割り込みはコンテキストを保持できない• 割り込み処理では wait することができない

• タスクの優先順位と割り込みを理解→ RTOSの理解

Page 4: NiosII と RTOS について

RTOSのタスクの役割

IDLE

優先順位を管理

休眠中タスク

プライオリティをもって優先順位の管理を行う

Page 5: NiosII と RTOS について

ハードリアルタイム

• システムに課せられたある処理がデッドライン内に終了しなかった時(デッドラインミス)、システム全体にとって致命的ダメージが生じる

• デッドライン内での終了が保証されなければならないシステム。

Wikipedia より抜粋

Page 6: NiosII と RTOS について

ハードリアルタイム

• ロケットの制御

• レポート提出期限 12/26 17:00 –提出しなかったものは落第

デッドラインを過ぎると価値が0

Page 7: NiosII と RTOS について

ソフトリアルタイム

• デッドラインミスが起こっても、システム全体に致命的なダメージを与えることはなく、その処理自体の価値も、終了時間などにより徐々に落ちていく

Wikipedia より抜粋

Page 8: NiosII と RTOS について

ソフトリアルタイム

• 動画の再生

• レポート提出期限 12/26 17:00 – 1分遅れるごとに1点減点

デッドラインを過ぎると徐々に価値が下がる

Page 9: NiosII と RTOS について

ポーリング処理

while(true){wait(100);polling();処理()}

MEMSData

処理

Polling

処理

Polling

Page 10: NiosII と RTOS について

ポーリング処理(N G例)

while(true){wait(100);polling();処理()}

MEMSData

処理

Polling

処理

Polling

コンフリクト

取りこぼし

Page 11: NiosII と RTOS について

while (true) {

}

割り込みを使えばいいか?

処理()

MEMSData

処理

処理

割り込み発生後に

即座に他の処理をすることは難しい

別の処理

別の処理

割り込み

割り込み

Page 12: NiosII と RTOS について

割り込みの延長は?

MEMSData

他の割り込みの管理が難しくなる

別の処理

別の処理

割り込み+処理

割り込み+処理

Page 13: NiosII と RTOS について

タスクでコンテキストを保持/切り替え

IDLE

優先順位を管理

作業中タスク(1つだけ)

作業を中断している

作業を中断している

Page 14: NiosII と RTOS について

割り込みとRTOSで制御

MEMSData

タスク1タスクスイッチ

タスク2

割り込み

OS

TCP/IP

タスク1

タスク2

割り込み

OS

割り込み

TCP/IP

ACK等

Page 15: NiosII と RTOS について

多くのRTOSの設計

TCP/IP

APP

IDLE

ネットワークのタスク高い優先度

ユーザアプリケーションの優先度

Page 16: NiosII と RTOS について

RTOSアプリケーション設計上の注意

• プライオリティの設定

– RTOSの中には TCP/IP より高いプライオリティは設定できないものもある

• タスク設計

– タスク切り替えを考えると複数タスクに分割しないほうがよいケースもある

• 割り込みの管理

• 処理時間の見積もり

Page 17: NiosII と RTOS について

RTOSでも解決しない事

処理1 処理2 規定時間

Page 18: NiosII と RTOS について

各方式比較

アプリ実装 事象への反応 必要RAM TCP/IP との相性

ポーリング 易しい △ BRAM/外部RAM ○ 作り方によっては有力な候補になる

割り込み 難しい ◎ BRAM/外部RAM ○ 簡単なシステムでは採用

割り込み+優先順位 易しい △ BRAM/外部RAM ○ ポーリングと同じ

多重割り込み すごく難しい ◎ BRAM/外部RAM ○ 難しすぎるので通常は採用しない

RTOS 難しい ○ 外部RAM △ リアルタイムの性能を考慮しやすい。

Page 19: NiosII と RTOS について

NiosIIのメモリ構成例(1)0x0000 0000

8KBRAM

0x2000 0000

各種レジスタ

簡単なプログラムを置ける。FPGAの資源を使うため通常は 8K や 16K 程度。RTOSやTCP/IP のスタック

を置くことは難しいことが多い。

Page 20: NiosII と RTOS について

NiosIIのメモリ構成例(2)0x0000 0000

8KBRAM

0x2000 0000

各種レジスタ

SOFの後にプログラムを置くことができる。BRAM 等に展開する(Qsysが自動的に作る)

EPCS

Page 21: NiosII と RTOS について

NiosIIのメモリ構成例(3)0x0000 0000

512KFlash ROM

0x2000 0000

各種レジスタ

プログラムを置くことができる。不揮発性。アクセスは高速ではない

1MSRAM/SDRAM

0x1000 0000

プログラムやデータを置くことができる。揮発性のため電源を切ったら情報はなくなる。

Page 22: NiosII と RTOS について

NiosIIで uC/OS II を使う方法

• Qsysによるシステムの構築

• Eclipse のテンプレート

Page 23: NiosII と RTOS について

Qsysによるシステムの構築(例)

RTOSの為に Timer を追加。

RTOSの為にSDRAMを追加。

Page 24: NiosII と RTOS について

Eclipse のテンプレート

RTOSの雛形が標準でついている