• No : 17127
  • 公開日時 : 2025/01/10 11:52
  • 更新日時 : 2025/01/15 17:40
  • 印刷

【NXP:i.MX RT】 i.MX RT1170 PRINTFで浮動小数点の値を出力する方法

MCUXpresso IDEのi.MX RT1170向けのプロジェクトで、PRINTF関数を使って浮動小数点の値を出力したところ何も出力されません。
浮動小数点の値を出力する方法を教えてください。
カテゴリー : 

回答

MCUXpresso IDE/SDKでは、大きく分けて3種類のPRINTF関数があり、浮動小数点を扱うための設定はそれぞれ異なります。MCUXpresso IDEの既存のプロジェクトを下記のように変更してください。

MCUXpresso IDEの画面の左上にあるProject Explorerビューで設定したいプロジェクトを選択し、左下のQuickstart PanelビューのEdit project settingsをクリックして開き、プロジェクトのプロパティ画面から設定できます。
 
○プリプロセッサの設定:プロパティ画面の左側のメニューよりC/C++ Buildの中にあるSettingsをクリックし、右側の画面でTool Settingsのタブを開きます。このタブの中のMCU C Compilerの中のPreprocessorを開き、Defined symbolesで定義を行います
 

○ライブラリの設定:プロパティ画面の左側のメニューよりC/C++ Buildの中にあるSettingsをクリックし、右側の画面でToolSettingsのタブを開きます。このタブの中のMCU Linkerの中のManaged Linker Scriptを開き、Libraryのプルダウンメニューで設定します
 
 
■SDKのライブラリ (\utilities\fsl_debug_console.c)の場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=1・・・SDKのライブラリを使うことを指定
PRINTF_FLOAT_ENABLE=1 ・・・浮動小数点を有効にする
 
 
■RedLib系ライブラリの場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=0 ・・・SDKのライブラリを使わないことを指定
SDK_DEBUGCONSOLE_UARTを追加・・・SDKのライブラリ以外ではUARTに出力させるために必要
CR_INTEGER_PRINTFを削除 ・・・浮動小数点を有効にする
(PRINTF_FLOAT_ENABLEはSDKのライブラリ用なので未使用)
 
○ライブラリの設定:
下記いずれかのライブラリを選択
- RedLib (nohost)
- RedLib (nohost-nf)
- RedLib (semihost)
- RedLib (semihost-nf)
- RedLib (semihost-mb)
- RedLib (semihost-mb-nf)
※RedLib (none)は使用できません
※RedLibのsemihost系のライブラリを選択し、かつ、SDK_DEBUGCONSOLE_UARTを定義した場合、UARTに出力されsemihostに出力できない点が、NewLib系と動作が異なるので注意してください
 
 
■NewLib系の場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=0 ・・・SDKのライブラリを使わないことを指定
SDK_DEBUGCONSOLE_UART ・・・SDKのライブラリ以外ではUARTに出力させるために必要。semihostのライブラリを使う場合は設定不要
(CR_INTEGER_PRINTFはRedLib向けの設定でNewLib系では未使用のため、あってもなくても良い)
 
○ライブラリの設定:
下記いずれかのライブラリを選択
- NewLibNano (nohost)
- NewLibNano (semihost)
- NewLib (nohost)
- NewLib (semihost)
NewLibNano系を選択した場合、すぐ下にあるEnable printf floatにチェックを入れる
※NewLibNano (none)、NewLib (None)は使用できません
※NewLib系のsemihost系のライブラリを選択し、かつ、SDK_DEBUGCONSOLE_UARTを定義した場合でも、semihostに出力されます。(RedLib系と動作が異なるので注意)
 
参照
MCUXpresso IDEのインストール先(C:\nxp\MCUXpressoIDE_24.9.25など)のMCUXpresso_IDE_24.9_User_Guide.pdf 
- 205ページ:19.5 Use of printf