亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于彈載嵌入式軟件在線更新方法研究

        2023-01-09 11:27:12張永鵬
        火控雷達(dá)技術(shù) 2022年4期
        關(guān)鍵詞:程序模塊程序代碼嵌入式軟件

        張永鵬

        (1.中國(guó)電子科技集團(tuán)公司第三十八研究所 合肥 230088; 2.孔徑陣列與空間探測(cè)安徽省重點(diǎn)實(shí)驗(yàn)室 合肥 230088)

        0 引言

        現(xiàn)有彈載產(chǎn)品中包含大量的DSP、FPGA等嵌入式模塊,在產(chǎn)品生產(chǎn)交付后,伴隨著產(chǎn)品功能、性能的升級(jí)改進(jìn),需要對(duì)內(nèi)部嵌入式軟件進(jìn)行更新。傳統(tǒng)嵌入式軟件一般采用專用編程線纜及相應(yīng)的仿真器連接芯片后對(duì)軟件進(jìn)行更新,此方法需專人操作且操作復(fù)雜、靈活性低[1-3]。

        本文以某彈載雷達(dá)嵌入式DSP芯片TMS320C6713(簡(jiǎn)稱C6713)為例,提供一種可靠性高、操作便捷的嵌入式軟件在線更新方法,實(shí)現(xiàn)彈載產(chǎn)品嵌入式軟件高效的軟件在線更新。此方法極大地提升了彈載產(chǎn)品軟件在線更新的可靠性、安全性和操作便捷性,具有良好的工程應(yīng)用價(jià)值。

        1 在線更新機(jī)理

        1.1 在線更新原理

        嵌入式軟件為了支持在線自更新任務(wù),需要在系統(tǒng)中單獨(dú)設(shè)計(jì)一個(gè)區(qū)別于正常工作程序模塊,專用于嵌入式軟件更新的在線更新程序模塊,如圖1所示。系統(tǒng)正常工作啟動(dòng)時(shí)通過BootLoader程序(即引導(dǎo)程序)選擇啟動(dòng)工作程序模塊,此時(shí)在線更新程序模塊處于阻塞狀態(tài),當(dāng)需要進(jìn)行軟件在線更新時(shí),工作程序模塊接收外部在線更新控制指令,完成在線更新狀態(tài)置位(FLASH地址“0x90070000”存儲(chǔ)在線更新標(biāo)識(shí)),同時(shí)嵌入式DSP軟件通過調(diào)用Jump(0)函數(shù),將嵌入式軟件重新轉(zhuǎn)入起始0地址開始執(zhí)行,即可實(shí)現(xiàn)進(jìn)行嵌入式DSP的自復(fù)位。復(fù)位后,自動(dòng)重新運(yùn)行BootLoader程序,此時(shí)BootLoader程序根據(jù)在線狀態(tài)啟動(dòng)在線更新程序模塊,此時(shí)可接收外部待更新的工作程序文件,并將程序文件寫入到工作程序模塊的FLASH儲(chǔ)存地址中,即可完成工作程序模塊的在線更新操作[4-7]。

        圖1 在線更新系統(tǒng)架構(gòu)示意圖

        1.2 自啟動(dòng)原理

        C6000系列沒有自帶的FLASH存儲(chǔ)器,需要通過EMIF總線與外擴(kuò)的FLASH儲(chǔ)存芯片進(jìn)行通信,因此將程序文件通過EMIF寫入到外擴(kuò)的FLASH中,系統(tǒng)上電復(fù)位后,再通過FLASH進(jìn)行引導(dǎo)自啟動(dòng),C6713啟動(dòng)時(shí)通過EDMA自動(dòng)將FLASH起始地址的前1KB內(nèi)容搬移到內(nèi)部的RAM中,并自動(dòng)執(zhí)行該段程序。基于C6713的啟動(dòng)機(jī)制,將BootLoader程序文件寫入FLASH的起始地址的前1 KB的地址區(qū)中,BootLoader程序主要功能是將FLASH中存放的在線更新程序或工作程序搬移到C6713的RAM/SDRAM中,再通過調(diào)用Jump()跳轉(zhuǎn)程序,跳轉(zhuǎn)到程序起始地址,即可執(zhí)行該段軟件程序[8-12]。

        2 軟件設(shè)計(jì)流程

        2.1 在線更新系統(tǒng)架構(gòu)

        基于高可靠、易操作的設(shè)計(jì)原則,C6713的軟件在線更新主要分為兩部分:第一部分為嵌入式軟件模塊,此模塊主要包含3個(gè)子程序模塊,分別為BootLoader程序模塊、在線更新程序模塊和工作程序模塊,主要實(shí)現(xiàn)C6713的嵌入式系統(tǒng)的引導(dǎo)、軟件在線更新及正常工作;第二部分為PC端可視化在線更新上位機(jī),主要完成軟件程序文件的生成及“一鍵式”嵌入式系統(tǒng)的軟件在線更新。

        如圖2所示,彈載嵌入式系統(tǒng)的軟件在線更新主要由可視化在線更新上位機(jī)、RS422串口通信模塊和嵌入式系統(tǒng)組成。可視化在線更新上位機(jī)通過RS422通信模塊與嵌入式系統(tǒng)進(jìn)行相互通信,完成在線更新指令和待更新程序文件的上傳等操作;嵌入式系統(tǒng)與可視化在線更新上位機(jī)進(jìn)行數(shù)據(jù)的交互,根據(jù)在線更新指令完成在線更新狀態(tài)的切換,并對(duì)接收程序數(shù)據(jù)文件的正確性、有效性進(jìn)行判斷,最終完成軟件程序文件的在線FLASH擦寫操作。

        圖2 在線更新系統(tǒng)架構(gòu)示意圖

        2.2 嵌入式軟件設(shè)計(jì)

        基于系統(tǒng)在線更新高可靠性、安全性的設(shè)計(jì)需求,將C6713外掛的軟件程序存儲(chǔ)FLASH劃分為4個(gè)獨(dú)立的程序區(qū),分別為BootLoader程序區(qū)、在線更新程序區(qū)和工作程序區(qū),其中工作程序區(qū)還分為當(dāng)前工作程序區(qū)和舊工作程序區(qū)。FLASH存儲(chǔ)區(qū)劃分如圖3所示,其中BootLoader程序區(qū)為64KB,在線更新程序區(qū)為320KB,前工作程序區(qū)和舊工作程序區(qū)均為736KB。

        圖3 FLASH存儲(chǔ)區(qū)劃分示意圖

        BootLoader程序區(qū)的前4KB存儲(chǔ)二級(jí)引導(dǎo)程序,該程序?qū)崿F(xiàn)將存儲(chǔ)在BootLoader程序區(qū)4KB~64KB的三級(jí)引導(dǎo)程序搬移到內(nèi)存中運(yùn)行,即實(shí)現(xiàn)了C6713的FLASH自啟動(dòng)。三級(jí)引導(dǎo)程序根據(jù)程序切換狀態(tài)將在線更新程序區(qū)或工作程序區(qū)的FLASH地址的代碼數(shù)據(jù)搬移到內(nèi)存中,再跳轉(zhuǎn)到相應(yīng)程序入口地址;在線更新程序區(qū)用于存儲(chǔ)在線更新程序模塊,該程序?qū)崿F(xiàn)與可視化在線更新上位機(jī)間的通信,并對(duì)工作程序區(qū)FLASH地址上存儲(chǔ)的工作程序代碼數(shù)據(jù)進(jìn)行擦寫操作;當(dāng)前工作程序區(qū)用于存儲(chǔ)最新版本的工作程序代碼數(shù)據(jù),用于嵌入式系統(tǒng)的正常工作使用;舊工作程序區(qū)用于存儲(chǔ)前一版本的工作程序代碼數(shù)據(jù),用于嵌入式系統(tǒng)工作程序的備份和異常情況工作程序版本恢復(fù)。

        同時(shí),在線更新程序僅可更新“當(dāng)前工作程序區(qū)”和“舊工作程序區(qū)”的程序數(shù)據(jù),不可更新“BootLoader程序區(qū)”和“在線更新程序區(qū)”的程序數(shù)據(jù),BootLoader程序和在線更新程序僅在出廠時(shí)進(jìn)行更新,以保障該兩段軟件程序代碼的正確性和完整性。在對(duì)“工作程序區(qū)”的代碼數(shù)據(jù)進(jìn)行更新過程中,將已存儲(chǔ)的于“當(dāng)前工作程序區(qū)”的前一版本的工作程序代碼數(shù)據(jù)向“舊工作程序區(qū)”進(jìn)行搬移,實(shí)現(xiàn)了工作程序代碼數(shù)據(jù)的備份,在工作程序更新失敗、代碼數(shù)據(jù)錯(cuò)誤、FLASH局部數(shù)據(jù)損壞等異常情況下,“當(dāng)前工作程序區(qū)”的代碼數(shù)據(jù)無法正常工作,在三級(jí)引導(dǎo)搬移當(dāng)前工作程序區(qū)數(shù)據(jù)時(shí),判斷程序數(shù)據(jù)異??芍匦掳嵋婆f工作程序區(qū)的備份代碼數(shù)據(jù),避免異常程序?qū)ο到y(tǒng)造成損壞。因此,通過對(duì)工作程序的備份設(shè)計(jì),可有效地提高系統(tǒng)的可靠性和安全性。

        2.2.1 BootLoader程序設(shè)計(jì)

        C6713復(fù)位后,通過EDMA自動(dòng)將存儲(chǔ)在FLASH起始地址的前1KB的BootLoader程序搬移到C6713內(nèi)部RAM中運(yùn)行,完成了C6713的FLASH的自啟動(dòng)及后續(xù)工作/在線更新程序的搬移和跳轉(zhuǎn)。

        BootLoader程序的設(shè)計(jì)流程如下:首先完成系統(tǒng)時(shí)鐘、EMIF總線及中斷等初始化;其次,通過EMIF讀取存儲(chǔ)在FLASH地址“0x90070000”的更新狀態(tài)標(biāo)識(shí)字,并對(duì)該地址的標(biāo)識(shí)字進(jìn)行有效性校驗(yàn);若該標(biāo)識(shí)有效則根據(jù)此有效標(biāo)識(shí)判斷本次進(jìn)入正常工作態(tài)或在線更新態(tài)若無效則進(jìn)入在線更新態(tài);若該標(biāo)識(shí)字無效,因在線更新軟件屬于出廠軟件,故則本次在線更新態(tài),并反饋相應(yīng)狀態(tài)。

        進(jìn)入正常工作態(tài)后,軟件執(zhí)行流程如下:

        1)首先讀取FLASH存儲(chǔ)器中“當(dāng)前工作程序區(qū)”的新版本程序代碼數(shù)據(jù),并對(duì)讀取的數(shù)據(jù)內(nèi)容進(jìn)行CRC32校驗(yàn),并與存儲(chǔ)的校驗(yàn)值進(jìn)行判斷;

        2)若新版本代碼數(shù)據(jù)有效,則將該代碼數(shù)據(jù)搬移到C6713中的RAM/SDRAM內(nèi)存中,并跳轉(zhuǎn)到該程序的入口地址上,執(zhí)行新版本的工作程序;

        3)若新版本代碼數(shù)據(jù)無效,則讀取FLASH存儲(chǔ)器中“舊工作程序區(qū)”的前一版本程序代碼數(shù)據(jù),并判斷數(shù)據(jù)內(nèi)容的有效性;

        4)若前一版本代碼數(shù)據(jù)有效,則將該代碼數(shù)據(jù)搬移到C6713中的RAM/SDRAM內(nèi)存中,并跳轉(zhuǎn)到該程序的入口地址上,執(zhí)行前一版本的工作程序;

        5)若前一版本代碼數(shù)據(jù)無效,則轉(zhuǎn)入在線更新態(tài)。

        進(jìn)入在線更新態(tài)后,軟件執(zhí)行流程如下:

        1)讀取FLASH存儲(chǔ)器中“在線更新程序區(qū)”的在線更新程序代碼數(shù)據(jù);

        2)將讀取的代碼數(shù)據(jù)搬移到C6713中的RAM/SDRAM內(nèi)存中,并跳轉(zhuǎn)到該程序的入口地址上,執(zhí)行在線更新程序。

        BootLoader程序執(zhí)行流程如圖4所示。

        圖4 BootLoader程序執(zhí)行流程

        2.2.2 在線更新程序設(shè)計(jì)

        在線更新程序通過與可視化在線更新上位機(jī)間進(jìn)行通信,接收上位機(jī)下傳的待更新代碼程序數(shù)據(jù),將接收到的完整、正確的程序代碼數(shù)據(jù)更新,并將前一版本的代碼數(shù)據(jù)進(jìn)行備份。為提高在線更新過程中的可靠性、安全性,對(duì)各個(gè)數(shù)據(jù)包進(jìn)行握手、重傳、校驗(yàn)等方式進(jìn)行處理;同時(shí),完成所有代碼數(shù)據(jù)的接收后,并對(duì)整個(gè)程序文件數(shù)據(jù)進(jìn)行特殊的CRC32位校驗(yàn),確保上傳程序數(shù)據(jù)文件的正確性和有效性;進(jìn)一步,對(duì)寫入FLASH地址的數(shù)據(jù)回讀后與待寫入的數(shù)據(jù)進(jìn)行對(duì)比,確保FLASH寫入數(shù)據(jù)的準(zhǔn)確。

        在線更新程序執(zhí)行流程如下:

        1)通過RS422串口采用“握手”方式與PC端的可視化在線更新上位機(jī)建立連接;

        2)通過握手、校驗(yàn)、重傳等方式接收可視化在線更新上位機(jī)下發(fā)的當(dāng)前程序文件的入口地址、長(zhǎng)度、文件特殊校驗(yàn)碼等信息,再通過分包形式接收程序代碼數(shù)據(jù),并將接收的數(shù)據(jù)存儲(chǔ)到SDRAM中進(jìn)行臨時(shí)存儲(chǔ);

        3)接收完所有代碼數(shù)據(jù)后,對(duì)接收的程序代碼文件進(jìn)行特殊校驗(yàn)碼校驗(yàn),并與存儲(chǔ)的特殊校驗(yàn)碼進(jìn)行判斷,判斷接收的代碼數(shù)據(jù)文件是否為該嵌入式軟件的程序,確保程序文件的正確性;

        4)對(duì)各個(gè)寫入到FLASH地址的數(shù)據(jù)進(jìn)行回讀,與待寫入的數(shù)據(jù)進(jìn)行比較,確認(rèn)寫入FLASH數(shù)據(jù)的一致性;

        5)將前一版本工作程序文件搬移到“舊工作程序區(qū)”進(jìn)行備份;

        6)完成所有操作后,更新FLASH地址“0x90070000”的更新狀態(tài)標(biāo)識(shí)字為正常工作態(tài),系統(tǒng)再次啟動(dòng)時(shí)可正常進(jìn)入最新版本工作程序。

        在線更新程序設(shè)計(jì)流程如圖5所示。

        圖5 在線更新程序執(zhí)行流程

        2.2.3 工作程序設(shè)計(jì)

        工作程序主要完成彈載嵌入式系統(tǒng)的正常工作。同時(shí),具備與可視化在線更新上位機(jī)間進(jìn)行通信,可接收上位機(jī)下發(fā)的在線更新指令,更新FLASH地址“0x90070000”的更新狀態(tài)標(biāo)識(shí)字為在線更新態(tài),再完成系統(tǒng)的自復(fù)位。

        2.3 可視化在線更新上位機(jī)設(shè)計(jì)

        C6713工作程序通過CCS編譯完成后生成的目標(biāo)文件類型為*.out和*.map文件,無法直接用于C6713的更新使用,需進(jìn)行格式轉(zhuǎn)換[13-16]。因此,可視化在線更新上位機(jī)實(shí)現(xiàn)了軟件程序文件的格式轉(zhuǎn)換及與嵌入式系統(tǒng)間的通信交互。

        軟件程序*.out和*.map文件轉(zhuǎn)換*.bin文件的處理流程如下:

        1)根據(jù)*.map文件獲取程序代碼RAM和SAMR存儲(chǔ)的長(zhǎng)度、主函數(shù)的入口地址等信息;

        2)將*.out文件通過hex6x.exe、*.cmd文件轉(zhuǎn)換到*.hex;(hex6x.exe為TI公司提供文件轉(zhuǎn)換可執(zhí)行程序;*.cmd文件負(fù)責(zé)C6713的內(nèi)存分配。)

        3)將*.hex轉(zhuǎn)換到*.bin文件,并計(jì)算軟件程序文件的特殊校驗(yàn)碼;

        4)將轉(zhuǎn)換后的*.bin、特殊校驗(yàn)碼和讀取的*.map文件中的信息拼接成最終可用于在線更新的*.bin文件。

        將最終生成好的*.bin文件采用“一鍵化”操作方式完成與嵌入式系統(tǒng)的信息交互,完成在線更新操作。具體流程如下:

        1)在“在線更新上位機(jī)”上選擇正確的COM串口,點(diǎn)擊“連接串口”,實(shí)現(xiàn)與嵌入式系統(tǒng)的通信;

        2)點(diǎn)擊“連接主控”,嵌入式軟件由正常工作程序切換更新狀態(tài)并進(jìn)行自復(fù)位,重新進(jìn)入BootLoader程序,并根據(jù)更新狀態(tài)啟動(dòng)在線更新程序;

        3)進(jìn)入在線更新程序后,回饋“在線更新上位機(jī)”已進(jìn)入在線更新態(tài);

        4)選擇待更新的程序文件,點(diǎn)擊“燒寫主控軟件”將數(shù)據(jù)上傳給嵌入式在線更新軟件;

        5)完成所有數(shù)據(jù)上傳后,發(fā)送FLASH燒寫指令給在線更新程序,在線更新程序完成待更新代碼數(shù)據(jù)的FLASH擦寫和程序備份操作。

        在線更新軟件流程和上位機(jī)界面如圖6、圖7所示。

        圖6 可視化在線更新上位機(jī)執(zhí)行流程

        圖7 可視化在線更新上位機(jī)界面

        3 結(jié)束語(yǔ)

        本文提供了一種高可靠性、安全性和操作簡(jiǎn)潔的嵌入式軟件在線更新方法,實(shí)現(xiàn)了彈載嵌入式軟件快速、便捷的在線更新。對(duì)彈載產(chǎn)品嵌入式模塊的在線更新帶來了極大便利,在實(shí)際工程項(xiàng)目中取得了良好的應(yīng)用效果,對(duì)其他嵌入式產(chǎn)品軟件在線更新具有一定的參考價(jià)值。

        猜你喜歡
        程序模塊程序代碼嵌入式軟件
        基于信息檢索的軟件缺陷定位方法綜述*
        樂高M(jìn)INDSTORMSEV3軟件程序模塊開發(fā)
        實(shí)時(shí)嵌入式軟件的測(cè)試技術(shù)
        基于Web網(wǎng)絡(luò)的環(huán)境信息通信系統(tǒng)設(shè)計(jì)
        計(jì)算機(jī)網(wǎng)絡(luò)信息安全未來發(fā)展趨勢(shì)
        ADSP TS201S Link口在多DSP系統(tǒng)中的應(yīng)用
        全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
        電子制作(2017年17期)2017-12-18 06:40:56
        基于圖元裝接模式由程序流程圖自動(dòng)生成源代碼
        軟件工程(2016年11期)2017-01-17 16:56:57
        基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計(jì)與實(shí)現(xiàn)
        航天嵌入式軟件浮點(diǎn)運(yùn)算誤差分析與控制
        又黄又硬又湿又刺激视频免费| 久久久久久亚洲AV成人无码国产| 亚洲黄色在线看| 天堂av在线一区二区| 亚洲精品国产av成拍| 公厕偷拍一区二区三区四区五区| 国产偷国产偷亚洲高清视频| 日本又色又爽又黄的a片18禁| 久久精品99久久香蕉国产| 色妞www精品视频| 国产精品久久无码免费看| 精品国产福利一区二区三区| 国产午夜三级精品久久久| 久久精品亚洲熟女av蜜謦| 真实人与人性恔配视频| 每天更新的免费av片在线观看| 中文字幕亚洲欧美日韩在线不卡| 91精品全国免费观看青青| 成人综合久久精品色婷婷| 美女福利一区二区三区在线观看 | 日韩人妻无码精品久久免费一| 中字幕久久久人妻熟女| 亚洲最大无码AV网站观看| 亚洲视频精品一区二区三区| 高清不卡一区二区三区| 99伊人久久精品亚洲午夜| 巨人精品福利官方导航| 国产大学生自拍三级视频| 中文字幕在线亚洲精品一区| 一边摸一边做爽的视频17国产| 少妇高潮喷水久久久影院| 亚洲AV综合久久九九| 一区在线播放| 日本免费精品免费视频| 日本护士口爆吞精视频| 妺妺窝人体色www看美女| 亚洲另类自拍丝袜第五页| 午夜天堂精品一区二区| 亚洲少妇一区二区三区老| 久久成人国产精品一区二区| 欧美日韩精品久久久久|