打印
[活动专区]

【开源代码】-基于国民N32G45x系列MCU使用JLINK的SWO Viewer 组件工具

[复制链接]
863|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 sy12138 于 2022-11-29 14:16 编辑

#申请原创# #技术资源#
@21小跑堂 @安小芯
测试条件
IDE
硬件
软件
其他
MDK 5.37
N32G457XVL-STB V1.1J-LINK V9
SEGGER-J-LINK V7.54d
 
以前在其他芯片上使用过SWO功能,使用起来还是比较简单的,但在N32G4XX上使用SWO功能还真是有点波折。
先看一下JLINK管脚定义

首先看看一下用户手册了对调试功能能描述,从调试接口的管脚定义上看应该是支持SWO功能的,SWO需要使用PB3引脚。


但在调试寄存器描述中却没有看到和 SWO调试相关的描述,我给我搞的有点懵,难道厂家把相关功能裁剪掉了吗?这个功能是内核功能,应该不会被裁剪掉才对,现在只能自己试试看了

我按照之前使用的方法在例程中配置了相关设置,编写了测试代码。
在使用SWO功能前,需要将调试接口改为仅SWD使能,JTAG关闭模式
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE);

使用SWO接收功能需要定义volatile int32_t ITM_RxBuffer = ITM_RXBUFFER_EMPTY;
ITM_SendChar('2'); SWO发送字符2
ITM_CheckChar();检查是够收到数据
ITM_ReceiveChar();读取数据

SWO相关函数在core_cm4.h内



SWO输出只能在SW模式下

在Trace页面,需要勾选Enable,并设置Croe Clock时钟和芯片内核时钟一致,这里芯片内核时钟为144M,所以设置Croe Clock为144M

这里有个地方要说明一下
DBG->CTRL&=0xffdf;
DBG->CTRL|=0x0020;
这里实际是使能TRACE_IOEN,并配置调试模式。但由于MDK有问题,有时并不能很好的开启相关功能,所以采用操作寄存器方式开启TRACE_IOEN。

在其他芯片的用户手册中找到的相关说明


配置完后进入调试模式

在Debug (print) Viewer窗口内查看SWO输出情况,程序运行后并没有看到字符2,而且在窗口内输入字符后,在串口输出打印上能看到在窗口输入的字符,但收不到SWO发送的数据。从现象上看,数据接收是正常的,但SWO输出没有。

因为之前在其他芯片上使用过SWO就是这么配置的,流程上肯定是没错的,出现这种情况,现在怀疑有2种可能,1是JLINK有问题,不支持这个功能(用JLINK的SWO我还真没试过);2芯片被裁剪,不支持SWO输出。
为了排除这些问题,我换上了之前验证过SWO功能的板子,配置如下

运行效果如下,调试代码是一样的,调试窗口能够收到数据,但数据是乱码,说明SWO是支持的,可能是其他哪里设置不对了

进入设置页面,怀疑是SWO时钟太快导致的,于是重新修改参数如下

重新进入调试模式,发现这回数据都对了,就是时钟问题导致的

重新回到N32G45X板上,修改配置如下

这回SWO的收发都正常了

但还需要确认一下N32G45X在JLINK下SWO支持的最快时钟,经过测试发现,SWO的最快时钟只能到3M,再高JLINK的SWO就不能正常发送数据了 ,这里一定要注意!!!

接下来使用J-LINK SWO Viewer,进行SWO接收测试,在SEEGER目录下,找到J-LINK SWO Viewer工具打开。

配置芯片型号和时钟参数,时钟参数一定要和MDK中Trace页面配置的一致才行

这里可以正确显示芯片通过SWO发送的数据,由于J-LINK SWO Viewer只能接收数据,不能发送数据,所以,使用J-LINK SWO Viewer时只能作为输出信息的查看。

到此,N32G45X下JLINK的SWO功能就测试完了,希望对用到的人会有帮助。
源码: Nationstech.N32G45x_Library.2.1.0.zip (3.7 MB)
应用笔记:

视频地址:



J-Link SWO Viewer应用笔记.pdf

1.19 MB

使用特权

评论回复
沙发
klbyf| | 2024-4-15 16:54 | 只看该作者
非常好!!!!!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

100

主题

1184

帖子

5

粉丝