应用场景
芯片串口不够用的情况下,可以通过JLINK从SWD接口实现打印调试LOG.
准备工作
准备JLINK仿真器或者JLINK OB仿真器,链接目标硬件。
载JLink RTT软件包,一定要到官网下载最新版本。下面是下载页面地址。
https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/
下载后安装包如下图,当前最新版本为V648。
源码移植
双击安装Jlink_Windows_V648.exe, 安装完毕后,在其安装路径下找到RTT文件夹,文件夹内即为RTT芯片源码。如图
拷贝RTT文件夹至芯片程序工程目录,这里我们为OBD车联网开发板添加RTT功能。如图
用MDK打开工程,在工程目录下添加RTT源码。如图
添加RTT文件夹到编译器头文件路径。如图
添加完毕即可开始编程。编程所用的API函数可参阅官方文件UM08001
官方下载页面地址
https://www.segger.com/downloads/jlink
例子程序
通常我们打印LOG只需要一个输出函数即可,为了简单起见,这里只介绍三个函数完成我们的目的,三个函数功能如下图所示。更多函数详解请参阅UM08001文件。
演示程序用户键盘输入字母g, 则芯片输出Hello Word.下面是示例程序片段
定义RTT头文件。
使用功能函数前,先调用SEGGER_RTT_Init()函数。SEGGER_RTT_GetKey()判断键盘输入值。SEGGER_RTT_printf() 向PC输出内容。和printf类似。数值型可以进行格式控制输出。通常做调试LOG 我们只需要利用函数SEGGER_RTT_Init()和SEGGER_RTT_printf() 即可。
效果演示
开始菜单打开J-Link RTT Viewer.
输入字母g,接收到来自芯片的Hello Word响应。
随着串口模块的越来越丰富,芯片中的串口资源开始变得稀缺,在调试程序过程中能用调试接口则尽量用调试接口,腾出更多的串口去实现更多的功能。更多内容请关注Neulen工作室微信公众号。