GD32E230 printf 之 J-LINK RTT Viewer

2018年11月1日,业界领先的半导体供应商兆易创新(GigaDevice)正式推出主频高达72MHz的GD32E230系列超值型微控制器新品,并宣布开启Arm® Cortex®-M23内核普及应用的全新世代。详细介绍请看兆易创新官网,相关官方资料点击下载

声明:本人非GD官方人员,只是众多嵌入式软件开发者的一员,把自己开发调试的过程,用笔记的形式记录。


目录

前言

添加 printf 的相关源码

配置 J-LINK RTT Viewer 工具

结语


前言


在我刚开始工作的时候,第一次接触到公司产品级的代码,我发现里面有很多 printf  的代码,那个时候一直有个疑问,用调试器在 IDE 里面打断点调试不是很方便吗?各种寄存器看得一清二楚,要什么 printf  ??我相信肯定有很多也我一样的小白也有同样的疑问。直到有一次,产测的时候出现了问题,我才改变了这种看法:公司开发中的产品经过 5 天的煲机,出现了问题,确认硬件没有问题后,问题就丢到了软件这边,棘手的来了,我们总不能接上调试器去打断点,去看寄存器吧??很明显这些都不现实,因为你一旦断电重启产品,这个问题就暂时测不出来了,这个时候你就会发现 printf  存在的好处了,在关键的地方加上 printf  ,可以帮助我们跟踪和查找问题。

其实 printf 说到底就是我们在 MCU 运行时留下的日志,也就是所谓的 Log 组件,在使用 MCU 开发的时候,一个成熟的软件框架,不管是裸机还是 RTOS ,Log 组件都显得举足轻重。特别是 RTOS 之后,你就会对 printf  有更深刻的理解,有兴趣的可以看一下 RT-Thread 的 BSP 源码你就会发现,它有非常成熟的 Log 工具,甚至还有 shell 组件,这里就不详细展开了,我们只是简简单单的使用裸机加个 printf  。

大家熟悉的 printf  很多都是串口实现的,这里就不详细讲了,大家都会,今天讲一下使用 J-LINK RTT Viewer 去实现 printf  ,只需一个 J-LINK 工具通过 SWD 接口就可以实现 printf  ,J-LINK RTT Viewer 是 SEGGER 公司开发的实时传输(RTT)是一种在嵌入式应用中实现交互式用户I/O的技术,详细的介绍请点击 SEGGER 关于 J-LINK RTT Viewer 的介绍


添加 printf 的相关源码


准备工作:J-LINK V9 版或以上; MDK 525 以上; J-LINK 驱动要有 J-LINK RTT Viewer。

1.   找到 SEGGER 关于 J-LINK RTT Viewer 的使用 demo 源码,一般是 J-LINK 的安装目录下,如下图,然后把 RTT 文件夹复制出来,放到我们的工程目录。


GD32E230 printf 之 J-LINK RTT Viewer


2.  把 RTT 文件夹里面的文件加到我们的工程里面,include 也搞一下。


GD32E230 printf 之 J-LINK RTT Viewer

GD32E230 printf 之 J-LINK RTT Viewer


3. 添加头文件:#include "SEGGER_RTT.h"


GD32E230 printf 之 J-LINK RTT Viewer

 


4. 在代码里面调用 SEGGER_RTT_printf 函数打印输出,入参至于为什么有个 0,建议看一下原函数,代码注释写的很清楚,之后编译成功,源码添加就搞定了,下载工程,我们看看效果。


GD32E230 printf 之 J-LINK RTT Viewer


配置 J-LINK RTT Viewer 工具


1. 打开 J-LINK RTT Viewer 工具


GD32E230 printf 之 J-LINK RTT Viewer


2.  配置 Specify Target Device


GD32E230 printf 之 J-LINK RTT Viewer


3. 竟然找不到GD32E230系列,GD官方是不是忘记充钱了??


GD32E230 printf 之 J-LINK RTT Viewer


4. 那就选择通用的 M23 系列吧


GD32E230 printf 之 J-LINK RTT Viewer


5. 配置 RTT Control Block 地址


GD32E230 printf 之 J-LINK RTT Viewer


6. 配置成功,连接成功


GD32E230 printf 之 J-LINK RTT Viewer

 


7. 顺利看到 printf 的输出,搞定!!


GD32E230 printf 之 J-LINK RTT Viewer

 


在配置 Specify Target Device,找不到 GD32E230C8 ,后来想了一下既然 GD32E230C8 可以 PIN 对 PIN 替换STM32F030C8,而且功能和 MCU 的配置也基本一致,最重要的是 M23 兼容 M0/M0+, 我就在想选择 Specify Target Device 的时候,能否直接选 STM32F030C8,事实证明,我们依然可以看到我们熟悉的 Hello World!!

GD32E230 printf 之 J-LINK RTT Viewer


结语

用 J-LINK 工具来开发调试确实很不错,J-LINK 还有很多这类配套的使用工具,大家感兴趣的话可以去详细了解一下 ,另外 J-LINK RTT Viewer 里面有很多强大的用法 ,很多大神也玩出了很多花样。

 讲一下自己为什么选择 J-LINK RTT Viewer,原因很简单,可以少用一个串口,少用一个串口转换工具,少接线,一个 J-LINK 工具用 SWD 口全部搞定,但 J-LINK RTT Viewer 界面没有我们使用的串口工具友好,而且到现在我还不知道如何暂停 printf  的显示,有知道的大神欢迎评论留言交流。

几篇博客下来,我这边已经把开发之前的准备工作做完了,后面将结合公司的产品进行开发,这里不是教程系列,也不会像教程那样一一详细的介绍各个外设功能的使用,我只是调试到哪里,就把调试的心得记录下来,接下来我会先从试定时器的调试开始,直到完成整个产品的需求,下篇将分享调试定时器的心路历程。


原创不易,禁商用,可转载,但记得通知我一声!说实话,码字真的很费时间啊!!


上一篇:osgEarth使用笔记1——显示一个数字地球


下一篇:Ubuntu系统pangolin与libtorch所引发的连接错误