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でも報告されています。


全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。