Artyomから稼働率の質問があったので,MicroC/OS-IIのstatistics taskを
利用してCPU時間を表示してみました.
このタスクはOS_TaskStat()と呼ばれ,MicroC/OS-IIの設定でOS_TASK_STAT_ENを
enableすることで,優先度が最も低いタスクとして実装されます.
このタスクは,毎秒実行され,CPUの稼働率を計算します.
Nios II SBT for Eclipseでは,BSPエディタでこれら設定を編集することができます.
(クリックで拡大)
OS_TaskStat()を利用するには,まずOSStatInit()を呼び出します.この関数は,
一番初めのタスクが生成さる際に一度だけ実行しなければなりません.
そこで,main()でstart_task()というタスクだけを生成し,その中でOSStatInit()を
実行するようにしました.
その後,start_task()では,他のタスクを生成します.他のタスクの生成が終了したら,
start_task()は自分自身をデリートしています.
OS_TaskStat()で計算されたCPU時間は,OSCPUUsageという変数で読み出すことが
できます.単位はパーセントです.
実際にNamuru-Nanoを実行してみると,信号を何も追尾していない状態であれば,
CPU時間は20%でした.CPU時間は,1衛星を追尾するごとに1%増加する感じです.
測位演算などにどの程度のCPU時間が必要となるか予想もつきませんが,
それでもまだまだ余裕がありそうです.