(toppers-users 4212) Re: ATK2をCubeSuite+のV850E2シミュレータでデバック

鴫原一人 shigihara @ nces.is.nagoya-u.ac.jp
2014年 3月 5日 (水) 16:38:56 JST


東島様

お世話になっております.
名古屋大学 鴫原です.


dispatcher_1とdispatcher_3の間のループは,
実行するタスクが存在しないアイドル状態となります.

sample1.cでは,ターゲット毎に用意したカテゴリ2ISRである
target_timer_hdrを使って,1ミリ秒に1回,ソフトウェアカウンタ
SysTimerCntをインクリメントしています.
さらに,SysTimerCntへ接続したアラームMainCycArmの満了処理によって
10ミリ秒に1回,MainTaskのMainEvtへSetEventを発行しています.

これにより,WaitEvent(MainEvt)で待ち状態に入った
MainTaskが再び実行状態となることができます.
(この間アイドル状態となります)

V850E2シミュレータを使ったことがないのですが,
シミュレータですと割込み周りの挙動がシミュレートできていないか,
タイマが進んでいない等の原因が考えられます.
また,入力コマンドを受け取るためには,SIOドライバの
割込みも必要になります.

まずは,WaitEvent(MainEvt)の前で,GetCounterValue(SysTimerCnt, &xxx);
を何度か発行して,xxxに代入されるカウンタ現在値がインクリメントされて
いるか確認すると,タイマ割込みが定期的に入っているかを確認できると
思います.


以上,よろしくお願いします.

(2014/03/05 (水) 15:48), ASTC Higashijima wrote:
> 各位
> 毎々お世話になっております。
> 東島@ASTCです。
> 
> 現在、CubeSuite+と一緒に提供されているV850E2シミュレータをデバックツール
> として、
> atk2-sc1の立ち上げを行っています。
> 題材はSample1.cを使っています。
> 
> CubuSuite+にていくつかのフック処理をした後、Sample1.cの起動とOSのスタートを
> 確認することができました。
> コマンド入力を待つWaitEvent(MainEvt);を実行を確認できました。
> event.cにあるWaitEvent()の中で実行しようとしているdispatch()の実行で
> 止まっております。
> dispatcher_1とdispatcher_3の間をループしているようです。
> 
> 何とかSample1.cを先に進めて、
> WaitEvent(MainEvt); /* 10msの作業時間待ち */
> ClearEvent(MainEvt);
> /*
> * 入力コマンド取得
> */
> syslog(LOG_INFO, "Input Command:");
> command = GetCommand();
> ==>ここまではシミュレータ上で確認したいと思っております。
> 
> そこで、質問なのですが、このdispatch()をうまく抜けるには、
> dispatcher_1とdispatcher_3の処理をどのようにすれば
> 良いのでしょうか?
> 
> OSからのログ出力は生かしておきたいと思っています。
> このシミュレータで動作させることは難しいのでしょうか?
> 
> 質問が勘違いしているかもしれませんが、
> ご教示いただければ助かります。
> 
> 以上、よろしくお願いします。
>