• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于XC886芯片的在線升級(jí)軟件設(shè)計(jì)

    2018-02-25 02:39:06張琪楊建成于宗洋
    電子技術(shù)與軟件工程 2018年7期

    張琪 楊建成 于宗洋

    摘要 研究了利用總線技術(shù)對(duì)不易拆卸控制器的加載和遠(yuǎn)程控制技術(shù),以英飛凌公司的XC886芯片為平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了CAN總線遠(yuǎn)程升級(jí)加載方案。該方案摒棄了傳統(tǒng)方案升級(jí)軟件需要打開控制器外殼、連接JTAG口等繁瑣過(guò)程,通過(guò)PC端監(jiān)控界面與片內(nèi)駐留BootLoader引導(dǎo)程序進(jìn)行CAN總線通訊,實(shí)現(xiàn)用戶程序的燒寫和遠(yuǎn)程升級(jí)。

    【關(guān)鍵詞】XC886芯片 BootLoader 遠(yuǎn)程升級(jí)CAN總線

    在現(xiàn)代控制數(shù)字技術(shù)不斷迅猛發(fā)展的當(dāng)下,嵌入式控制系統(tǒng)被越來(lái)越廣泛的應(yīng)用在工業(yè)領(lǐng)域,嵌入式操作系統(tǒng)經(jīng)常被安裝在自然環(huán)境極其惡劣的區(qū)域,亟需實(shí)現(xiàn)系統(tǒng)遠(yuǎn)程加載。CAN總線作為一種國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線,具有出眾的性價(jià)比和高可靠性,因此通過(guò)CAN總線對(duì)各節(jié)點(diǎn)芯片進(jìn)行在線升級(jí),成為一種簡(jiǎn)單易行且穩(wěn)定可靠的方式。本項(xiàng)目提出一種基于CAN總線的分布式嵌入系統(tǒng)升級(jí)方案,實(shí)現(xiàn)多點(diǎn)或單點(diǎn)系統(tǒng)的升級(jí)。項(xiàng)目根據(jù)嵌入式處理系統(tǒng)存儲(chǔ)結(jié)構(gòu)的特殊性和主流的軟件升級(jí)原理,建立了一套通過(guò)PC機(jī)控制遠(yuǎn)程節(jié)點(diǎn)軟件升級(jí)的系統(tǒng)。

    1 工作原理

    本研究采用的嵌入式芯片采用Infineon公司的XC886芯片,程序軟件升級(jí)采用下載模式。主要思路是使用PC平臺(tái),與嵌入式芯片駐留程序通訊。系統(tǒng)軟件分為PC平臺(tái)和硬件端底層引導(dǎo)程序(BootLoader),PC平臺(tái)負(fù)責(zé)將需要加載的更新程序轉(zhuǎn)化為要求格式,BootLoader將CAN總線發(fā)來(lái)的數(shù)據(jù)燒寫到FLASH存儲(chǔ)區(qū)內(nèi)。先通過(guò)JTAG口將BootLoader燒寫到FLASH,然后棄用JTAG。在后續(xù)使用過(guò)程中,芯片上電后按ROM區(qū)地址順序執(zhí)行,即先執(zhí)行BootLoader,底層程序負(fù)責(zé)接收PC端控制命令,決定是否有目標(biāo)文件更新任務(wù):判斷有,將CAN總線上發(fā)送的用戶文件接收并通過(guò)Flash緩存固化到芯片ROM區(qū);判斷無(wú),運(yùn)行硬件端用戶程序區(qū)。

    2 過(guò)程實(shí)現(xiàn)

    控制核心模塊使用中斷接收PC平臺(tái)發(fā)來(lái)的消息,通過(guò)ID號(hào)分辨消息是命令還是文件傳輸。該模塊是核心部分,負(fù)責(zé)與PC平臺(tái)進(jìn)行通訊,傳輸和接收數(shù)據(jù);響應(yīng)PC平臺(tái)發(fā)送的命令,完成命令功能,處理接收數(shù)據(jù)。按此流程解析命令:

    (1) CAN通訊初始化;

    (2)等待連接命令和建立通訊連接;

    (3)等待命令和命令處理:在成功建立連接后硬件端等待PC平臺(tái)發(fā)送用戶控制指令:連接斷開、程序啟動(dòng)、復(fù)位、程序更新和系統(tǒng)狀態(tài)請(qǐng)求,此外異常情況:超時(shí)處理。硬件端對(duì)相應(yīng)指令做出對(duì)應(yīng)處理;

    (4)系統(tǒng)狀態(tài)結(jié)束及復(fù)位狀態(tài)結(jié)束。

    3 數(shù)據(jù)傳輸

    數(shù)據(jù)傳輸部分采用單向傳輸,從PC端到硬件端,PC平臺(tái)發(fā)送更新程序文件到硬件端,硬件端回傳響應(yīng)信號(hào)和狀態(tài),PC端發(fā)送數(shù)據(jù),硬件端接收數(shù)據(jù)。單個(gè)某數(shù)據(jù)幀的傳輸過(guò)程如圖1所示:

    ①單個(gè)某數(shù)據(jù)幀傳輸開始,PC平臺(tái)定義該幀的序列號(hào),如果幀過(guò)大需要?jiǎng)澐殖扇舾煞謳?,?guī)定主幀的分幀個(gè)數(shù)。SeqM為主幀序列號(hào),主幀的每個(gè)分幀都包含主幀序列號(hào),用以標(biāo)記。序列號(hào)存儲(chǔ)在某分幀的序列號(hào)字段中。LFM是在某分幀完成傳輸后所屬主幀中剩余分幀的個(gè)數(shù),存儲(chǔ)在表征后續(xù)幀個(gè)數(shù)的字段中。FlashAddM為主幀在Flash的目標(biāo)燒寫位置,將地址存儲(chǔ)在分幀的Flash相應(yīng)地址字段中。

    ②硬件端成功接收到某分幀后,判斷數(shù)據(jù)是否無(wú)誤,正確回傳確認(rèn)幀,包含主幀序列號(hào)和已接收到分幀的剩余幀數(shù),INF為確認(rèn)幀中包含的信號(hào)內(nèi)容,Next代表已經(jīng)準(zhǔn)備去接收下一分幀。

    ③成功傳輸完前一分幀后,順次向下傳輸下一分幀,SeqM和FlashAddM均不變,LFM減去1。

    ④同②,剩余的各分幀成功傳輸過(guò)程與③、④相同。

    ⑤傳輸完最后一個(gè)分幀,LFM等于O。

    ⑥同②。

    ⑦傳輸完上一主幀后,開始下一主幀的傳輸,主幀序列號(hào)為SeqM加1,F(xiàn)lashAddM更新為當(dāng)前主幀目標(biāo)燒寫位置,LFM為主幀包含的總分幀個(gè)數(shù)減1。

    4 錯(cuò)誤處理機(jī)制

    當(dāng)檢測(cè)到接收數(shù)據(jù)幀發(fā)生錯(cuò)誤時(shí),硬件端判斷錯(cuò)誤類型并反饋給PC平臺(tái)進(jìn)行錯(cuò)誤處理。數(shù)據(jù)傳輸錯(cuò)誤處理過(guò)程如圖2。

    ①PC平臺(tái)發(fā)送最后一個(gè)數(shù)據(jù)幀Mn。

    ②硬件端成功接收該數(shù)據(jù)幀,返回請(qǐng)求下一分幀的信號(hào)確認(rèn)幀。

    ③PC平臺(tái)發(fā)送數(shù)據(jù)長(zhǎng)度為O的數(shù)據(jù)幀,通知硬件端數(shù)據(jù)傳輸完畢。

    ④硬件端檢查該分幀中帶有的總數(shù)據(jù)長(zhǎng)度信息是否與接收到的數(shù)據(jù)一致,不一致時(shí)立即發(fā)送Recall反饋幀,通知PC平臺(tái)重傳全部數(shù)據(jù)。

    ⑤PC平臺(tái)端接到Recall后重傳數(shù)據(jù)。

    5 文件讀取

    文件頭部的讀寫是系統(tǒng)處理核心,主要依靠傳輸頭部文件函數(shù)boolCfileTrans::HandleHeader()傳輸文件頭信息,包括文件起始字符,硬件端信息,加密,用戶文件版本號(hào)及ID號(hào)。根據(jù)配置文件信息,選擇調(diào)用對(duì)應(yīng)的API對(duì)文件中的數(shù)據(jù)處理。讀取頭部文件函數(shù)bool CPCCANDlg::ReadFileHead(),順序讀取文件起始字符,讀取完成后選擇Infection文件的幀格式。

    struct LK HEADER Infineon

    //Infection文件某幀格式

    {

    unsigned char LENGTH;

    unsigned char FLASH_MSTART;

    unsigned char FLASH_LSTART;

    unsigned char SEQ;

    unsigned char LEFT;

    unsigned char CRC;

    unsigned short reserved;

    };

    幀頭部信息內(nèi)容包括幀長(zhǎng)度、幀寫入Flash首地址、幀序列號(hào)、后續(xù)幀個(gè)數(shù)、CRC校驗(yàn)碼。用戶選擇傳送文件目標(biāo)位置、郵箱ID,PC平臺(tái)將文件分裝成多幀,調(diào)用文件傳輸函數(shù)將幀逐次發(fā)送到CAN總線上,硬件端收到信號(hào)后,將響應(yīng)信號(hào)發(fā)到CAN總線上,監(jiān)聽信號(hào)函數(shù)接收CAN總線上數(shù)據(jù),包括命令及響應(yīng)信號(hào),執(zhí)行相應(yīng)處理分支。

    6 FLASH操作

    本軟件采用基于英飛凌XC886芯片的C語(yǔ)言編寫,XC886內(nèi)嵌用戶可編程的閃存( Flash)存儲(chǔ)器,F(xiàn)lash分區(qū)特性使每個(gè)扇區(qū)都可被獨(dú)立擦除。為了適應(yīng)芯片的存貯方式,地址從Ox0000開始存放中斷向量表,這樣可以執(zhí)行復(fù)位過(guò)程中的尋址。用戶上一次更新后的程序代碼放置在芯片端用戶程序區(qū),底層引導(dǎo)程序放置在引導(dǎo)區(qū)。在XC886芯片啟動(dòng)后程序?qū)ぶ返某跏嘉恢脤懸粭lLJMP長(zhǎng)跳轉(zhuǎn)指令,芯片啟動(dòng)后會(huì)先進(jìn)入引導(dǎo)區(qū)。

    測(cè)試結(jié)果:完善后經(jīng)過(guò)上千次軟件遠(yuǎn)程升級(jí)測(cè)試及軟件分支可靠性測(cè)試,未出現(xiàn)更新過(guò)程中故障,系統(tǒng)表現(xiàn)可靠。

    參考文獻(xiàn)

    [1]何賓,朱紅林,基于GPRS的DSP程序遠(yuǎn)程升級(jí)的研究與實(shí)現(xiàn)[J].計(jì)算工程與設(shè)計(jì),2010,31(15): 3390.

    [2]周立功.iCAN現(xiàn)場(chǎng)總線原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007:4— 7.

    [3]楊元挺,卓樹峰.基于CAN總線的遠(yuǎn)程升級(jí)系統(tǒng)[J],現(xiàn)代電子技術(shù),2009,32 (10): 83-86.

    辉南县| 华容县| 金山区| 蕉岭县| 军事| 济阳县| 阿勒泰市| 西盟| 牙克石市| 新建县| 永泰县| 忻城县| 合作市| 周口市| 罗山县| 子长县| 石城县| 丹东市| 龙门县| 舞钢市| 原平市| 平舆县| 高邮市| 曲靖市| 乐平市| 浙江省| 思南县| 贵南县| 巩留县| 安陆市| 南投县| 绍兴县| 怀集县| 略阳县| 于田县| 湾仔区| 左云县| 静海县| 山丹县| 延长县| 永兴县|