まず動かしてから最適化しろ

STM32 CubeHAL用のクラスライブラリ『』の試験用にNucleo H743ZIを購入しました。ところがこれがとんだ難物でした。

試しに紫のテストプログラムを流してみましたが、こいつが文字通りうんともすんとも言いません。シリアル・ターミナルにメッセージが出てこないのです。調べたところUART送信後にエラー割り込みが起きています。不審に思って、紫抜きのCubeMXから生成したほやほやのスケルトンで試験したところ、UART送信後にやはりエラー割り込みが起きています。なんでやねん!

検索したところでは、これは定番の問題のようです。H743には大量のSRAMが存在します。そのうちの一つはCPUコアと直結するDTCMで、直結しているゆえにペリフェラルからのDMAアクセスができません。

Unfortunately this memory is used as default in some projects including examples.

FAQ: DMA is not working on STM32H7 devices

Unfortunatelyと、他人事みたいに言ってますがCubeMXが吐いたコードです。

「まず動かしてから最適化しろ」

は鉄則です。STとしてはせっかく高速動作するDTCMを実装したのでそれを使って欲しかったのでしょうけど、使い出したユーザーが

「Lチカは動作するのにシリアルが動かないぞ」

と半日頭をひねるようなスケルトンは本末転倒です。深いため息とともに終わった話でした。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください