2018年11月1日,业界领先的半导体供应商兆易创新(GigaDevice)正式推出主频高达72MHz的GD32E230系列超值型微控制器新品,并宣布开启Arm® Cortex®-M23内核普及应用的全新世代。详细介绍请看兆易创新官网,相关官方资料点击下载。
声明:本人非GD官方人员,只是众多嵌入式软件开发者的一员,把自己开发调试的过程,用笔记的形式记录。
目录
前言
在我刚开始工作的时候,第一次接触到公司产品级的代码,我发现里面有很多 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 文件夹复制出来,放到我们的工程目录。
2. 把 RTT 文件夹里面的文件加到我们的工程里面,include 也搞一下。
3. 添加头文件:#include "SEGGER_RTT.h"
4. 在代码里面调用 SEGGER_RTT_printf 函数打印输出,入参至于为什么有个 0,建议看一下原函数,代码注释写的很清楚,之后编译成功,源码添加就搞定了,下载工程,我们看看效果。
配置 J-LINK RTT Viewer 工具
1. 打开 J-LINK RTT Viewer 工具
2. 配置 Specify Target Device
3. 竟然找不到GD32E230系列,GD官方是不是忘记充钱了??
4. 那就选择通用的 M23 系列吧
5. 配置 RTT Control Block 地址
6. 配置成功,连接成功
7. 顺利看到 printf 的输出,搞定!!
在配置 Specify Target Device,找不到 GD32E230C8 ,后来想了一下既然 GD32E230C8 可以 PIN 对 PIN 替换STM32F030C8,而且功能和 MCU 的配置也基本一致,最重要的是 M23 兼容 M0/M0+, 我就在想选择 Specify Target Device 的时候,能否直接选 STM32F030C8,事实证明,我们依然可以看到我们熟悉的 Hello World!!
结语
用 J-LINK 工具来开发调试确实很不错,J-LINK 还有很多这类配套的使用工具,大家感兴趣的话可以去详细了解一下 ,另外 J-LINK RTT Viewer 里面有很多强大的用法 ,很多大神也玩出了很多花样。
讲一下自己为什么选择 J-LINK RTT Viewer,原因很简单,可以少用一个串口,少用一个串口转换工具,少接线,一个 J-LINK 工具用 SWD 口全部搞定,但 J-LINK RTT Viewer 界面没有我们使用的串口工具友好,而且到现在我还不知道如何暂停 printf 的显示,有知道的大神欢迎评论留言交流。
几篇博客下来,我这边已经把开发之前的准备工作做完了,后面将结合公司的产品进行开发,这里不是教程系列,也不会像教程那样一一详细的介绍各个外设功能的使用,我只是调试到哪里,就把调试的心得记录下来,接下来我会先从试定时器的调试开始,直到完成整个产品的需求,下篇将分享调试定时器的心路历程。
原创不易,禁商用,可转载,但记得通知我一声!说实话,码字真的很费时间啊!!