NXP K64 ARM Cortext-M4 プロセッサで実行されている FreeRTOS に基づくマルチタスク環境で動作する NewLib ライブラリによって提供される「vfprintf」を取得する際に問題が発生しています。
コードは arm gcc コンパイラを使用してコンパイルされます。
FreeRTOS は、configUSE_NEWLIB_REENTRANT スイッチが有効になるように構成されています。
_write_r システム コールを提供したので、最終的にデータは MCU の UART の 1 つに渡されます。
「fp->_p」にアクセスすると、__sfvwrite_r でハードフォールト例外がトリガーされます。この場合、fp はデフォルトで xNewLib_reent.__sf[2] に割り当てられる stderr です。
xNewLib_reent.__sf[2]._p ポインターのデフォルト値は NULL であり、他の場所には割り当てられません。
この点に関するアドバイスは大歓迎です。
更新: ハード フォールト ISR で、スタック フレームから PC を抽出し、デバッガー (つまり、Eclipse CDT スタンドアロン デバッガー) でアセンブリ ビューを確認すると、_p ポインターを逆参照するときにクラッシュしていることがわかります。