My Photo
無料ブログはココログ
September 2019
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

他のアカウント

お気に入りのもの

  • SONY: SONY PHA-2
  • iCOP: VESAPC eBOX3310 VEPCEB31
  • Windows Embedded CE 6.0組み込みOS構築技法入門 (マイクロソフト公式解説書)

« SANYO Xacti C6購入 | Main | Xacti C6その後 »

デバッグ時のスレッドプライオリティ変更

WinCEデバイスのデバッグをしている時、スレッドプライオリティの値が適切かどうかが気になることがあります。WinCEはスケジューラがスレッドを管理していて、より優先度の高いスレッドのリクエストがあると、低位のスレッドを停止して高いものを実行します。このスレッドの優先度設定が不適切だと、本来はブロックしてはいけないスレッドを止めてしまうこともあるわけです。このような状況はカーネルトラッカを利用する事で発見することができます。

ところがこのスレッドプライオリティはCeSetThreadPriority関数で設定できるものの、調整するために毎回ビルドしていてはその作業効率は著しく落ちてしまいます。そこでデバッグ時に実行しながらスレッドプライオリティを変更したいと考えるのは普通ですが、どうもPlatform Builderではわかりやすいところにその手段が準備されていないようです。

Platform Builderでスレッドの状態を見るためには「Target」メニューから「CE Threads」を選択してスレッドの状態を確認できるウィンドウを開きます。これを見るとプロセスごとにスレッドのハンドルや、プライオリティを確認することができます。本当であれば、ここで「CurPrio」にマウスを移動し、右クリックで「プライオリティの変更」という項目が出てくればいいのですが、残念なことにそういう都合の良いものはありません。

200609031

ではデバッグ時にスレッドプライオリティを変更できないのか?というと、いえいえそういう事はありません。Platform Builderには「Target Control」という便利なものが準備されているのです。ここで「tp」コマンドを利用することでスレッドプライオリティを変更することができます。

200609032

tpコマンドの使い方はTarget Control上で?と入力すると、その他のコマンドと一緒に使い方を見ることができます。

tp <tid> [prio] : Sets/queries thread priority
    tid  : can be either a thread id, 'kitlintr' or 'kitltimer'
    prio : thread priority
           -1 or omitted : query current thread priority
           0 - 255       : set thread priority

使い方はすごく簡単で、例えば「tp 0xa3eff892 200」というように入力するだけです。最初の0xa3eff892はターゲットのスレッドハンドル、200はスレッドプライオリティです。何か他のスレッドを邪魔していたり、他のスレッドよりも優先度を高くしたい場合に、このtpコマンドでちょっとお試しというのは結構便利な機能です。

でも、これがTarget Controlだけでサポートされているのはちょっと残念ですね。

« SANYO Xacti C6購入 | Main | Xacti C6その後 »

Comments

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference デバッグ時のスレッドプライオリティ変更:

« SANYO Xacti C6購入 | Main | Xacti C6その後 »