(toppers-users 1336) V850依存部について

松尾 智之 matsuo @ mxj.mesh.ne.jp
2004年 1月 15日 (木) 15:45:51 JST


松尾と申します。初めて投稿させていただきます。

#下記現象、既に認識済みならごめんなさい

現在、当方にて設計しましたターゲット(V850E/ME2)上で、
Toppers1.3を動作させております。

サンプルプログラム(sample1.c)は動作するのですが、
イベントフラグを使用したり割り込み処理を増やしていくうちに
システムが頻繁にハングする現象が発生しました(3秒〜1分以内にハング)。

デバッグを進めていくうち、カーネルの割り込み処理に不具合を
発見しました。(config/v850/cpu_support.S)

getting_ready_for_contextswitch の最後で reti していますが(441行目)、
ここで割り込みがイネーブルになるため(割り込み発生直前のPSWに復帰)、
次タスクの復帰準備中に割り込みが発生すると、システムが破綻します。

よって、当方では、

        /* タスクディスパッチャへ */
    Lea     __kernel_exit_and_dispatch, r10
    ldsr    r10, eipc
+   stsr    eipsw, r10
+   ori     0x20,r10,r10
+   ldsr    r10, eipsw
    reti

の「+」部分を追加することにより安定動作させることができました。

以下に当方の開発環境を記します。
・コンパイラ  MULTI2000 Ver3.5 (Green Hills Software)
・JTAG ICE    RTE-2000-TP-B-N (マイダス・ラボ)

#Toppers1.4のV850依存部、リリースを楽しみにしております。

--------------------------------------------
    松尾 智之
    Tomoyuki Matsuo

    email: matsuo @ mxj.mesh.ne.jp
--------------------------------------------