Litronのハッキングとアプリケーション作成ガイド Linuxのパッチ TOPPERS/JSPカーネル(iTRON)の修正 Linuxのデバイスが動かなくなったら |
||
Linuxのパッチ | ||
割り込みに関わる修正 |
||
litronは割り込みコントロールを使い分けています。 cli()、__cli() このマクロの実行で割り込み禁止状態にしても、iTRONは動作します。 用途 デバイスドライバー等での割り込み禁止に用います。 save_and_cli() このマクロの実行で割り込み禁止状態にすると、iTRONも割り込み禁止状態です。 用途 TLBのミスヒットなどの例外処理での割り込み禁止に用います。 具体的にパッチを当てているファイル include/asm/system.h、 drivers/chsr/sh-sci.c |
||
Litronに関わる修正 |
||
スケジュラー iTRONはアイドル状態になったときに、Linuxに実行権が移行します。この状態からの復帰はiTronのタイマー処理の直後に行っています。 arch/sh/kernel/irq.c スタック管理 iTRONはメモリー管理上、Linuxのモジュールです。P3エリアで動作しています、したがってiTRON上のタスクのスタックもP3エリアにあります。したがってTLBの2重ミスヒットの可能性があります。この問題の解決手段として、以下のソースにパッチを当てています。 arch/sh/kernel/entry.S |
||
TOPPERS/JSPカーネル(iTRON)の修正 |
||
メモリー管理と割り込み処理の登録 | ||
この部分はLinuxに依存しています。したがってこれに関わる処理部分は不要となります。 Linuxの作法による割り込み処理の登録 iTRON用のデバイスドライバーを作成する場合はタイマーの初期化と同等で手順で行います。 jsp/config/litron_sh4/hw/timer.hのhw_timer_initialize()が参考になります。 |
||
iTRONからのメッセージ | ||
iTRONはマンマシンインタフェースをもっていません。iTRONからのメッセージ出力はlinux間とのインタフェース用に実装したpipeにより行います。 if_litronプログラムを参照してください。 |
||
Linuxのデバイスが動かなくなったら |
||
Litronを実装することによって、動かなくなる、もしくは動作が不安定になるデバイスが出てくる可能性があります。 その場合の処置方法とiTRONの動作 (1)system.hのパッチを元にもどす。 linuxのデバイスドライバーがcli()を発行している間、iTRONはまたされます。 (2)itron動作時のenableをマスク0に変更する。 iTRONが動作中でも、Linuxのデバイスに割り込み要因が発生すれば、実行権がLinuxに移行します。 (3)動かないデバイスドライバー内で使用しているcli()をsave_and_cli()に変更する。 このドライバーが割り込み禁止にしている間、iTRONはまたされます。 (4)割り込みがかかって、一定時間内に割り込み処理が動作しなくても、動くようにデバイスドライバーを修正する。 システムの要件が厳しい場合はこの方法で、処置します。 |