SeggerRTT可使用JLink代替串口调试输出功能使用,如果因为电路设计,及资源运用问题,导致不能提供串口接口的话,使用SeggerRTT作为实际的调试输出接口是非常适合使用的。 注:建议尽量预留串口,此方案提示不稳定,容易崩溃。 |
一、添加软件包
新建标准RT-Thread项目,控制台串口先默认UART1,调试器选择Jlink; |
搜索RTT软件包并添加 (若想打印浮点型数据,即输出f%,需再添加rt_vsnprintf软件包,添加该软件包大概增加8Kb字节的存储空间): |
二、打开SEGGER RTT功能
![]() |
打开rt_kprintf控制台,修改控制台名称为jlinkRtt: |
配置修改完成之后,点击保存或者按快捷键Ctrl+S,系统会自动保存并配置好; |
手动修改代码: 修改board.c文件,一是初始化jlink_rtt,二是设置console设备,初始化jlink_rtt先extern引用外部函数,然后直接调用,设置console设备需要在component组件初始化之后: extern void rt_hw_jlink_rtt_init(void); RT_WEAK void rt_hw_board_init() { extern void hw_board_init(char *clock_src, int32_t clock_src_freq, int32_t clock_target_freq); /* Heap initialization */ #if defined(RT_USING_HEAP) rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END); #endif hw_board_init(BSP_CLOCK_SOURCE, BSP_CLOCK_SOURCE_FREQ_MHZ, BSP_CLOCK_SYSTEM_FREQ_MHZ); rt_hw_jlink_rtt_init(); /* Board underlying hardware initialization */ #ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif /* Set the shell console output device */ #if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE) rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif } |
三、控制台功能
安装JLink_Windows_V644e.exe后,开始菜单->SEGGER - J-Link V6.44e->J-Link RTT Viewer V6.44e (先设置Input->Sending->Send on Enter,输入命令后按enter键发送) |