STM32 パラレル版ILI9341 LCDで比較するDebugビルドとReleaseビルドの違い


ILI9341 LCDを買ったものの、またいつものように放置していたので使ってみることにします。

何故今までILI9341を放置していたかというと、パラレル版を買ってしまったためなんです。
ググって見つかるナレッジやサンプルはSPI版がほとんどで、パラレル版の使い方はあまり見つかりません。
仕方がないのでSPI版をベースに自分でパラレル仕様に改造します。

ベースにしたのはmartnakさんのライブラリです。
https://github.com/martnak/STM32-ILI9341

改造といっても数十行程度なんですけどね。
ただ、タッチスクリーンについては残念ながら流用できませんでした。
パラレル版でタッチスクリーンを使っているのはCUBE IDEはほぼ無く、Arduino IDEでもほんの一握りだけなのでそれを参考にして自前で作るしかありません。

それでは動作確認です。
11.20 FPS...。
PIO転送なのでDMA転送のSPI接続に及ばないとはいえ、ちょっと遅いかな。
CUBE IDEのデフォルトはDebugビルドなので、Releaseビルドにすれば少しは早くなるかもしれません。
UNIXでも-g付きビルドだとbinサイズは2~3倍、処理時間も2~3割増しになってしまうので。



さて、どうでしょうか...。
おお!
37.10 FPS。
Releaseビルドだと通常の3倍、いや逆だろ。
Debugビルドだと1/3しか性能が出てなかったのか?



今まで
STM32はI/Oが遅いとか
STM32はI/Oが遅いとか
STM32はI/Oが遅いとか
言ってたけど、単にデバッグ用のコードが性能を落としていただけだったのかもしれません。
とはいえ、さすがに今まで製作したデバイス全部をReleaseビルドし直すのは面倒なので、性能問題が出ていないものはそのまま使います。


リツコ 「拘束具が!」
日向  「拘束具?」
リツコ 「そうよあれはデバッガではないの、STM32本来の力を私たちが押え込むための拘束具なのよ」

いや違うと思う。


戻る