先说解决办法:
在任务堆栈定义前增加__align(8),使其8字节对齐。
__align(8) static OS_STK AppTaskStartStk[APP_TASK_START_STK_SIZE];
再说遇到的实际问题:
使用C库函数重映射到串口输出浮点数据打印异常,整型数据则没问题。函数如下:
实际输出结果:
原因分析:
将上述打印函数放在ucos系统任务前调用,则没问题。初步判定问题出在ucos系统上,后经多方查证,确认需要对ucos系统任务的堆栈函数进行8字节对齐处理。
可参看如下文章: