一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法
【專利摘要】本發(fā)明公開了一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法,包括下述步驟:上位機(jī)和彈載計(jì)算機(jī)通過串口建立通信;上位機(jī)軟件按照通訊協(xié)議將編譯器生成的bin文件通過串口發(fā)送給彈載計(jì)算機(jī);彈載計(jì)算機(jī)將接收到的每包數(shù)據(jù)進(jìn)行校驗(yàn)和計(jì)算,正確則寫入flash中的臨時(shí)扇區(qū)暫存;所有數(shù)據(jù)接收并寫入臨時(shí)flash扇區(qū)后,計(jì)算總校驗(yàn)和,正確則寫入正式flash扇區(qū),對(duì)彈載計(jì)算機(jī)重新上電,軟件更新完成。本發(fā)明通過彈載計(jì)算機(jī)已有串口對(duì)軟件升級(jí),避免了通過仿真器升級(jí)時(shí),需要拆裝結(jié)構(gòu)件的麻煩。同時(shí),通過計(jì)算不同數(shù)據(jù)集校驗(yàn)和來保證數(shù)據(jù)傳輸和存儲(chǔ)的正確性;系統(tǒng)UPS電源和邏輯控制模塊可防止因斷電和外部復(fù)位而導(dǎo)致的升級(jí)失效。
【專利說明】一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于彈載計(jì)算機(jī)軟件更新【技術(shù)領(lǐng)域】,更具體地,涉及一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法。
【背景技術(shù)】
[0002]在實(shí)際的工程應(yīng)用中,彈載計(jì)算機(jī)上DSP(digital signal processor,數(shù)字信號(hào)處理器)軟件的更新需要通過仿真器將上位機(jī)和彈載計(jì)算機(jī)板JTAGCJoint Test Act1nGroup,聯(lián)合測(cè)試行動(dòng)小組)接口相連,將DSP的開發(fā)軟件Code Compose Stud1 (CCS,代碼調(diào)式器)生成的可執(zhí)行文件(*.bin)通過專門的燒寫程序下載到彈載計(jì)算機(jī)flash的相應(yīng)扇區(qū)中。但是在產(chǎn)品研制后期,彈載計(jì)算機(jī)往往被安裝在密閉的結(jié)構(gòu)件中,仿真器無法直接與JTAG相連。在此種情況下,要進(jìn)行軟件更新時(shí),必須拆下結(jié)構(gòu)件才能連接仿真器對(duì)軟件進(jìn)行更新,操作極為不便,工作效率極低。
【發(fā)明內(nèi)容】
[0003]針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法,旨在解決現(xiàn)有技術(shù)中對(duì)彈載計(jì)算機(jī)軟件更新費(fèi)時(shí)、費(fèi)力、工作效率低的技術(shù)問題。
[0004]本發(fā)明提供的基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法,包括下述步驟:
[0005](I)上位機(jī)和彈載計(jì)算機(jī)通過串口建立通信;
[0006](2)上位機(jī)軟件將編譯器生成的目標(biāo)程序文件以分包數(shù)據(jù)方式通過串口發(fā)送給彈載計(jì)算機(jī);
[0007](3)彈載計(jì)算機(jī)對(duì)接收到的每個(gè)數(shù)據(jù)包進(jìn)行校驗(yàn)和計(jì)算,正確則寫入flash中的臨時(shí)扇區(qū)暫存;
[0008](4)所有數(shù)據(jù)包接收并寫入臨時(shí)flash扇區(qū)后,計(jì)算所有數(shù)據(jù)的總校驗(yàn)和,并和上位機(jī)軟件發(fā)送的總校驗(yàn)和相比判斷二者是否一致,若一致則將所有數(shù)據(jù)包寫入正式flash扇區(qū),對(duì)彈載計(jì)算機(jī)重新上電,軟件更新完成。
[0009]更進(jìn)一步地,在所述步驟S2之前,還包括:
[0010]上位機(jī)向彈載計(jì)算機(jī)發(fā)送軟件上傳請(qǐng)求,并發(fā)送目標(biāo)程序文件(*.bin)的數(shù)據(jù)長(zhǎng)度和扇區(qū)數(shù);
[0011]彈載計(jì)算機(jī)在接收到軟件上傳請(qǐng)求后,首先申請(qǐng)一個(gè)扇區(qū)長(zhǎng)度的緩沖區(qū);若緩沖區(qū)申請(qǐng)成功,則繼續(xù)后續(xù)接收目標(biāo)程序文件的步驟;若緩沖區(qū)申請(qǐng)不成功,則軟件更新過程終止。
[0012]更進(jìn)一步地,所述每個(gè)數(shù)據(jù)包的有效數(shù)據(jù)最長(zhǎng)為32字節(jié),并在每個(gè)數(shù)據(jù)包加上2字節(jié)的校驗(yàn)數(shù)據(jù),彈載計(jì)算機(jī)每接收一個(gè)數(shù)據(jù)包,即計(jì)算該數(shù)據(jù)包的校驗(yàn)和,并同該數(shù)據(jù)包的2字節(jié)的校驗(yàn)數(shù)據(jù)進(jìn)行比較,相同則繼續(xù)接收,否則終止更新。
[0013]更進(jìn)一步地,在所有步驟開始之前,通過邏輯模塊關(guān)閉DSP外部復(fù)位源以及不必要的中斷源,防止在軟件升級(jí)過程中因外部復(fù)位導(dǎo)致升級(jí)失效;并且,通過UPS電源持續(xù)對(duì)彈載計(jì)算機(jī)供電,防止升級(jí)程序時(shí)因意外斷電寫入失敗導(dǎo)致系統(tǒng)崩潰。
[0014]本發(fā)明利用串口對(duì)彈載計(jì)算機(jī)軟件進(jìn)行更新,按照通訊協(xié)議,上位機(jī)發(fā)送軟件更新文件數(shù)據(jù)到彈載計(jì)算機(jī)板,彈載計(jì)算機(jī)計(jì)算每一包的校驗(yàn)和之后,將新軟件首先寫入到臨時(shí)flash扇區(qū)。軟件全部接受完畢后,再讀出臨時(shí)flash扇區(qū)中的程序數(shù)據(jù)計(jì)算校驗(yàn)和,若和上位機(jī)發(fā)送的校驗(yàn)和一致,再將臨時(shí)flash扇區(qū)中的程序讀出,寫入到正式flash扇區(qū)中。同樣,再次讀出正式flash扇區(qū)中的程序數(shù)據(jù),計(jì)算校驗(yàn)和,若何上位機(jī)發(fā)送的校驗(yàn)和一致,則表明軟件更新成功。上述的多重校驗(yàn)過程,充分保證了上傳軟件的正確性。此外,在軟件更新完成之后,必須對(duì)彈載計(jì)算機(jī)板重新上電,以加載新程序。
【專利附圖】
【附圖說明】
[0015]圖1為本發(fā)明提供的基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法流程圖;
[0016]圖2為本發(fā)明一具體實(shí)施例中基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新流程圖;
[0017]圖3為本發(fā)明實(shí)施過程中對(duì)flash扇區(qū)存儲(chǔ)內(nèi)容劃分圖。
【具體實(shí)施方式】
[0018]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0019]本發(fā)明提供的基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法是以彈載計(jì)算機(jī)板上的通信串口作為通道,對(duì)彈上DSP軟件進(jìn)行更新。在實(shí)際的工程應(yīng)用中,彈載計(jì)算機(jī)上DSP軟件的更新需要通過仿真器將上位機(jī)和彈載計(jì)算機(jī)板JTAG接口相連,將DSP的開發(fā)軟件CCS生成的可執(zhí)行文件(*.bin)通過專門的燒寫程序下載到彈載計(jì)算機(jī)flash的相應(yīng)扇區(qū)中。但是在產(chǎn)品研制后期,彈載計(jì)算機(jī)往往被安裝在密閉的結(jié)構(gòu)件中,仿真器無法與JTAG直接相連。在此種情況下,要進(jìn)行軟件更新,必須拆下結(jié)構(gòu)件才能連接仿真器對(duì)軟件進(jìn)行更新,操作極為不便,工作效率極低。
[0020]針對(duì)上述方法的弊端,本發(fā)明提供了一種方便快捷、穩(wěn)妥可靠的軟件更新方法,只需通過彈載計(jì)算機(jī)已有的串口通信電纜,即可實(shí)現(xiàn)軟件更新,
[0021]圖1為本發(fā)明提供的基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法流程圖,如圖1所示,本發(fā)明方法包括:
[0022](I)上位機(jī)和彈載計(jì)算機(jī)通過串口建立通信;
[0023](2)上位機(jī)軟件將編譯器生成的目標(biāo)程序文件以分包數(shù)據(jù)方式通過串口發(fā)送給彈載計(jì)算機(jī);
[0024](3)彈載計(jì)算機(jī)對(duì)接收到的每個(gè)數(shù)據(jù)包進(jìn)行校驗(yàn)和計(jì)算,正確則寫入flash中的臨時(shí)扇區(qū)暫存;
[0025](4)所有數(shù)據(jù)包接收并寫入臨時(shí)flash扇區(qū)后,計(jì)算所有數(shù)據(jù)的總校驗(yàn)和,并和上位機(jī)軟件發(fā)送的總校驗(yàn)和相比判斷二者是否一致,若一致則將所有數(shù)據(jù)包寫入正式flash扇區(qū),對(duì)彈載計(jì)算機(jī)重新上電,軟件更新完成。
[0026]圖2為本發(fā)明一具體實(shí)施例中基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新流程圖,如圖2所示,本實(shí)施例具體為:
[0027]上位機(jī)在和彈載計(jì)算機(jī)建立通信之后,向彈載計(jì)算機(jī)發(fā)送軟件上傳指令,同時(shí)送達(dá)的還有目標(biāo)程序文件(*.bin)的數(shù)據(jù)長(zhǎng)度和扇區(qū)數(shù)。彈載計(jì)算機(jī)在接收到軟件上傳請(qǐng)求后,首先計(jì)算上傳軟件數(shù)據(jù)的總包數(shù),以控制傳輸次數(shù)。延時(shí)20ms后,申請(qǐng)4KB,即一個(gè)扇區(qū)長(zhǎng)度的緩沖區(qū)。若申請(qǐng)成功,則開始接受新軟件的數(shù)據(jù)。按照通訊協(xié)議,每包的有效數(shù)據(jù)最長(zhǎng)為32字節(jié),并在數(shù)據(jù)包加上2字節(jié)的校驗(yàn)數(shù)據(jù)。彈載計(jì)算機(jī)每接收一包數(shù)據(jù),即計(jì)算校驗(yàn)和,同上述2字節(jié)的校驗(yàn)數(shù)據(jù)進(jìn)行比較,相同則繼續(xù)接收,否則終止更新。
[0028]接收的當(dāng)前扇區(qū)所有有效數(shù)據(jù)存放在4KB的緩沖區(qū)中,待接收完一個(gè)扇區(qū)的數(shù)據(jù)之后,計(jì)算臨時(shí)flash扇區(qū)中當(dāng)前數(shù)據(jù)應(yīng)存儲(chǔ)的起始地址,并將這些數(shù)據(jù)寫入以此地址開始的一個(gè)扇區(qū)中。以512K的flash芯片SST39VF040為例,其扇區(qū)數(shù)為128。根據(jù)軟件長(zhǎng)度,40個(gè)扇區(qū)將完全滿足程序數(shù)據(jù)的存儲(chǔ)需求,而I?40號(hào)扇區(qū)為正式程序存儲(chǔ)區(qū),因此,可以將65?104號(hào)扇區(qū)作為臨時(shí)flash扇區(qū),如圖3所示。
[0029]新程序所有數(shù)據(jù)上傳完畢后,彈載計(jì)算機(jī)接收上位機(jī)軟件發(fā)送的總校驗(yàn)和并存儲(chǔ),彈載計(jì)算機(jī)讀出臨時(shí)flash存儲(chǔ)區(qū)的所有程序數(shù)據(jù),計(jì)算校驗(yàn)和,和上述總校驗(yàn)和比較,相同則進(jìn)行下一步,不同則終止軟件更新。
[0030]在上述校驗(yàn)和正確的情況下,將臨時(shí)flash扇區(qū)的新程序數(shù)據(jù)全部讀出,并逐一寫入正式程序存儲(chǔ)區(qū)。同樣,再將正式存儲(chǔ)區(qū)里的程序數(shù)據(jù)讀出,計(jì)算總校驗(yàn)和,和上位機(jī)發(fā)送的校驗(yàn)和比較,若相同,則表明軟件更新成功,否則,軟件更新失敗,需要連接仿真器燒寫程序才能恢復(fù)正常狀態(tài)。
[0031]軟件更新完成之后,彈載計(jì)算機(jī)需要重新上電,DSP才能加載新程序。
[0032]在本發(fā)明所述的實(shí)施流程之前,必須通過邏輯模塊關(guān)閉DSP外部復(fù)位源以及不必要的中斷源,防止在軟件升級(jí)過程中因外部復(fù)位導(dǎo)致升級(jí)失效;并且,通過UPS電源持續(xù)對(duì)彈載計(jì)算機(jī)供電,防止升級(jí)程序時(shí)因意外斷電寫入失敗導(dǎo)致系統(tǒng)崩潰。
[0033]本發(fā)明所述的實(shí)施流程中,要求對(duì)每一包上傳的數(shù)據(jù)包進(jìn)行校驗(yàn)、對(duì)臨時(shí)flash扇區(qū)寫入的程序數(shù)據(jù)進(jìn)行校驗(yàn)、對(duì)正式程序存儲(chǔ)區(qū)的程序數(shù)據(jù)進(jìn)行校驗(yàn),任何一步校驗(yàn)出錯(cuò),將終止更新軟件。正是經(jīng)過上述多重校驗(yàn)的檢驗(yàn),才保證了軟件上傳過程中數(shù)據(jù)的正確性以及新軟件的完整性。
[0034]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于串口進(jìn)行彈載計(jì)算機(jī)軟件更新的方法,其特征在于,包括下述步驟: (1)上位機(jī)和彈載計(jì)算機(jī)通過串口建立通信; (2)上位機(jī)軟件將編譯器生成的目標(biāo)程序文件以分包數(shù)據(jù)方式通過串口發(fā)送給彈載計(jì)算機(jī); (3)彈載計(jì)算機(jī)對(duì)接收到的每個(gè)數(shù)據(jù)包進(jìn)行校驗(yàn)和計(jì)算,正確則寫入flash中的臨時(shí)扇區(qū)暫存; (4)所有數(shù)據(jù)包接收并寫入臨時(shí)flash扇區(qū)后,計(jì)算所有數(shù)據(jù)的總校驗(yàn)和,并和上位機(jī)軟件發(fā)送的總校驗(yàn)和相比判斷二者是否一致,若一致則將所有數(shù)據(jù)包寫入正式flash扇區(qū),對(duì)彈載計(jì)算機(jī)重新上電,軟件更新完成。
2.如權(quán)利要求1所述的方法,其特征在于,在所述步驟S2之前,還包括: 上位機(jī)向彈載計(jì)算機(jī)發(fā)送軟件上傳請(qǐng)求,并發(fā)送目標(biāo)程序文件(*.bin)的數(shù)據(jù)長(zhǎng)度和扇區(qū)數(shù); 彈載計(jì)算機(jī)在接收到軟件上傳請(qǐng)求后,首先申請(qǐng)一個(gè)扇區(qū)長(zhǎng)度的緩沖區(qū);若緩沖區(qū)申請(qǐng)成功,則繼續(xù)后續(xù)接收目標(biāo)程序文件的步驟;若緩沖區(qū)申請(qǐng)不成功,則軟件更新過程終止。
3.如權(quán)利要求1所述的方法,其特征在于,所述每個(gè)數(shù)據(jù)包的有效數(shù)據(jù)最長(zhǎng)為32字節(jié),并在每個(gè)數(shù)據(jù)包加上2字節(jié)的校驗(yàn)數(shù)據(jù),彈載計(jì)算機(jī)每接收一個(gè)數(shù)據(jù)包,即計(jì)算該數(shù)據(jù)包的校驗(yàn)和,并同該數(shù)據(jù)包的2字節(jié)的校驗(yàn)數(shù)據(jù)進(jìn)行比較,相同則繼續(xù)接收,否則終止更新。
4.如權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,在所有步驟開始之前,關(guān)閉DSP外部復(fù)位源以及軟件中不必要的中斷源,并通過UPS電源持續(xù)對(duì)彈載計(jì)算機(jī)供電。
【文檔編號(hào)】G06F9/445GK104049996SQ201410233073
【公開日】2014年9月17日 申請(qǐng)日期:2014年5月29日 優(yōu)先權(quán)日:2014年5月29日
【發(fā)明者】邱耀明, 陳公仆, 吳旭亮, 何昱, 張朝陽(yáng) 申請(qǐng)人:湖北三江航天紅峰控制有限公司