调试 mcu 的时候,使用 jlink 的 rtt 可以方便的输出信息。
输出有两种模式, client 和 logger。 client 必须依附其他程序,比如说 mdk 调试状态,或者 logger 程序。
logger 可以不依附其他程序,但是 rtt 默认的代码只支持 client 的通道 0,想要使用 logger,需要修改代码,具体如下:
static SEGGER_RTT_CB _SEGGER_RTT = {
"SEGGER RTT",
SEGGER_RTT_MAX_NUM_UP_BUFFERS,
SEGGER_RTT_MAX_NUM_DOWN_BUFFERS,
{{ "Terminal", &_acUpBuffer[0], BUFFER_SIZE_UP, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
{ "Log", &_acUpBuffer1[0], BUFFER_SIZE_UP, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
{{ "Terminal", &_acDownBuffer[0], BUFFER_SIZE_DOWN, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
{ "Log", &_acDownBuffer1[0], BUFFER_SIZE_DOWN, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
};
这段代码是给予 4.90e 的 rtt 代码,增加了一个通道,在调用 rtt 的时候,通道写 1 即可通过 logger 来输出了。