ARMにおける浮動小数点のprintf関数とスタック・アライメント
テクニカル・ノート 85413
アーキテクチャ:
ARM
コンポーネント:
general
更新日:
2018/08/25 14:25
はじめに
浮動小数点数のprintf(%f)が正しく機能しない場合がある。
解決方法
IAR C/C++ Compiler for ARMでは、スタックポインタを8バイトの境界にアラインメントする必要があります。8バイトの境界へのアラインメントは、AEABI(および、特定のコア向けのコンパイラによって生成された一部の命令)で必要となります。
デフォルトのcstartupコードは、ARMコアのスタックを自動的に8バイトの境界にアラインメントされたアドレスに初期化します。アプリケーションやRTOSがそのようになっているか確認してください。
背景
MQXのリリースノートによれば、MQX 3.7ではスタックが正しくアラインメントされません。この動作は、MQX 3.8で修正されています。この問題は、他のRTOSでも報告されています。
全ての製品名は、それぞれの所有者の商標または登録商標です。