Litronプロジェクト
Linux+iTRON でLitron
2005/05/31更新
最新性能評価パッチは2004/3/22版です。

Litron ver1.3.0 rev0.01 版(jsp1.4版)
パソコン版litron2のiTRONはkernelThreadとして動かしました。このバージョンはそれと同じ構造で動かすようにしたバージョンです。linux側はentry.Sにだけパッチを当てます。これはiTRONが動作中に自分自身のメモリーミスヒット等の例外発生時の対策で、モジュールでなくkernelに組み込んだ場合は必要ないパッチです。

Linux2.6.10とjsp1.4のパッチ ---litron_v1.3.0_r001.tgz
Linux-iTRONインタフェース-----if_litron.tgz   

Litron ver1.2.0 rev0.01 版(jsp1.4版)

Linux2.6.3とjsp1.4のパッチ ---litron_040322.tgz
Linux-iTRONインタフェース-----if_litron.tgz
jsp-1.4への対応とlinux2.6.1はshで動かす場合パッチが多いので、linuxを2.6.3ベースとしました。

isp-1.4のオリジナルはTOPPERSプロジェクトからダウンロードしてください。

一応このバージョンのCDを作成しました。ドキュメントはDOC_v1.20_rev001です。

  CDのisoイメージsh4_litron.iso 500Mbyte位の容量になります。
  サーバー移転でCDイメージを置けるようになりました。
  ちょっと古いですが、カーネルのいじり方の参考にはなると思います。(2010/03/10)



2002/11/22版の性能評価


評価ボードーーー日立の7750ソリューションエンジンでCPUクロックは200Mhzですが、オリジナルのバス設定にかなり余裕があります。性能的には150Mhzのボードと同程度の性能になると思います。

評価基準ーーーーitron上に10ミリ周期でタスクを動作させ、linuxに負荷をかけた場合の動作周期のばらつきを調べています。

 itronタスクのばらつき(1時間動作時の最大値)
itronをモジュールとして動作 itronをkernelに組み込み
1)ほぼ無負荷  27マイクロ秒(平均.9マイクロ秒)    ーーー
2)デバイスをさわらないアプリ  29マイクロ秒    ーーー
3)連続ファイルアクセス  521マイクロ秒    271マイクロ秒
4)ether(ping -f -s 1500 ???)  26マイクロ秒    ーーー
1)ほぼ無負荷
  linuxを動作させ、ネットワークデーモンが動作している状態。
2)デバイスをさわらないアプリ
  単に永久ループのアプリを動作させている状態。
3)連続ファイルアクセス
  telnetでログインしてcpとsyncを繰り返している状態。
4)ether(ping -f -s 1500 ???)
  外部のパソコンより1500バイト長のpingを繰り返している状態。
  1秒間に200kbyteの送受信のデータで、4Mbps位の実行スピードになります。
  補足、古いチップですから、この程度の性能しかでない?

テスト結果を整理すると!


 タスクの周期起動のばらつきとして測定していますが、iTRONのタスクスケジューリングの精度と考えて良いと思います。ディスクアクセスがないシステムであれば、30マイクロ秒位の誤差と考えてシステム設計してもよさそうですが、ディスクアクセスを伴うシステムの場合は600マイクロ秒位の誤差を容認できるシステムでないと無理がありそうです。
 スケジュールが乱れる原因はディスクアクセスがもとですが、実際はTLBのミスヒットが多発するような構成にすると乱れが大きくなります。iTRONをkernelに組み込むとディスクアクセス時のばらつきは半分になります。これはSHのアーキテクチャーに依存した話ですが、itronの動作環境がTLBの管理下にあるかないかの違いであることから明白です。

テスト時のおまけ
 ページフォルトの処理自身で10マイクロ秒くらいかかることがありますから、一度、ページフォルトが発生すると20マイクロ秒くらいの遅れが発生します。l
 linuxの最長割り込み禁止時間はetherのドライバー動作時に6ミリ秒、CFのアクセス時に3ミリ秒くらい割り込み禁止のままになるようです。
基本方針
 最近のソフトは煩雑!!、GUIやネットワーク屋さんはリアルタイム処理が不得意、リアルタイム屋さんはGUIとかネットワークが不得意、それなら1つのターゲットに2つのOSを実装しちゃいましょ!

前提条件

 とりあえず、SuperHのアーキテクチャーべったりでの実装とします。
 linuxは極力手を入れない(すでにアルファー版でフックが入ってますけど)!

割り込みコントローラー
 割り込みのプライオリティー、linux用デバイスは0〜7、itronデバイスは8〜15を使用します。
 sh用linuxは7以上の設定はほとんど?ありませんが、あった場合は変更します。
 
itronタイマー
 SHはタイマーが3つあるので、itron用に独立した1ms周期のタイマーを使用します。1msじゃ大まか過ぎる処理があるときは3つめをつかいましょ!

現在のターゲットは
 日立さんのsh4ソリューションエンジン(MS7750SE01,MS7751SE01)です。

素材
 Linux2.4.17(MS7750SE01),またはLinux2.4.13(MS7751SE01)
 itronは豊橋技術科学大学情報工学系組込みリアルタイム研究室TOPPERS/JSPカーネル
ITRON上でプログラムを作る方への注意事項
 linuxはitronがアイドリング状態になったときに実行可能となります。低い優先度のタスクであってもダイナミックループするような処理を入れないでください。itronは正常動作しても、Linuxに実行権が移行しなくなります。
動かし方
itronはlinux上の一つのモジュールとして動作します。
itronの動作開始   insmod jsp.o
itronの停止      rmmod jsp

現状

 020930版はRTLinuxよりは。。。と思うのですが、どのような性能評価をしたものか?
コンソールがやけに強気の動きをすると思っていたら、割り込み禁止にsave_and_cli()を使っていました。ドライバーはcli()っていうのがルールだと思ったのは私だけ???