APP下载

浅谈ST-LINK调试器的时间线调试技巧

2017-09-03夏传东

单片机与嵌入式系统应用 2017年8期
关键词:液晶屏中断调试

夏传东

(英格索兰亚太工程技术中心,上海200051)

浅谈ST-LINK调试器的时间线调试技巧

夏传东

(英格索兰亚太工程技术中心,上海200051)

介绍了使用ST-LINK调试器调试STM32系列单片机的时间线功能及在EWARM集成开发环境中的参数设置技巧,以及一个在直流无刷电机控制系统中定位与时间相关的软件问题的应用实例。实验结果表明,ST-LINK系列调试器以低廉的价格,提供了强大的调试功能,可以快速定位软件的问题,提高软件开发的效率与质量。

STM32;ST-LINK;时间线;调试器

引 言

在一个复杂控制系统的软件开发过程中,代码调试是其中的关键一环,一个功能强大、易学易用的调试器可以提高代码调试的效率,收到事半功倍的效果。

STM32系列是意法半导体公司推出的基于ARM Cortex-M内核的32位单片机,具有强大的功能,一般可以使用Segger公司的JLINK系列调试器用于开发工作,但其价格较贵。为此,意法半导体公司推出了ST-LINK系列在线调试器/编程器,价格十分低廉,且支持的调试功能并不比JLINK逊色,而且,若干STM32系列单片机的开发板(例如:STM32072B-EVAL、STM3220G-EVAL、STM32303E-EVAL等)均内置ST-LINK/V2调试器,大大地方便了软件开发工作。

笔者参与某项目的一款直流无刷电机控制板设计工作,使用了一个STM32F407单片机, 本文结合其调试工作,介绍ST-LINK调试器调试STM32单片机时间线(Timeline)的技巧。

1 ST-LINK调试器的时间线功能简介

ST-LINK调试器配合IAR公司开发的EWARM集成开发环境使用时, 可以在时间线窗口显示数据记录图(Data Log Graph)和中断记录图(Interrupt Log Graph)。具体详细介绍可以查看参考文献[4]的第2部分“分析你的应用程序—跟踪”。与早期的仿真器/调试器相比,借助这两张图,软件开发者就可以在程序全速运行时以图形方式非常直观地观察指定数据的变化情况、中断的发生及持续时间,大大地方便了软件调试工作。

2 ST-LINK调试器的时间线功能设置

在EWARM集成开发环境中选择Project>>Options…,打开项目设置对话框,在Debugger类的Setup页中,从Driver下拉框中选择“ST-LINK”。

然后在ST-LINK类的Interfaces单选框中选择SWD,CPU clock文本框中填入CPU 时钟频率,SWO clock复选框中选择Auto。请注意CPU 时钟频率值务必填写准确,否则会造成时间线窗口的时间坐标值不准确。

对项目文件进行编译,无错误后在EWARM集成开发环境中选择Project>>Download and Debug,即启动ST-LINK调试器。选择ST-LINK>>SWO Configuration…,打开SWO配置对话框,从Rate下拉框中选择“11718”,从Data Log Events单选框中选择“PC + data value + base addr”,如图1所示。请注意Rate值不宜设置的太大,否则会数据溢出,影响时间线窗口的正常显示。

图1 SWO配置

选择ST-LINK>>SWOTrace Window Settings…,打开SWO跟踪窗口设置对话框,取消所有复选项,如图2所示。

图2 SWO跟踪窗口设置

选择ST-LINK>>Timeline,即出现空白的时间线窗口。

3 利用时间线功能调试单片机程序的实例

某直流无刷电机控制程序使用STM32F407单片机内置的SysTick定时器作为任务调度以及所有软件延时的时间基准,其频率设置为2 000 Hz;同时设置液晶屏显示的刷新频率为10 Hz,单片机上电后对液晶屏初始化,软件延时1 s后开启显示。

在软件开发的初期阶段,发现液晶屏的显示会出现随机性的异常。为了核对液晶屏的初始化时序,使用ST-LINK调试器的时间线功能可以获得精确的时间信息,为问题的定位提供了很大的便利。

在程序中使用了一个名为LCD_welcome_message_UI_counter的变量,它被初始化为10,每100 ms减1,到0时开启液晶屏显示。为了获得这个变量随时间变化的信息,可以在EWARM集成开发环境中选择View>>Breakpoints,在Breakpoints窗口中用右键菜单选择New Breakpoint>>Data Log,在弹出的编辑断点对话框中输入此变量的信息,如图3所示。

在EWARM集成开发环境中选择Debug>>Go,程序会全速运行,与此同时,时间线窗口也会同步更新。约2 s后选择Debug>>Break,暂停程序的运行,此时时间线窗口显示如图4所示,其上部为变量LCD_welcome_message_UI_counter的动态变化图,下部为SysTick中断的动态变化图。

程序要求的SysTick中断每500 μs发生一次,将图4放大后显示如图5所示。SysTick中断的发生过程在时间轴上被连续且均匀地记录了下来,目测两次SysTick中断的间隔为500 μs,因此可以判断其行为与预期基本吻合。

图3 编辑断点

为了更准确地获得SysTick中断的时间信息,将图5放大,鼠标经过中断发生的区域时会显示每次中断发生的详细信息。第一次、第二次、第三次中断详细信息分别如图6~图8所示。第一次、第二次、第三次中断发生的时间分别为68.74 μs、568.93 μs、1068.74 μs, 第二次与第一次之间的实际时间与理论值有0.19 μs的误差,相对误差为0.038%,第三次与第一次之间的实际时间与理论值完全吻合。据此,可以认为程序对SysTick中断的设置正确,与设计要求完全吻合。

图4 程序运行后的时间线窗口

图5 SysTick中断

图6 第一次SysTick中断

图7 第二次SysTick中断

图8 第三次SysTick中断

应用同样的方法,可以获得对变量LCD_welcome_message_UI_counter执行写操作的详细时间信息,分别如图9~图12所示。第1次、第2次、第3次、第11次写操作发生的时间分别为75.81 μs、407 094.48 μs、506 030.86 μs、1 298 215.24 μs, 第1次写操作在程序初始化时将其赋值为10;定时器启动以后每100 ms操作将其值减1,直到为0。第3次与第2次之间的实际时间与理论值有-1063.62 μs的误差,相对误差为-1.063 62%;第11次与第2次之间的实际时间与理论值有-8 879.24 μs的误差,相对误差为-0.986 58%。

据此,可以认为程序通过软件延时对变量LCD_welcome_message_UI_counter的操作在时域的误差较大,因此导致液晶屏的显示出现问题。经修改相关的程序后,减小了对变量LCD_welcome_message_UI_counter的操作延时误差,将相对误差的最大值降低到0.2%,程序经过1 000次的反复测试,液晶屏的显示没有一次出现随机性的异常,可以认为软件的问题已经得到修复。

结 语

ST-LINK系列调试器以低廉的价格提供了强大的调试功能,可以快速定位软件的问题,提高软件开发的效率与质量。在实际使用ST-LINK系列调试器的时间线调试功能时,需要使用者在EWARM集成开发环境中注意以下选项的正确设置,否则会影响调试效果:CPU 时钟

图10 变量LCD_welcome_message_UI_counter第二次写操作

图11 变量LCD_welcome_message_UI_counter第三次写操作

图12 变量LCD_welcome_message_UI_counter第十一次写操作

[1] STMicroelectronics.STM32F405/415,STM32F407/417,STM32F427/437 and STM32F429/439 advanced ARM-based 32-bit MCUs,2012.

[2] STMicroelectronics.STM32F405xx STM32F405xx Datasheet,2012.

[3] STMicroelectronics.STM32 PMSM FOC SDK 4.2 Hands-on workshop with hardware tools,2012.

[4] IAR Systems AB.IAR Embedded Workbench C-SPY Debugging Guide for Advanced RISC Machines Ltd’s ARM cores,2007.

夏传东(主管工程师),主要研究方向为ARM开发平台的软硬件开发。

Brief Introduction of ST-LINK Timeline Debugging Skills

Xia Chuandong

(Ingersoll Rand Engineering&Technology Center-Asia Pacific,Shanghai 200051,China)

In the paper,the ST-LINK’s timeline feature,setup skills in EWARM IDE for STM32 series MCUs are studied,and the application case of fixing one time related bug on the DCBL motor control software is introduced.The experiment results show that the ST-LINK debugger can provide a powerful debugging function,you can quickly locate the software problems and improve the efficiency and quality of the software development.

STM32;ST-LINK;timeline;debugger

TP332.3

A

�士然

2017-03-21)

猜你喜欢

液晶屏中断调试
基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计
基于航拍无人机的设计与调试
FOCAS功能在机床调试中的开发与应用
跟踪导练(二)(5)
千里移防,卫勤保障不中断
FPGA的TFT-LCD真彩液晶屏显示控制
无线通信中频线路窄带临界调试法及其应用
基于机器视觉的液晶屏字符缺陷检测系统设计
调压柜的调试与试运行探讨
基于图像处理的电能表液晶屏质量检测方法