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

[复制链接]
 楼主| 6552918 发表于 2022-11-9 17:34 | 显示全部楼层 |阅读模式
本帖最后由 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管脚定义
5e7080c6290d4aa14e51fe67e5261458
首先看看一下用户手册了对调试功能能描述,从调试接口的管脚定义上看应该是支持SWO功能的,SWO需要使用PB3引脚。
94ca1397dade05cf87f775439dfbe82c
8e4986c10ad3726db3a5fdb0ec66c029
但在调试寄存器描述中却没有看到和 SWO调试相关的描述,我给我搞的有点懵,难道厂家把相关功能裁剪掉了吗?这个功能是内核功能,应该不会被裁剪掉才对,现在只能自己试试看了
5b76166dfa9267d52cedd630275db078
我按照之前使用的方法在例程中配置了相关设置,编写了测试代码。
在使用SWO功能前,需要将调试接口改为仅SWD使能,JTAG关闭模式
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE);
9cb660ade5e79074d8c9b58b0fcebc49
使用SWO接收功能需要定义volatile int32_t ITM_RxBuffer = ITM_RXBUFFER_EMPTY;
ITM_SendChar('2'); SWO发送字符2
ITM_CheckChar();检查是够收到数据
ITM_ReceiveChar();读取数据
15ffb1776407cbf757a57cc043b92fd5
SWO相关函数在core_cm4.h内
0e47664b407ecb712552b22274ba6b91
a4d16937c17871e6f3cc8d8e5ee7fdc3
d6b2cc7465fa4637370f8575eb986414
SWO输出只能在SW模式下
604a05900835dcf721bc936becd407a4
在Trace页面,需要勾选Enable,并设置Croe Clock时钟和芯片内核时钟一致,这里芯片内核时钟为144M,所以设置Croe Clock为144M
2808728138e724668db68acb935c2b5f
这里有个地方要说明一下
DBG->CTRL&=0xffdf;
DBG->CTRL|=0x0020;
这里实际是使能TRACE_IOEN,并配置调试模式。但由于MDK有问题,有时并不能很好的开启相关功能,所以采用操作寄存器方式开启TRACE_IOEN。
6f3d1ddacc8b0c57dbf40e1823cf8c11
在其他芯片的用户手册中找到的相关说明
410306ca9991d38e95fbd2d36ceedf00
5c53e546f8a5127785b73673e85632f0
配置完后进入调试模式
8013caa43d92cb1f76f0dbaf91a3b0d8
在Debug (print) Viewer窗口内查看SWO输出情况,程序运行后并没有看到字符2,而且在窗口内输入字符后,在串口输出打印上能看到在窗口输入的字符,但收不到SWO发送的数据。从现象上看,数据接收是正常的,但SWO输出没有。
1db7906626ff85eac2905041514c3436
因为之前在其他芯片上使用过SWO就是这么配置的,流程上肯定是没错的,出现这种情况,现在怀疑有2种可能,1是JLINK有问题,不支持这个功能(用JLINK的SWO我还真没试过);2芯片被裁剪,不支持SWO输出。
为了排除这些问题,我换上了之前验证过SWO功能的板子,配置如下
7c2e743bb7c0a54a414d7e15d13aad45
运行效果如下,调试代码是一样的,调试窗口能够收到数据,但数据是乱码,说明SWO是支持的,可能是其他哪里设置不对了
be05bd3dcc0a27cbef73227288050bba
进入设置页面,怀疑是SWO时钟太快导致的,于是重新修改参数如下
4b3b41d3707e1c86684031b1f75cf333
重新进入调试模式,发现这回数据都对了,就是时钟问题导致的
1410e3d0d8b0f68094710db5cf6ded6b
重新回到N32G45X板上,修改配置如下
a062b7c3221b6d53b996476d3cefbb38
这回SWO的收发都正常了
fa999db87c7a32d5fe4ee6a4ff063b73
但还需要确认一下N32G45X在JLINK下SWO支持的最快时钟,经过测试发现,SWO的最快时钟只能到3M,再高JLINK的SWO就不能正常发送数据了 ,这里一定要注意!!!
16249f9778b2aa5b1299d1d9ca9412d6
接下来使用J-LINK SWO Viewer,进行SWO接收测试,在SEEGER目录下,找到J-LINK SWO Viewer工具打开。
ee157eefc947461b56a9085008d40c2f
配置芯片型号和时钟参数,时钟参数一定要和MDK中Trace页面配置的一致才行
f9444109592a16acb10b65da018d200b
这里可以正确显示芯片通过SWO发送的数据,由于J-LINK SWO Viewer只能接收数据,不能发送数据,所以,使用J-LINK SWO Viewer时只能作为输出信息的查看。
bf8f36b9eb66a0d4bf176513ff67ba8f
到此,N32G45X下JLINK的SWO功能就测试完了,希望对用到的人会有帮助。
源码: Nationstech.N32G45x_Library.2.1.0.zip (3.7 MB, 下载次数: 20)
应用笔记:

视频地址:



J-Link SWO Viewer应用笔记.pdf

1.19 MB, 下载次数: 20

klbyf 发表于 2024-4-15 16:54 | 显示全部楼层
非常好!!!!!!!!
慢醇 发表于 2024-8-31 19:57 | 显示全部楼层
只能接收数据,不能发送数据

 楼主| 6552918 发表于 2024-9-1 10:55 | 显示全部楼层
慢醇 发表于 2024-8-31 19:57
只能接收数据,不能发送数据

可以发送数据
八月的雨 发表于 2025-3-3 09:31 | 显示全部楼层
感谢分享。记录下N32G43x和L40x系列MCU的配置。因为GPIO配置方式不一样。GPIO的模式要配置成推挽输出(OUT_PP)才可以,不可以配置成复用输出(AF_PP)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

102

主题

1289

帖子

10

粉丝
快速回复 返回顶部 返回列表