(toppers-users 2715) Re: JSPシミュレーション環境へのパッチ

Moneyqb moneyqb @ gmail.com
2008年 1月 15日 (火) 22:47:16 JST


小南さん

こんにちは、センヒョウです。

小南さんのパッチファイルをjsp-1.4.3にパッチした結果、
コンパイル、実行までできました。

コンソールで下記のメッセージが出ました:
-----------------------------------------------------------------------
TOPPERS/JSP Kernel Release 1.4 (patchlevel = 3) for Linux(posix-base) 
(Jan 15 2008, 22:36:53)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
task1 is running (004).   |
……
-----------------------------------------------------------------------
どうもありがとうございました。

以上、よろしくお願いいたします。

Moneyqb さんは書きました:
> 小南さん
> 
> こんにちは、センヒョウです。
> 
> どうもありがとうございました。
> 早速ですが、ためさせていただきます。
> 
> 以上、よろしくお願いいたします。
> 
> ykominami さんは書きました:
>> センヒョウさんこんにちは
>>
>> 小南と申します.
>> 私も以前Linuxシミュレータをコンパイルしようとして、センヒョウさん
>> と同じ問題に遭遇しました.
>>
>> その時は、タスクのスタック領域を指定回数分のダミー関数の再帰呼び出しと
>> setjump関数により確保し、longjmp関数でタスクスイッチするようにしました。
>> シグナル処理の関数もJIS X3030-1994(ISO/IEC 9945-1:1990)で規定されてい
>> る範囲しか用いないようにしました.
>> このようなやり方のため、カーネル初期化処理の順序を強引に変えざるを得な 
>> かっ
>> た(タスクのスタック領域の確保をディスパッチの直前にもってきています)
>> のですが、Fedora Core 6でコンパイルが通り、sample1.c程度のプログラム
>> であればエラーを出さずに実行できました。
>> #要はあまりあれこれ試していないということです.
>>
>> 先ほどその時のソースを引っ張り出し、現在でも(私の環境はFedora 7です)
>> sample1.cがコンパイル可能で、エラー無しで実行できることが確認できました
>> ので、以下に差分ファイルとして置いておきました.
>>
>> パッチの在り処
>> http://www.northern-cross.info/download.html
>>
>> センヒョウさんがLinuxシミュレーションの内部構造を知ることが目的ではなく、
>> Linuxシミュレータでアプリケーションを実行させることが主眼であるならば
>> とりあえずは、お役に立てるのではないかと思います.
>>
>>
>> ここで話題に出ていたsoftware_term_hookはstart.cにダミー関数として中身が
>> 空の関数として定義しました.
>> また、実行させるマシンによって、タイマティックの値を調整する必要がある
>> と思います.
>> これはsample1.cのmainタスクの処理の冒頭でのループ回数の設定において、
>> ループを回してもカーネル内部での時刻が進まず、0除算が発生してしまうこと
>> があるからです。
>> config/linux/cpu_def.hのマクロTIC_NUME, TIC_DENOの値を調整してください。
>>
>> パッチを当てると、バナーに"linux(posix-base)"と出るようになります.
>> posix-baseといっていますが、linux上で動作する、linuxシミュレータ
>> であり、他のPOSIX互換環境で動作するわけではありません.
>>
>> #差分を見返してみて、シグナルスタックを指定する関数を使えば、カーネル 
>> 初期化
>> #処理の枠組みを崩さずに済むかも知れないとは思いましたが、それは今後の課題
>> #にさせてください.
>>
> 
> 
>