这次介绍下NRF的调试工具,我们在编程中,总是不可避免的会出现各种各养的Bug,这就需要调试工具,帮助我们一步一步的找到问题的所在。
通常如果插上调试器且使用IDE的时候,可以使用IDE的变量查看功能,例如IAR的watch和live watch,前者可以查看局部和全局变量,后者可以实时查看全局变量。但是如果没有接仿真没使用IAR,那么通常的办法就是使用串口调试了,在关键代码或者在出问题处打印出关键信息。NRF的SDK有非常的完善的UART与RTT调试的功能。
RTT(Real-Time Transfer)并不是NRF提出来的,是制作Jlink的SEGGER公司弄出来的,这家公司还有很多黑科技,比如有自己的IDE,有J-Scope查看波形软件等等的。RTT详细介绍见官网介绍。
RTT是通过J-link SW接口将CPU与电脑进行连接,最高可达到1M/s的传输速度。
RTT可以通过不同通道,不同颜色的显示信息,具备收发功能。
为了更加方便的介绍UART与RTT调试功能,这里使用SDK温度例程做介绍,位置:nRF5_SDK_15.3.0_59ac345\examples\peripheral\temperature,官方信息中心对例程的介绍。该例程每秒读取两次芯片温度数据,然后通过UART发送出来,通过UART发送的演示如下:
这是使用UART输出的调试结果,每秒输出两次温度,也是以前常用的调试方法。
下面教大家使用RTT来输出调试信息,在温度的例程中,只需要修改一个数字即可。
1. 打开工程,打开sdk_config.h文件。
2. 找到NRF_LOG_BACKEND_RTT_ENABLED宏定义,将后面的0改为1。
3. 如果要关闭UART调试输出,找到NRF_LOG_BACKEND_UART_ENABLED宏定义,改为0。
就是这么简单!找一个新一点版本的Jlink驱动安装,会默认安装RTT Viewer的,在开始中找到改软件打开后弹出如下界面,然后选择芯片型号如下,然后OK。
然后运行程序,在RTT Viewer中可以看到和串口调试一样的调试信息。
在代码中主要是如下代码输出调试信息:
NRF_LOG_INFO("Actual temperature: %d", (int)temp);
该输出还有很多变种,可以输出error,warning,debug等等的,形式上和printf很像。
使用RTT调试会方便很多,大家使用开心。


-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖