調試 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 來輸出了。