<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 基于CAN總線節(jié)點(diǎn)的遠(yuǎn)程在線升級(jí)系統(tǒng)設(shè)計(jì)

          基于CAN總線節(jié)點(diǎn)的遠(yuǎn)程在線升級(jí)系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2016-10-10 來(lái)源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/201610/306152.htm

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

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

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

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

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

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

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

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

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

          a.jpg

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

          b.jpg

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

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

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

          c.jpg

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

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

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

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

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

          d.jpg

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

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

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

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

          e.jpg

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

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

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

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

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

          f.jpg

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

          g.jpg

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

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

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

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

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

          ①打開(kāi)USB—CAN接口卡對(duì)應(yīng)的COM口。

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

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

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

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

          h.jpg

          結(jié)語(yǔ)

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



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();