浮点打印
官方的 RT-Thread (后面简称 RTT )不支持浮点打印,毕竟相当一部分 MCU 甚至连浮点指令都不支持,如果在调试过程中需要用到浮点打印,可以通过如下步骤实现:
Step1: 把 libc 从nano版本切换到标准版本:
# 修改 BSP 主目录下的 rtconfig.py,例如:bsp/rockchip/rk2108/rtconfig.py
# 删掉 LFLAGS 中 ‘--specs=nano.specs’ 的标志,具体如下:
# LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' --specs=nano.specs -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler '
LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler '
Step2: 用 sprintf 函数把浮点输出到字符串,再通过 rtprintf 打印:
float mem_bw;
uint32_t time_ms;
uint32_t bytes;
char buf[16];
mem_bw = ((bytes * 1.0) / time_ms) * 1000;
sprintf(buf, "%.4f", mem_bw);
rtprintf("memory bandwidth: %s\n", buf);
64位长整型打印
官方的 RTT 支持64位的长整型打印,不过这个功能默认没有打开,可以通过如下方式启用:
/* 修改 /path/to/rt-thread/src/kservice.c,在头部添加如下宏定义 */
#define RT_PRINTF_LONGLONG