基于ST-Link的STM32单片机多路固件烧录方法研究

2020-07-04 02:42陈景郁朱洪雷
机电信息 2020年9期
关键词:STM32单片机

陈景郁 朱洪雷

摘要:STM32系列单片机性能好、性价比高,因而广泛应用于嵌入式设备。嵌入式设备种类繁多,芯片固件也变化多样,在生产制造过程中,繁杂多样的芯片固件导致了芯片生产烧录瓶颈问题。鉴于此,在改造产线生产工具过程中,尝试了一种基于ST-Link工具实现的多路固件烧录方法,可以简化工人操作,实现固件烧录多样化,提高生产效率之余,也增强了生产安全性。

关键词:STM32单片机;ST-Link;固件烧录

0    引言

STM32系列单片机由于性能好,性价比高,功耗低,逐渐成为嵌入式设备中的主流控制器;可穿戴设备、医疗设备、智能交通和智能家居等嵌入式设备都有采用STM32系列单片机作为主控制器的案例[1-3]。STM32系列单片机是ST公司推出的基于ARM Cort内核的控制器,资源丰富、种类繁多,可以适用于多种场景的产品。

在使用STM32系列单片机的过程中,产品制造遇到了相关的生产烧录瓶颈问题。传统的生产方式,STM32系列单片机固件的烧录方法分为在线烧录和线外烧录两种。市面上提供的烧录设备,无论是在线还是线外烧录,一般都只能同时烧录同一个固件,不能实现多路同时烧录多个不同的固件。由于IOT设备的多样化,产品固件也呈现出多元化的趋势。本文介绍了一种基于ST-Link改造的多路差异化烧录方法,可以提供多元化产线生产,提高产线生产效率。

1    ST-Link介绍

ST-Link是ST公司专门为STM系列单片机开发的调试工具。ST-Link结构简单、使用方便,可用于研发调试,也可用于产品生产,以大大降低用户开发和使用成本。

ST-Link工具对STM32单片机提供丰富的功能,包括:整个芯片擦除、按sector擦除、固件刷写、按字节改写数据、刷写数据校验、存储内容校验、option bytes读写以及寄存器读写等。option bytes是STM32系列单片机中,留给用户配置系统功能的特殊字节,option bytes是可编程的、非易失性的配置存储器。

另外,ST-Link工具支持同时多个连接使用。每个ST-Link都有一个唯一码,连接电脑后,可以通过其唯一码识别ST-

Link,并对其进行操作,从而实现多路ST-Link独立并行工作。本文介绍的方法也是利用其设备唯一码来区分多路ST-Link工具,并实现多路刷写功能同时工作的。

ST公司开发的STM32 ST-Link Utility工具,可以支持基于ST-Link开发调试及量产[4]。由于ST公司并没有提供详细的公司接口说明,也没有开源此工具的代码,开发调试难度比较高。但STM32系列单片机的应用非常广泛,市面上也有很多ST-Link工具的开发包,例如:

(1)stlink,一款Linux下的ST-Link开源工具,https://github.com/texane/stlink。

(2)QSTLink2,一款基于QT的跨平台ST-Link开源工具,https://github.com/fpoussin/QStlink2。

(3)pystlink,一款基于python實现的ST-Link开源工具,https://github.com/pavelrevak/pystlink。

考虑到python通用性更高、清晰简单易用,也可以实现跨平台运行,所以选择了基于python实现我们的烧录工具的上位机,利用pystlink工具提供的接口操作ST-Link。

2    方案设计说明

设计一个可以将多路ST-Link同时接入的烧录装置,烧录上位机能识别并区分各路ST-Link。在烧录装置中,ST-Link通过SWD(Serial Wire Debug,串行调试)总线连接到芯片座;烧录的时候,芯片座安放待烧录芯片;每个ST-Link对应连接一个芯片座。

烧录装置有多个芯片座用于安放芯片,芯片座可以更换,以便适配不同型号和封装的芯片。烧录装置上有独立的控制器,可以控制芯片及ST-Link的电源、指示灯和按键。

电脑上位机通过USB连接烧录装置,通过ST-Link的唯一码,区分并识别各路ST-Link。上位机独立控制每一路ST-Link,加载固件文件,识别芯片,并完成烧录时序逻辑,实现芯片线外烧录功能。

电脑上位机可以实现联网监控等功能,可实时监控产线生产情况,也具备固件安全控制、无缝对接升级等功能,能够提升产线安全性与效率。

3    烧录装置设计

设计一种烧录装置,安装多路芯片底座,芯片座可以根据不同型号芯片封装更换,芯片座与ST-Link通过SWD总线(VDD、GND、SWDIO、SWCLK)连接在一起。然后,所有ST-Link接到USB总线上,可以通过USB总线连接到电脑上位机。

烧录装置中有烧录控制器,可以控制烧录装置中芯片座的电源,监控ST-Link的连接情况,控制每个芯片座的状态指示灯;同时接收烧录装置上的按键事件,控制芯片烧录操作和流程。

烧录装置系统示意图如图1所示。

考虑到供电和信号总线驱动能力的实际情况,示例的烧录装置只安装了4个芯片座。在具体实施过程中,可以根据不同需求配置更多路的芯片座和ST-Link工具。

烧录装置通过USB接口连接到电脑上位机,上位机可以控制各个ST-Link,也可以与烧录装置控制器进行通信,控制烧录装置的电源、指示灯以及处理按键事件。指示灯表示烧录状态:红灯表示错误,蓝灯表示烧录中,绿灯表示烧录完成;按键分别为开始、停止、复位等操作。

4    烧录软件设计

这里选择pystlink工具包开发改造我们的烧录装置上位机软件。pystlink提供了一个可以获取ST-Link唯一序列号的接口[5]:

def _get_serial(self):

try:

serial = usb.util.get_string(self._dev, 255, self._dev.iSerialNumber)

except (usb.core.USBError, ValueError):

serial = usb.util.get_string(self._dev, self._dev.iSerialNumber)

if serial != None:

if re.search("[0-9a-fA-f]+", serial).span()[1] != 24:

serial = ''.join(["%.2x" % ord(c) for c in list(serial)])

return serial

可以通過此API进行判断并区分,同时加载多路ST-Link进行芯片的刷写烧录。如图2所示的UI设计,软件可以支持同时加载4个不同的固件,分别对应不同的4路ST-Link烧录芯片座。

各个通路下的ST-Link可以进行独立的操作,也可以同时进行统一的操作,可以根据生产的需求进行配置。同时操作4路芯片的刷写烧录,可以满足生产产线多元化的需求,也能解决生产效率的瓶颈问题。

5    结语

STM32系列单片机广泛应用于嵌入式设备领域,其产线生产也呈现多元化的趋势。本文介绍了一种基于ST-Link工具解决产线生产多样化与效率问题的方案。本方案设计一个可以同时接入多个ST-Link的烧录装置,通过识别不同ST-Link的唯一码,支持多路芯片的刷写,实现多通路多固件差异化的刷写烧录。本方案在工厂产线上使用后,减少了操作步骤,降低了操作失误率;多路差异化的设计,可以适用于多种不同的产品线,也能解决生产效率的瓶颈问题。

[参考文献]

[1] 林玩杰,李水峰,毛立夫,等.基于STM32智能家居控制系统的设计[J].电子设计工程,2019,27(24):176-180.

[2] 夏胜利,殷鸣.基于STM32单片机的智能公交设计[J].物联网技术,2019,9(8):53-54.

[3] 褚梦秋,佀国宁,李根生,等.下肢康复机器人控制系统研究进展[J].北京生物医学工程,2018,37(6):643-649.

[4] 李坊玉.STM32 ST-LINK Utility应用功能及使用方法(一)[N].电子报,2019-09-01(007).

[5] PYSTLINK[EB/OL].[2020-02-13].ttps://github.com/pavelrevak/pystlink.

收稿日期:2020-02-17

作者简介:陈景郁(1982—),男,广东韶关人,嵌入式开发工程师,主要从事嵌入式设备、移动设备驱动开发工作。

猜你喜欢
STM32单片机
基于STM32单片机的脉冲信号参数高精度测试仪
基于STM32芯片的移动机器人的避障研究
基于STM32的两轮自平衡遥控小车设计
基于STM32单片机的数码相框显示系统设计
基于STM32的中老年人跌倒监测装置研究
基于STM32的智能电风扇设计