(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
--------------------------------------------