當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]針對特種纖維檢測控制系統(tǒng)各節(jié)點(diǎn)軟件升級困難的問題,設(shè)計(jì)了基于CAN總線應(yīng)用層協(xié)議的一種遠(yuǎn)程在線升級系統(tǒng),實(shí)現(xiàn)了單節(jié)點(diǎn)、多節(jié)點(diǎn)同時在線升級。通過實(shí)際運(yùn)行分析,該系統(tǒng)具有可靠性高、升級操作簡便、系統(tǒng)穩(wěn)定的特點(diǎn),對一般工業(yè)網(wǎng)絡(luò)中的節(jié)點(diǎn)升級具有參考意義。

 引言

特種纖維檢測控制系統(tǒng)是對生產(chǎn)線上產(chǎn)出的纖維產(chǎn)品各種參數(shù)進(jìn)行實(shí)時檢測和設(shè)備的控制裝置。系統(tǒng)由多個數(shù)據(jù)采集節(jié)點(diǎn)組成,通過CAN總線網(wǎng)絡(luò)將數(shù)據(jù)匯總到主節(jié)點(diǎn),主節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行處理、分析后輸出相應(yīng)的控制信號,實(shí)現(xiàn)對生產(chǎn)線設(shè)備的實(shí)時調(diào)整和控制。傳統(tǒng)情況下,如果需要針對節(jié)點(diǎn)進(jìn)行軟件升級更新,就需要專業(yè)技術(shù)人員到生產(chǎn)現(xiàn)場,通過專用的下載設(shè)備進(jìn)行程序燒錄更新,使系統(tǒng)維護(hù)成本大幅提高,降低了生產(chǎn)效率。因此,結(jié)合特種纖維檢測控制系統(tǒng)現(xiàn)有的CAN總線網(wǎng)絡(luò),并利用節(jié)點(diǎn)微控制器的IAP功能,設(shè)計(jì)一個節(jié)點(diǎn)遠(yuǎn)程在線升級系統(tǒng)十分有必要。

本文在實(shí)現(xiàn)CAN總線報(bào)文數(shù)據(jù)收發(fā)的基礎(chǔ)上,參考TCP/IP協(xié)議中的TFTP協(xié)議規(guī)范,設(shè)計(jì)了一個簡單實(shí)用的系統(tǒng)在線升級應(yīng)用層協(xié)議,并結(jié)合微控制器的IAP功能,實(shí)現(xiàn)待升級節(jié)點(diǎn)軟件升級的目的。

1 IAP技術(shù)及升級系統(tǒng)總體結(jié)構(gòu)

1.1 IAP技術(shù)及其編程實(shí)現(xiàn)

IAP(In Application Programming,在應(yīng)用中編程)是指用戶在運(yùn)行應(yīng)用程序過程中通過程序控制實(shí)現(xiàn)對片上Flash存儲器的擦除和讀/寫等操作。IAP技術(shù)是實(shí)現(xiàn)系統(tǒng)在線升級的必要前提,本系統(tǒng)中待升級節(jié)點(diǎn)采用NXP公司的基于Cortex—M4內(nèi)核的微控制器LPC4357。該芯片集成了功能強(qiáng)大的IAP技術(shù),可以單次最多向目標(biāo)Flash中寫入4 KB數(shù)據(jù)。

IAP的功能函數(shù)被固化在ROM的Boot中。以LPC4357為例,ROM的地址0x 1040 0100作為指針指向IAP功能函數(shù)入口地址IAP_entry,因此當(dāng)使用C語言編寫調(diào)用函數(shù)時,首先定義IAP入口地址。在進(jìn)行IAP函數(shù)調(diào)用時,通過寄存器R0 作為指針來傳遞命令代碼和參數(shù)。IAP命令的返回結(jié)果通過寄存器R1作為指針來傳遞。

實(shí)現(xiàn)節(jié)點(diǎn)軟件升級的關(guān)鍵一步就是將CAN總線接收的代碼數(shù)據(jù)通過IAP編程到指定的片上Flash的扇區(qū)。IAP通過以下幾個步驟實(shí)現(xiàn)編程操作:IAP初始化、準(zhǔn)備扇區(qū)、擦除扇區(qū)、準(zhǔn)備扇區(qū)、編程扇區(qū)和數(shù)據(jù)校驗(yàn)。

1.2 在線升級系統(tǒng)總體結(jié)構(gòu)

系統(tǒng)由檢測節(jié)點(diǎn)、CAN總線網(wǎng)絡(luò)和升級服務(wù)器組成。其中檢測節(jié)點(diǎn)和CAN總線網(wǎng)絡(luò)是特種纖維檢測控制系統(tǒng)的組成部分,因此,只要將升級服務(wù)器接入CAN總線網(wǎng)絡(luò),就可以搭建在線升級系統(tǒng)的硬件平臺。升級系統(tǒng)總體框圖如圖1所示。


升級系統(tǒng)的軟件由節(jié)點(diǎn)端軟件和服務(wù)器端軟件組成,節(jié)點(diǎn)端和服務(wù)器端通過CAN總線進(jìn)行數(shù)據(jù)交互,在此基礎(chǔ)上,設(shè)計(jì)CAN應(yīng)用層協(xié)議。本文通過分析TCP/IP協(xié)議中的TFTP協(xié)議規(guī)范,設(shè)計(jì)了一款簡單實(shí)用而且適用于CAN總線網(wǎng)絡(luò)的系統(tǒng)升級協(xié)議。升級系統(tǒng)協(xié)議分層結(jié)構(gòu)如圖2所示。


2 系統(tǒng)升級協(xié)議設(shè)計(jì)

2.1 TFTP協(xié)議及文件傳輸基本流程

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的應(yīng)用層協(xié)議,基于UDP傳輸協(xié)議。最初用來引導(dǎo)無盤系統(tǒng),主要用于傳輸小文件。TFTP協(xié)議報(bào)文分為:讀/寫請求報(bào)文、數(shù)據(jù)包報(bào)文、確認(rèn)信息報(bào)文以及差錯報(bào)文。TFTP報(bào)文格式如圖3所示。


TFTP客戶端首先向服務(wù)器的端口69發(fā)送文件下載/上傳請求,請求的相應(yīng)報(bào)文格式如圖3(a)所示。服務(wù)器接收請求后打開一個新的端口與客戶端進(jìn)行通信,服務(wù)器端口69則繼續(xù)等待其他客戶端的請求,從而實(shí)現(xiàn)同時響應(yīng)多個客戶端的文件傳輸請求。當(dāng)客戶端發(fā)送的文件下載請求得到服務(wù)器ACK確認(rèn)后,開始發(fā)送編號為1的數(shù)據(jù)包,數(shù)據(jù)包的報(bào)文格式如圖3(b)所示。每個數(shù)據(jù)包的大小為固定的512字節(jié),服務(wù)器每次發(fā)送數(shù)據(jù)包之前都必須得到客戶端的ACK確認(rèn)。當(dāng)客戶端接收到小于固定字節(jié)的數(shù)據(jù)包時,則認(rèn)為文件傳輸結(jié)束。

TFTP協(xié)議也提供了相應(yīng)的錯誤處理機(jī)制。服務(wù)器端和客戶端都可實(shí)現(xiàn)超時重傳,只要有一端出現(xiàn)超時,就將重傳丟失的報(bào)文,從而有效的提高文件傳輸?shù)恼_率。在傳輸過程中出現(xiàn)錯誤時,服務(wù)器端向客戶端發(fā)送差錯報(bào)文。

2.2 系統(tǒng)升級協(xié)議的報(bào)文格式

CAN總線協(xié)議定義了5種類型的幀:數(shù)據(jù)幀、遙控幀、錯誤幀、過載幀、間隔幀。其中,數(shù)據(jù)幀用于發(fā)送單元向接收單元傳送數(shù)據(jù)。數(shù)據(jù)幀格式分為標(biāo)準(zhǔn)格式和擴(kuò)展格式,兩者區(qū)別在于標(biāo)識符分別占11位和29位,這里僅使用標(biāo)準(zhǔn)格式的數(shù)據(jù)幀作為節(jié)點(diǎn)和升級服務(wù)器通信的基本單位。

由于一個數(shù)據(jù)幀最多只能攜帶8字節(jié)數(shù)據(jù),而在一般文件傳輸應(yīng)用中數(shù)據(jù)以數(shù)據(jù)塊的形式進(jìn)行傳輸,因此在文件傳輸時需要進(jìn)行數(shù)據(jù)拆分、重組的操作。在應(yīng)用層的數(shù)據(jù)報(bào)文中對這一操作進(jìn)行屏蔽,具體操作通過底層協(xié)議實(shí)現(xiàn),因此這里僅需關(guān)心數(shù)據(jù)幀的數(shù)據(jù)段。升級協(xié)議的報(bào)文分為:升級命令、數(shù)據(jù)包、確認(rèn)信息、錯誤信息,相應(yīng)的報(bào)文格式如圖4所示。

升級命令由升級服務(wù)器發(fā)出,ID號用于確認(rèn)待升級節(jié)點(diǎn),升級模式分為單節(jié)點(diǎn)升級模式和多節(jié)點(diǎn)同時升級模式。數(shù)據(jù)包用于服務(wù)器向節(jié)點(diǎn)傳輸升級所需的二進(jìn)制文件,每個數(shù)據(jù)包攜帶固定的1024字節(jié)數(shù)據(jù),這是因?yàn)楣?jié)點(diǎn)利用IAP技術(shù)進(jìn)行軟件升級時,每次對片上Flash編程的字節(jié)數(shù)是固定的,可選512字節(jié)、1024字節(jié)、4096字節(jié)3個選項(xiàng),這里選用1024字節(jié)。確認(rèn)信息和錯誤信息參考TFTP協(xié)議的相應(yīng)報(bào)文格式。

2.3 系統(tǒng)升級協(xié)議及文件傳輸流程

系統(tǒng)升級命令由升級服務(wù)器發(fā)出,節(jié)點(diǎn)在接收到升級命令后通過校驗(yàn)ID號判斷升級模式,進(jìn)入相應(yīng)的升級狀態(tài),并向服務(wù)器發(fā)送確認(rèn)信息ACK。升級服務(wù)器接收到ACK確認(rèn)后,開始發(fā)送編號為1的數(shù)據(jù)包,節(jié)點(diǎn)接收到數(shù)據(jù)包就立即將1024字節(jié)數(shù)據(jù)編程到片內(nèi)Flash中,編程成功后返回ACK 1,以此類推。如果最后一個數(shù)據(jù)包N的數(shù)據(jù)長度小于1024字節(jié),則自動向數(shù)據(jù)包添加0,使數(shù)據(jù)包長度正好為1024字節(jié)。

升級服務(wù)器接收到節(jié)點(diǎn)確認(rèn)信息ACK N,表明節(jié)點(diǎn)升級完成。這里,節(jié)點(diǎn)端采用邊接收邊升級的方案。如果將升級文件全部接收后再進(jìn)行升級,則需要大量的RAM空間,一旦升級文件過大,節(jié)點(diǎn)升級就會失敗。系統(tǒng)升級流程如圖5所示。

2. 4 系統(tǒng)升級中的錯誤處理

在系統(tǒng)升級過程中,可能會出現(xiàn)發(fā)送數(shù)據(jù)包丟失、連接中斷的情況。當(dāng)服務(wù)器端發(fā)送的數(shù)據(jù)包丟失或節(jié)點(diǎn)端接收該數(shù)據(jù)包失敗時,節(jié)點(diǎn)端向服務(wù)器端發(fā)送錯誤信息。服務(wù)器端接收錯誤信息,根據(jù)錯誤內(nèi)容判斷是否需要重新發(fā)送數(shù)據(jù)包。如果服務(wù)器端在一定時間內(nèi)沒有接收到節(jié)點(diǎn)端的確認(rèn)信息或錯誤信息,則認(rèn)為系統(tǒng)升級失敗,服務(wù)器端會向節(jié)點(diǎn)端發(fā)送升級失敗的錯誤信息ERROR,節(jié)點(diǎn)端接收該信息后進(jìn)入升級失敗狀態(tài)。

3 節(jié)點(diǎn)端軟件升級協(xié)議的實(shí)現(xiàn)

檢測節(jié)點(diǎn)采用NXP公司的基于Cortex-M4內(nèi)核的微控制器LPC4357作為數(shù)據(jù)采集和控制核心,片上集成了1MB的Flash,分為BankA和BankB兩個存儲體,每個存儲體各占512KB。

節(jié)點(diǎn)程序分為兩部分:Bootloader升級程序和APP應(yīng)用程序。APP應(yīng)用程序分為兩個區(qū):默認(rèn)應(yīng)用程序區(qū)和升級應(yīng)用程序區(qū)。片上Flash功能分區(qū)如圖6所示。


Bootloader升級程序燒錄在片上Flash的BankA扇區(qū)0處,占用8KB空間。系統(tǒng)啟動時,最先執(zhí)行該處程序,首先進(jìn)行系統(tǒng)初始化操作,包括CAN總線接口初始化、IAP初始化、讀器件ID號等。初始化完成后,進(jìn)入等待升級狀態(tài)。在該狀態(tài)下,如果接收到升級服務(wù)器發(fā)送的升級命令,則進(jìn)入升級狀態(tài)。系統(tǒng)升級成功后進(jìn)入待跳轉(zhuǎn)狀態(tài),最后系統(tǒng)跳轉(zhuǎn)到升級后的應(yīng)用程序區(qū)。節(jié)點(diǎn)升級狀態(tài)轉(zhuǎn)換圖如圖7所示。


當(dāng)Bootloader初始化完成且等待升級命令超時后,系統(tǒng)跳轉(zhuǎn)到APP應(yīng)用程序的默認(rèn)應(yīng)用程序區(qū),開始執(zhí)行節(jié)點(diǎn)應(yīng)用程序。應(yīng)用程序除了完成數(shù)據(jù)采集和CAN總線數(shù)據(jù)傳輸功能,還能在接收到升級服務(wù)器的升級命令時,中止系統(tǒng)運(yùn)行并跳至Bootloader區(qū),進(jìn)入系統(tǒng)升級狀態(tài)。

由于系統(tǒng)啟動時不是直接開始執(zhí)行APP應(yīng)用程序,而是從Bootloader程序跳轉(zhuǎn)進(jìn)入該處程序,因此,在APP應(yīng)用程序初始化之前必須將中斷向量表重映射,防止APP應(yīng)用程序發(fā)生中斷時進(jìn)入Bootloader程序的中斷函數(shù)。

當(dāng)升級失敗時跳轉(zhuǎn)到默認(rèn)應(yīng)用程序區(qū),使系統(tǒng)在升級出錯時依然能夠正常運(yùn)行。系統(tǒng)升級時,對升級應(yīng)用程序區(qū)進(jìn)行擦除、編程操作,升級成功后進(jìn)入該程序區(qū)執(zhí)行升級后的應(yīng)用程序。Bootloader程序的待跳轉(zhuǎn)狀態(tài)根據(jù)等待超時、升級狀態(tài)分別進(jìn)入默認(rèn)應(yīng)用程序區(qū)或升級應(yīng)用程序區(qū)。

4 升級服務(wù)器端軟件設(shè)計(jì)

升級服務(wù)器是普通PC機(jī),通過USB-CAN接口卡實(shí)現(xiàn)與CAN總線的連接。因此,升級服務(wù)器首先初始化并配置USB—CAN接口卡,通過以下步驟實(shí)現(xiàn):

①打開USB—CAN接口卡對應(yīng)的COM口。

②配置相應(yīng)COM口波特率、校驗(yàn)位等參數(shù)。

③通過向COM口發(fā)送配置信息,對USB—CAN接口卡進(jìn)行參數(shù)配置。

其中,應(yīng)設(shè)置USB-CAN接口卡波特率與外部CAN總線網(wǎng)絡(luò)的波特率相匹配;接著,升級服務(wù)器將對升級程序的二進(jìn)制文件進(jìn)行操作,該二進(jìn)制文件在編譯器對節(jié)點(diǎn)升級程序進(jìn)行編譯時生成,也可通過對生成的HEX文件進(jìn)行轉(zhuǎn)換得到。首先,升級服務(wù)器獲取文件大小N KB,將該數(shù)值N傳遞給升級命令,節(jié)點(diǎn)端接收升級命令的同時可獲取文件大小,從而確定IAP編程次數(shù);然后,升級服務(wù)器將該二進(jìn)制文件讀入內(nèi)存中,在升級開始后,根據(jù)升級協(xié)議的相關(guān)格式將數(shù)據(jù)進(jìn)行封裝并發(fā)送到相應(yīng)節(jié)點(diǎn)端。

升級服務(wù)器也可根據(jù)需要選擇不同的升級模式??晒┻x擇的升級模式有:單節(jié)點(diǎn)升級模式和多節(jié)點(diǎn)同時升級模式。單節(jié)點(diǎn)和多節(jié)點(diǎn)同時升級的區(qū)別在于,多節(jié)點(diǎn)升級利用了CAN總線節(jié)點(diǎn)可接收廣播數(shù)據(jù)的特性,通過配置USB—CAN接口卡的ID過濾器,升級服務(wù)器可接收相應(yīng)節(jié)點(diǎn)發(fā)送的確認(rèn)信息,實(shí)現(xiàn)多個節(jié)點(diǎn)同時升級的操作。升級服務(wù)器的軟件界面如圖8所示。


結(jié)語

本文結(jié)合特種纖維檢測控制系統(tǒng)現(xiàn)有的CAN總線網(wǎng)絡(luò)和節(jié)點(diǎn)的IAP功能,設(shè)計(jì)了節(jié)點(diǎn)在線升級系統(tǒng)。參考TFTP協(xié)議,設(shè)計(jì)了一種適用于CAN總線網(wǎng)絡(luò)的系統(tǒng)升級協(xié)議。通過將節(jié)點(diǎn)端的片上Flash進(jìn)行功能分區(qū),實(shí)現(xiàn)了在升級出現(xiàn)錯誤時維持節(jié)點(diǎn)穩(wěn)定運(yùn)行。根據(jù)實(shí)際應(yīng)用需要,服務(wù)器端選擇相應(yīng)升級模式,提高了升級效率。系統(tǒng)的實(shí)際運(yùn)行結(jié)果表明,升級操作簡單高效,節(jié)點(diǎn)在升級后運(yùn)行穩(wěn)定,系統(tǒng)性能良好。CAN總線網(wǎng)絡(luò)和智能節(jié)點(diǎn)廣泛應(yīng)用在工業(yè)控制等領(lǐng)域,該系統(tǒng)為節(jié)點(diǎn)升級的實(shí)際需求提供了一種可行的解決方案。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉