调试 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 来输出了。

标签: segger, debug

添加新评论