一、安装J-LINK驱动
1.到J-Link官网下载驱动,版本可以最新,但旧版本最好超过6.4。我这用的7.80b版本
2.安装进入到J-Link目录下,小白鼠就好好记得我这2个框文件
在..\SEGGER\JLink\Samples\RTT
目录下拿出4个必需的驱动文件,(1)Config/SEGGER_RTT_Conf.h
(2).\RTT SEGGER_RTT.c
SEGGER_RTT.h
SEGGER_RTT_printf.c
二、配置Keil5环境
1.把上面的文件夹下的文件都复制到你的工程目录下,如下图
2.在所使用的文件下添加头文件#include "SEGGER_RTT.h"
并把相关文件添加进工程目录下,如下图
3.无需初始化添加#include "SEGGER_RTT.h"
直接使用SEGGER_RTT_printf(0,"\r\nhello world");
4.编译工程 会发现在RTT驱动文件那报错,跳到该错误下,把头文件的…/…/删掉 留下有用的.h,这里不上图片了,编译通过,然后进行烧录。
三、使用 JLinkRTTViewer.exe(可以直接看目录 四)
结果输出了J-Link连接的信息 没输出调试信息
四、分析驱动 分析原理
看着它的驱动代码,发现它认识我,我不认识它,C语言指针没好好学,惨。凡事总有办法的
上Dbug吧
在SEGGER_RTT_printf那下断点往下跟,来到下图的地方
va_start和SEGGER_RTT_SetTerminal是在内存上面开辟buf的,SEGGER_RTT_vprintf是模仿C的printf输出类型处理并输到buf中
认真分析SEGGER_RTT_SetTerminal 这一条是定义buf的
跳呀跳就找到了这个buf
刚好是我刚说的0-15通道,每个通道都是一个uchar,到此知道打印工具代码块
填的地址了
我的代码块地址是**0X1FFF8020
重新填进JLinkRTTViewer.exe
本文教程以及踩坑到此结束END
***下面拓展一下
Specify Target Device 随便选
**重要的是代码块地址(0X1FFF8020)
这是我的,你的Address自己去Dbug
附加 **_SEGGER_RTT** 自己看地址
还需要注意MCU RAM大小,如果RAM空间不够,也是不能打印信息的
填对代码块地址 通杀所以SWD的芯片,终于可以原理串狗(串口)这坑货了,省事了