基于意法半导体STM32的远程升级系统的设计
期刊杂志科技广场基于STM32的远程升级系统的设计温世坚(广州市雄兵汽车电器有限公司,广东广州511338)摘要:该文介绍了一种基于STM32芯片的远程升级系统的设计方案。简述了从数据下载线、客户端、
期刊杂志科技广场
基于STM32的远程升级系统的设计
温世坚
(广州市雄兵汽车电器有限公司,广东广州511338)
摘要:该文介绍了一种基于STM32芯片的远程升级系统的设计方案。简述了从数据下载线、客户端、服务器到数据库MYSQL 设计的全部过程,并提供了客户端、服务器的通信细节分析,提供了升级操作的可靠性和便利性。
关键词:远程升级;STM32;ISP;MYSQL;VB.NET
中图分类号:G712文献标识码:A 文章编号:SN.2013071208
-U p date system based on STM32Design of R emote emote-
Wen Shijian,
(SPACEKEY Auto Electronics CO. GuangDong GuangZhou 511338,China )
:This paper introduces a design of Remote-Update system based on STM32chip. The design process include the Abstract Abstract:
download cable, the client , the server and the database MYSQL. And provides analysis of communication details between client and server, ensuring the reliability and convenience of upgrading operation.
:Remote-Update;STM32;ISP;MYSQL;VB.NET Key words words:
一、引言
越来越多的电子产品采用意法半导体芯片STM32系列(简称STM32)作为其核心控制单元,随之便产生了产品的软件升级问题。由于电子产品具有区域分散性,不利于企业进行集中式升级。所以如果需要升级主机硬件上的芯片程序,以前的办法是直接把硬件主机打包快递到企业总部,然后再修改刷新程序,并测试完了再发回去。这种方式费时费力,而且难免忙中出错。
为进一步提高工作效率,降低由此而产生的快递费、人工费等额外的支出,减少时间损失,特开发基于STM32芯片的远程升级系统。该系统有效使用了因特网的方便快捷,避免了传统物流模式的各种缺点,并且可以保护企业的知识产权,防止程序源文件泄露。
本系统属于服务器/客户端模式,用户界面均采用VB.NET 设计。服务器端后台运行的是MYSQL 数据库,客户端则只需要匹配一条专用串口下载线。维护人员只在能上网的电脑上使用这条下载线,就能通过客户端登陆到服务器,进行STM32芯片的软件升级操作。
二、工作原理
客户端通过因特网,从服务器端获取程序源文件的数据,然后使用串口下载线擦除STM32芯片的FLASH ,并把已获取的数据写入到FLASH ,即可实现远程更新。
本节介绍该系统涉及到的相关技术内容,如ISP 协议/ISP硬件电路、客户端/服务器工作流程、数据库MYSQL 设计等。
(一)ISP 协议/ISP硬件电路
STM32芯片具有开放式的在线烧录ISP 协议【1】,允许第三方根据该协议编写ISP 下载软件,对STM32芯片进行FLASH 的更新操作。该协议采用串行通信方式,有两个握手信号(nRST/BOOT0),能够自动识别最高可达115200bps 的串口波特率,可达到较快的下载速度。该ISP 协议已经包含在STM32芯片的内置Boot Load 固件中。
ISP 下载过程只需要简单的硬件电路支持。如图1所示,左侧板载端为STM32芯片端,预留6PIN 的下载线接口,分别为电源线(VDD/GND)、串行通信线(TXD/RXD)、握手线(nRST/BOOT0);右侧下载线端采用USB 转串口芯片PL2303,握手电路是由nDTR/nRTS和两个三极管组成的硬件逻辑电路,客户端软件通过控制nDTR/nRTS的输出来实现ISP 握手过程。
1
,期刊杂志科技广场

图1ISP 下载电路(左:板载端右:下载线)
(二)客户端/服务器工作流程
客户端/服务器采用微软的VB.NET 编程语言,在VS2010开发环境上, 基于.NET 4.0编写而成。客户端与服务器之间通过套接字Socket 方式进行通信及传输文件。
服务器端的Socket 进程用于侦听客户端连接,示意代码如下:
s =New Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp)
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("10.0.0.6"),11126)
s.Bind(localEndPoint)
s.Listen(100)' 绑定到该Socket ' 侦听,最多接受100个连接' 创建Socket, 使用TCP 协议' 指定服务器端IP 地址和Port 端口号
服务器端的Socket 自从创建之后就一直处于侦听状态,直到侦听到客户端的Socket 连接。然后服务器端立即开辟新的线程,并执行以下代码与客户端进行连接,自此Socket 连接过程成功完成。
Dim ss As Socket =s.Accept()
ss.Receive(bytes)' 接收到客户端请求, 则创建新的Socket 连接' 接收客户端信息
使用Socket 套接字的Receive 方法可以接收客户端发来的信息,使用send 方法可以发送信息到客户端。
客户端的Socket 不需要侦听,在创建Socket 之后直接连接服务器端即可,客户端同样可以使用Receive 方法和send 方法实现与服务器的通信。示意代码如下:
Dim s =New Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp) ' 创建Socket, 使用TCP 协议Dim RemotEndPoint As New IPEndPoint(IPAddress.Parse("10.0.0.6"),11126)
s.Connect(RemotEndPoint)' 服务器端IP 地址和Port 端口号' 连接到服务器的指定IP 地址和Port 端口号当然在实际应用中,客户端与服务器处于不同局域网络,无法直接通过固定的IP 地址进行通信。应该根据实际情况设置IP 地址及端口号,配置服务器的网络域名。还需要对服务器端的网络防火墙、路由器、网关等进行相应修改,设置端口映射、域名访问等。因为内容较多,文章中不予详细说明。
服务器最主要工作的是接收信息、文件发送、信息记录。即接收客户端的信息,并发送客户端指定的文件,并记录客户端的操作。当然服务器还有其他重要的工作,如数据库维护、用户名管理、文件系统管理等,不予详细描述。
客户端接通过查询数据库,找到适合的文件之后就发送指令到服务器,要求服务器发送相关文件。接收到文件之后就立刻读取文件到内存缓冲区,然后删除该文件并启动STM32下载流程(图2)。除此之外,客户端还提供其他重要服务,如用户登录、信息查询、文件处理、烧写FLASH 等。
2
,期刊杂志科技广场

图2客户端界面
(三)MYSQL数据库设计
MYSQL 作为一款开放源代码的小型关系型数据库,由于体积小、速度快、配置低而被普遍使用。本系统采用MYSQL 作为后台数据库,实现了整个系统信息的快速、集中存储功能。
采用标准化的SQL 语言,客户端和服务器的界面可以轻松访问MYSQL 数据库,并进行查询、删除、添加、修改、合并等操作,如对MYSQL 数据库的查询操作:Dim MyCommd As String
comm =New MySqlCommand(MyCommd,conn)
a =Convert.ToInt32(comm.ExecuteNonQuery())
If a >0Then
msgbox("SQL语句执行成功!")
End If
在该远程升级系统中,一共设置了6张关系型的数据表,分别为用户信息表、文件信息表、操作记录表、硬件序列号表、远程升级记录表、库存及出库统计表。各数据表之间通过关键字互相关联,服务器端可以通过这些关键字串联起所有信息,实现对产品的全程监控。
该数据库具有独立的网关及安全管理策略。经过大量实践表明,因WINDOWS 系统安全漏洞比较多,MYSQL服务器容易招到恶意攻击、端口扫描、病毒木马等,因而导致MYSQL 服务下线。为保证系统安全及防止黑客攻击,系统应用时需要修改该数据库的默认端口号(3306),设置较为复杂的ROOT 密码,并且适当提高数据库主机的系统安全等级。
三、结束语
根据企业实际经验,并结合现有技术,该远程升级系统实现了高效的远程升级过程,有效增加了产品的附加值,并提升了实际工作效率。通过修改相关ISP 协议及ISP 硬件电路,可以增加该系统对ATMEL 、STC 、NXP 等主流芯片的支持,增强该远程升级系统的兼容性。
参考文献:
[1]意法半导体http://www.st.com.《AN2606》STM32FXX system memory boot mode,2010
[2]意法半导体http://www.st.com.《AN3154》CAN protocol used in the STM32™bootloader.2009
[3]潘凯华等.MYSQL快速入门.北京:清华大学出版社,2012.
[4]Thearon Wills,Bryan Newsome .Beginning Visual Basic 2010.北京:清华大学出版社,2011.
Email:wenshijian4@163.com' 定义字符串变量' 执行SQL 语句' 查询执行结果' 判断是否执行成功MyCommd ="select *from TbFile where ID=34FF167"' SQL 语句, 从TbFile 表查找符合ID=34FF167的所有内容
3