我在获取 NewLib 库提供的“vfprintf”时遇到问题,该库在基于 NXP K64 ARM Cortext-M4 处理器上运行的 FreeRTOS 的多任务环境中工作。
代码使用 arm gcc 编译器编译。
FreeRTOS 配置为启用 configUSE_NEWLIB_REENTRANT 开关。
我已经提供了 _write_r 系统调用,因此最终数据将被传递到 MCU 的 UART 之一。
访问“fp->_p”时会在 __sfvwrite_r 中触发硬故障异常。在这种情况下, fp 是默认分配给 xNewLib_reent.__sf[2] 的标准错误。
xNewLib_reent.__sf[2]._p 指针的默认值为 NULL,并且未分配到其他任何地方。
任何有关这方面的建议都将受到高度赞赏。
更新:在硬故障 ISR 中,我从堆栈框架中提取 PC,并通过检查我的调试器(即 Eclipse CDT 独立调试器)中的程序集视图,我可以看到它在取消引用 _p 指针时崩溃。