(toppers-users 3356) FMPカーネルat91skyeye_gccターゲットのタイムティックについて

孫 正道 jdson @ fixstars.com
2011年 1月 7日 (金) 11:39:12 JST


みなさん

株式会社フィックスターズの孫です。

現在TOPPERS/FMPカーネルのat91skyeye_gccターゲットで
評価をしております。

一通りWindows機にskyeyeシミュレーション環境を構築して
at91skyeye_gccターゲットを動かすまでは成功しています。

そこで、ループでdly_tsk()しながらログをはくような
簡単なタスクを作成してみましたが、
どうも1RELTIM = 1msになっていない気がします。

dly_tsk(100) -> 1.5秒位
dly_tsk(200) -> 3.5秒位
dly_tsk(300) -> 5.0秒位
dly_tsk(400) -> 7.1秒位
dly_tsk(500) -> 8.5秒位

といった感じです。

dly_tsk()前後にとったget_tim()値を比較してみると
ぴったりに指定したRELTIM分経過しているのですが、
実際に時間を計ってみると上の右の方の時間が経過しているように見えます。
秒単位の時間であるだけに、シリアル出力による
オーバヘッドとはとても考えられません。

TIC_DUME、TIC_DENOは特に変えておらず、「1U」のままにしてあります。

なお、at91skyeye_gccターゲットはデフォルトで
ローカルタイマー方式を採用してありましたので
グローバルタイマー方式に切り替えても試してみました。
1パターンしか試していませんが、結果は以下の通りです。

dly_tsk(500) -> 9.3秒位

評価環境の詳細は以下のようになります。

評価機:
 Windows 7 32bit Professional
TOPPERS/FMPカーネルバージョン:
 1.1.1
TOPPERS新世代カーネル用コンフィギュレータ:
 1.6.0 Cygwin用バイナリ
skyeyeシミュレーション環境:
 TOPPERSカーネル向けシミュレーション環境最新リリース(1.0.3)に含まれて
いるバイナリ
クロスコンパイラ:
 Code Sourcery G++ Lite 2009q1-161 for ARM EABI
 (最新バージョンだとコンパイル後実行しても動かなかったのでこれにしました)

私としては1RELTIM = 1msとして動く環境を構築したいのですが
どなたかその方法をご存じの方はいらっしゃいますでしょうか。

よろしくお願いいたします。

-- 
孫 正道(ソン・ジョンド)

株式会社フィックスターズ
〒141-0032 東京都品川区大崎1-11-1
ゲートシティ大崎ウエストタワー18階
TEL: 03-6420-0751  FAX: 03-6420-0763