基于意法半導(dǎo)體STM32的遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)
期刊雜志科技廣場(chǎng)基于STM32的遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)溫世堅(jiān)(廣州市雄兵汽車(chē)電器有限公司,廣東廣州511338)摘要:該文介紹了一種基于STM32芯片的遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)方案。簡(jiǎn)述了從數(shù)據(jù)下載線、客戶端、
期刊雜志科技廣場(chǎng)
基于STM32的遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)
溫世堅(jiān)
(廣州市雄兵汽車(chē)電器有限公司,廣東廣州511338)
摘要:該文介紹了一種基于STM32芯片的遠(yuǎn)程升級(jí)系統(tǒng)的設(shè)計(jì)方案。簡(jiǎn)述了從數(shù)據(jù)下載線、客戶端、服務(wù)器到數(shù)據(jù)庫(kù)MYSQL 設(shè)計(jì)的全部過(guò)程,并提供了客戶端、服務(wù)器的通信細(xì)節(jié)分析,提供了升級(jí)操作的可靠性和便利性。
關(guān)鍵詞:遠(yuǎn)程升級(jí);STM32;ISP;MYSQL;VB.NET
中圖分類號(hào):G712文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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:
一、引言
越來(lái)越多的電子產(chǎn)品采用意法半導(dǎo)體芯片STM32系列(簡(jiǎn)稱STM32)作為其核心控制單元,隨之便產(chǎn)生了產(chǎn)品的軟件升級(jí)問(wèn)題。由于電子產(chǎn)品具有區(qū)域分散性,不利于企業(yè)進(jìn)行集中式升級(jí)。所以如果需要升級(jí)主機(jī)硬件上的芯片程序,以前的辦法是直接把硬件主機(jī)打包快遞到企業(yè)總部,然后再修改刷新程序,并測(cè)試完了再發(fā)回去。這種方式費(fèi)時(shí)費(fèi)力,而且難免忙中出錯(cuò)。
為進(jìn)一步提高工作效率,降低由此而產(chǎn)生的快遞費(fèi)、人工費(fèi)等額外的支出,減少時(shí)間損失,特開(kāi)發(fā)基于STM32芯片的遠(yuǎn)程升級(jí)系統(tǒng)。該系統(tǒng)有效使用了因特網(wǎng)的方便快捷,避免了傳統(tǒng)物流模式的各種缺點(diǎn),并且可以保護(hù)企業(yè)的知識(shí)產(chǎn)權(quán),防止程序源文件泄露。
本系統(tǒng)屬于服務(wù)器/客戶端模式,用戶界面均采用VB.NET 設(shè)計(jì)。服務(wù)器端后臺(tái)運(yùn)行的是MYSQL 數(shù)據(jù)庫(kù),客戶端則只需要匹配一條專用串口下載線。維護(hù)人員只在能上網(wǎng)的電腦上使用這條下載線,就能通過(guò)客戶端登陸到服務(wù)器,進(jìn)行STM32芯片的軟件升級(jí)操作。
二、工作原理
客戶端通過(guò)因特網(wǎng),從服務(wù)器端獲取程序源文件的數(shù)據(jù),然后使用串口下載線擦除STM32芯片的FLASH ,并把已獲取的數(shù)據(jù)寫(xiě)入到FLASH ,即可實(shí)現(xiàn)遠(yuǎn)程更新。
本節(jié)介紹該系統(tǒng)涉及到的相關(guān)技術(shù)內(nèi)容,如ISP 協(xié)議/ISP硬件電路、客戶端/服務(wù)器工作流程、數(shù)據(jù)庫(kù)MYSQL 設(shè)計(jì)等。
(一)ISP 協(xié)議/ISP硬件電路
STM32芯片具有開(kāi)放式的在線燒錄ISP 協(xié)議【1】,允許第三方根據(jù)該協(xié)議編寫(xiě)ISP 下載軟件,對(duì)STM32芯片進(jìn)行FLASH 的更新操作。該協(xié)議采用串行通信方式,有兩個(gè)握手信號(hào)(nRST/BOOT0),能夠自動(dòng)識(shí)別最高可達(dá)115200bps 的串口波特率,可達(dá)到較快的下載速度。該ISP 協(xié)議已經(jīng)包含在STM32芯片的內(nèi)置Boot Load 固件中。
ISP 下載過(guò)程只需要簡(jiǎn)單的硬件電路支持。如圖1所示,左側(cè)板載端為STM32芯片端,預(yù)留6PIN 的下載線接口,分別為電源線(VDD/GND)、串行通信線(TXD/RXD)、握手線(nRST/BOOT0);右側(cè)下載線端采用USB 轉(zhuǎn)串口芯片PL2303,握手電路是由nDTR/nRTS和兩個(gè)三極管組成的硬件邏輯電路,客戶端軟件通過(guò)控制nDTR/nRTS的輸出來(lái)實(shí)現(xiàn)ISP 握手過(guò)程。
1
,期刊雜志科技廣場(chǎng)

圖1ISP 下載電路(左:板載端右:下載線)
(二)客戶端/服務(wù)器工作流程
客戶端/服務(wù)器采用微軟的VB.NET 編程語(yǔ)言,在VS2010開(kāi)發(fā)環(huán)境上, 基于.NET 4.0編寫(xiě)而成??蛻舳伺c服務(wù)器之間通過(guò)套接字Socket 方式進(jìn)行通信及傳輸文件。
服務(wù)器端的Socket 進(jìn)程用于偵聽(tīng)客戶端連接,示意代碼如下:
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 ' 偵聽(tīng),最多接受100個(gè)連接' 創(chuàng)建Socket, 使用TCP 協(xié)議' 指定服務(wù)器端IP 地址和Port 端口號(hào)
服務(wù)器端的Socket 自從創(chuàng)建之后就一直處于偵聽(tīng)狀態(tài),直到偵聽(tīng)到客戶端的Socket 連接。然后服務(wù)器端立即開(kāi)辟新的線程,并執(zhí)行以下代碼與客戶端進(jìn)行連接,自此Socket 連接過(guò)程成功完成。
Dim ss As Socket =s.Accept()
ss.Receive(bytes)' 接收到客戶端請(qǐng)求, 則創(chuàng)建新的Socket 連接' 接收客戶端信息
使用Socket 套接字的Receive 方法可以接收客戶端發(fā)來(lái)的信息,使用send 方法可以發(fā)送信息到客戶端。
客戶端的Socket 不需要偵聽(tīng),在創(chuàng)建Socket 之后直接連接服務(wù)器端即可,客戶端同樣可以使用Receive 方法和send 方法實(shí)現(xiàn)與服務(wù)器的通信。示意代碼如下:
Dim s =New Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp) ' 創(chuàng)建Socket, 使用TCP 協(xié)議Dim RemotEndPoint As New IPEndPoint(IPAddress.Parse("10.0.0.6"),11126)
s.Connect(RemotEndPoint)' 服務(wù)器端IP 地址和Port 端口號(hào)' 連接到服務(wù)器的指定IP 地址和Port 端口號(hào)當(dāng)然在實(shí)際應(yīng)用中,客戶端與服務(wù)器處于不同局域網(wǎng)絡(luò),無(wú)法直接通過(guò)固定的IP 地址進(jìn)行通信。應(yīng)該根據(jù)實(shí)際情況設(shè)置IP 地址及端口號(hào),配置服務(wù)器的網(wǎng)絡(luò)域名。還需要對(duì)服務(wù)器端的網(wǎng)絡(luò)防火墻、路由器、網(wǎng)關(guān)等進(jìn)行相應(yīng)修改,設(shè)置端口映射、域名訪問(wèn)等。因?yàn)閮?nèi)容較多,文章中不予詳細(xì)說(shuō)明。
服務(wù)器最主要工作的是接收信息、文件發(fā)送、信息記錄。即接收客戶端的信息,并發(fā)送客戶端指定的文件,并記錄客戶端的操作。當(dāng)然服務(wù)器還有其他重要的工作,如數(shù)據(jù)庫(kù)維護(hù)、用戶名管理、文件系統(tǒng)管理等,不予詳細(xì)描述。
客戶端接通過(guò)查詢數(shù)據(jù)庫(kù),找到適合的文件之后就發(fā)送指令到服務(wù)器,要求服務(wù)器發(fā)送相關(guān)文件。接收到文件之后就立刻讀取文件到內(nèi)存緩沖區(qū),然后刪除該文件并啟動(dòng)STM32下載流程(圖2)。除此之外,客戶端還提供其他重要服務(wù),如用戶登錄、信息查詢、文件處理、燒寫(xiě)FLASH 等。
2
,期刊雜志科技廣場(chǎng)

圖2客戶端界面
(三)MYSQL數(shù)據(jù)庫(kù)設(shè)計(jì)
MYSQL 作為一款開(kāi)放源代碼的小型關(guān)系型數(shù)據(jù)庫(kù),由于體積小、速度快、配置低而被普遍使用。本系統(tǒng)采用MYSQL 作為后臺(tái)數(shù)據(jù)庫(kù),實(shí)現(xiàn)了整個(gè)系統(tǒng)信息的快速、集中存儲(chǔ)功能。
采用標(biāo)準(zhǔn)化的SQL 語(yǔ)言,客戶端和服務(wù)器的界面可以輕松訪問(wèn)MYSQL 數(shù)據(jù)庫(kù),并進(jìn)行查詢、刪除、添加、修改、合并等操作,如對(duì)MYSQL 數(shù)據(jù)庫(kù)的查詢操作:Dim MyCommd As String
comm =New MySqlCommand(MyCommd,conn)
a =Convert.ToInt32(comm.ExecuteNonQuery())
If a >0Then
msgbox("SQL語(yǔ)句執(zhí)行成功!")
End If
在該遠(yuǎn)程升級(jí)系統(tǒng)中,一共設(shè)置了6張關(guān)系型的數(shù)據(jù)表,分別為用戶信息表、文件信息表、操作記錄表、硬件序列號(hào)表、遠(yuǎn)程升級(jí)記錄表、庫(kù)存及出庫(kù)統(tǒng)計(jì)表。各數(shù)據(jù)表之間通過(guò)關(guān)鍵字互相關(guān)聯(lián),服務(wù)器端可以通過(guò)這些關(guān)鍵字串聯(lián)起所有信息,實(shí)現(xiàn)對(duì)產(chǎn)品的全程監(jiān)控。
該數(shù)據(jù)庫(kù)具有獨(dú)立的網(wǎng)關(guān)及安全管理策略。經(jīng)過(guò)大量實(shí)踐表明,因WINDOWS 系統(tǒng)安全漏洞比較多,MYSQL服務(wù)器容易招到惡意攻擊、端口掃描、病毒木馬等,因而導(dǎo)致MYSQL 服務(wù)下線。為保證系統(tǒng)安全及防止黑客攻擊,系統(tǒng)應(yīng)用時(shí)需要修改該數(shù)據(jù)庫(kù)的默認(rèn)端口號(hào)(3306),設(shè)置較為復(fù)雜的ROOT 密碼,并且適當(dāng)提高數(shù)據(jù)庫(kù)主機(jī)的系統(tǒng)安全等級(jí)。
三、結(jié)束語(yǔ)
根據(jù)企業(yè)實(shí)際經(jīng)驗(yàn),并結(jié)合現(xiàn)有技術(shù),該遠(yuǎn)程升級(jí)系統(tǒng)實(shí)現(xiàn)了高效的遠(yuǎn)程升級(jí)過(guò)程,有效增加了產(chǎn)品的附加值,并提升了實(shí)際工作效率。通過(guò)修改相關(guān)ISP 協(xié)議及ISP 硬件電路,可以增加該系統(tǒng)對(duì)ATMEL 、STC 、NXP 等主流芯片的支持,增強(qiáng)該遠(yuǎn)程升級(jí)系統(tǒng)的兼容性。
參考文獻(xiàn):
[1]意法半導(dǎo)體http://www.st.com.《AN2606》STM32FXX system memory boot mode,2010
[2]意法半導(dǎo)體http://www.st.com.《AN3154》CAN protocol used in the STM32?bootloader.2009
[3]潘凱華等.MYSQL快速入門(mén).北京:清華大學(xué)出版社,2012.
[4]Thearon Wills,Bryan Newsome .Beginning Visual Basic 2010.北京:清華大學(xué)出版社,2011.
Email:wenshijian4@163.com' 定義字符串變量' 執(zhí)行SQL 語(yǔ)句' 查詢執(zhí)行結(jié)果' 判斷是否執(zhí)行成功MyCommd ="select *from TbFile where ID=34FF167"' SQL 語(yǔ)句, 從TbFile 表查找符合ID=34FF167的所有內(nèi)容
3