STM32CubeIDE + FreeRTOS 在多线程环境下调用 newlib nano 的 sprintf("%f") 时崩溃。 任何 strtok、sprintf 及其他 malloc 调用都会崩溃。此外,在中断服务程序(ISR)中使用 USB-LL 的 malloc 调用也不稳定。 即使启用 newlib 的可重入(reentrant)支持也无济于事。 尝试了 http://www.nadler.com/embedded/newlibAndFreeRTOS.html 的 nadler 解决方案,但未能奏效。 GitHub 上的解决方案 https://github.com/DRNadler/FreeRTOS_helpers 同样无效。 newlib 的实现与 ST 的堆管理器会导致 HardFault。 只有 C/C++ 的标准库(StdLib)能稳定运行,但会显著增加代码体积和内存占用。 有方法解决这个问题吗?
|