マイコン工作実験日記

Microcontroller を用いての工作、実験記録

FreeRTOSV11とSystemView -- その2

2025-01-03 15:12:14 | DoomPlayer

前記事で書いたようにMusic PlayerやBluetooth Playerの実行時にはguitaskがCPU時間のかなりの部分を使ってしまっていることがわかりました。そこでguitaskの動き方をもう少し詳しく調べてみることにしました。

実行時に何度か止めてみると、かなりの頻度でlv_timer_handler() が呼ばれていることに気づきました。5ms程度の間隔で呼ぶことにしていたので、この間隔を20msまで延ばしたところかなりIdleタスクが動くようになりました。

Idle時間が生まれたとはいえ、やはりguitaskの実行時間が支配的であることがわかります。そこで、さらにlv_conf.hにて、

#define LV_USE_OS LV_OS_FREERTOS

を設定。以前は、lvglDrawタスクにスタックを8KBも取られてしまうので使うのをためらっていましたが、今はLV_DRAW_THREAD_STACK_SIZE でスタックサイズを指定できるようになったので、4KBに減らしてみました。

lvglタスクのうち、描画のためのレンダリング処理の部分がlvglDrawタスクとして分離されることにより、その部分の比重を知ることができます。上図に見れるようにlvglDrawタスクの割合が半分以上を占めていることがわかりました。現在はレンダリング処理はすべてソフトウェアになっていますので、やはりこの部分をGPUのようなハードウェアによって処理できれば、かなり助かることがわかります。現在もv9.3に向けての開発が進んでいるmainブランチでは DMA2Dのサポートが復活しているので、開発の様子をみながら対応することを考えてみるつもりです。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。