本發(fā)明屬于嵌入式應(yīng)用技術(shù)領(lǐng)域,具體涉及一種基于以太網(wǎng)更新ARM和DSP程序的方法。
背景技術(shù):
對(duì)于有多個(gè)處理器的裝置,其程序的更新最簡(jiǎn)便方法就是利用JTAG進(jìn)行燒寫(xiě),但在實(shí)際工程應(yīng)用中,產(chǎn)品交付后往往需要在不拆蓋的情況下對(duì)軟件程序進(jìn)行更新,所以遠(yuǎn)程在線升級(jí)功能是對(duì)產(chǎn)品設(shè)計(jì)的基本要求。
ARM通過(guò)和以太網(wǎng)相連可利用IAP(In Application Programming、在應(yīng)用編程)技術(shù)對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),而DSP無(wú)對(duì)外的通信軟件,遠(yuǎn)程在線程序更新不能通過(guò)JTAG來(lái)實(shí)現(xiàn),因?yàn)镴TAG線引到外面容易受到干擾而使程序跑飛。基于此,本發(fā)明提出了一種利用以太網(wǎng)對(duì)ARM和DSP進(jìn)行程序更新的方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種基于以太網(wǎng)更新ARM和DSP程序的方法,該程序更新方法具有速度快、可靠性高、操作方便特點(diǎn)。
為了解決上述技術(shù)問(wèn)題,本發(fā)明通過(guò)以下方式來(lái)實(shí)現(xiàn):
一種基于以太網(wǎng)更新ARM和DSP程序的方法,具體通過(guò)以下步驟來(lái)實(shí)現(xiàn):
1)上電;
2)STM32芯片上電后,進(jìn)入U(xiǎn)ser flash地址0x8000000處的Bootloader程序,檢查是否需要對(duì)應(yīng)用程序更新;
3)若選擇否,程序直接進(jìn)入ARM應(yīng)用程序,ARM正常啟動(dòng);若選擇是,程序則提供ARM APP或者DSP APP兩種選擇;
31)若選擇更新ARM APP程序,利用TFTP軟件通過(guò)以太網(wǎng)將PC機(jī)上bin格式的ARM APP程序?qū)懭氲経ser flash地址0x8010000中,完成ARM APP的程序更新操作;
32)若選擇更新DSP APP程序,首先利用TFTP軟件通過(guò)以太網(wǎng)將PC機(jī)上Hex格式的DSP APP程序?qū)懭氲経ser flash地址0x8090000中,完成DSP APP程序存儲(chǔ)操作;
4)待步驟32)結(jié)束后,重新上電,正常啟動(dòng)并進(jìn)入ARM APP程序,讀取存儲(chǔ)在User flash地址0x8090000的Hex格式的數(shù)據(jù),并將Hex格式轉(zhuǎn)換成bin格式,為了防止錯(cuò)誤或者遺漏,進(jìn)行總加和CRC檢驗(yàn)、幀總長(zhǎng)度以及可執(zhí)行程序的地址對(duì)比,確定DSP APP程序無(wú)誤后,通過(guò)SPI傳入DSP中并調(diào)用Flash API庫(kù)相關(guān)的函數(shù)功能,進(jìn)行擦除、燒寫(xiě)、校驗(yàn)功能,完成DSP APP程序更新操作。
與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果:
采用以太網(wǎng)更新程序可以避免接錯(cuò)而導(dǎo)致燒寫(xiě)器損壞或者處理器被鎖現(xiàn)象;不需拆蓋就可以完成程序更新,燒寫(xiě)方便;不需使用燒寫(xiě)器,工程維護(hù)方便。
附圖說(shuō)明
圖1為user flash地址分配示意圖;
圖2為ARM和DSP程序更新流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明通過(guò)ARM編寫(xiě)兩個(gè)項(xiàng)目代碼,第一個(gè)項(xiàng)目代碼不執(zhí)行正常的功能操作,通過(guò)以太網(wǎng)接收程序或數(shù)據(jù),對(duì)ARM或DSP進(jìn)行程序更新,這部分稱為Bootloader程序;第二個(gè)項(xiàng)目代碼為實(shí)現(xiàn)真正功能的代碼,稱為APP程序。DSP編寫(xiě)一個(gè)項(xiàng)目代碼,通過(guò)ARM的Bootloader程序存放在User Flash的部分區(qū)域。
如圖1~2所示,一種基于以太網(wǎng)更新ARM和DSP程序的方法,其具體方法步驟如下:
(1)ARM APP程序更新
本發(fā)明的ARM程序更新采用IAP技術(shù),STM32芯片上電后,程序首先進(jìn)入U(xiǎn)ser flash地址0x8000000處的Bootloader程序(Bootloader程序?yàn)橐龑?dǎo)程序,通過(guò)JTAG燒入),檢查是否需要對(duì)應(yīng)用程序更新,如果不需要更新,則直接進(jìn)入ARM應(yīng)用程序,ARM正常啟動(dòng);如果需要更新并選擇ARM APP更新鍵,利用TFTP軟件通過(guò)以太網(wǎng)將PC機(jī)上bin格式的ARM APP程序?qū)懭氲経ser flash地址0x8010000中,完成ARM APP的程序更新操作。
(2)DSP APP程序更新
STM32芯片上電后,程序首先進(jìn)入U(xiǎn)ser flash地址0x8000000處的Bootloader程序,檢測(cè)到需要存儲(chǔ)DSP APP后,利用TFTP軟件通過(guò)以太網(wǎng)將PC機(jī)上Hex格式的DSP APP程序?qū)懭氲経ser flash地址0x8090000中,完成DSP APP程序存儲(chǔ)操作后重新上電,正常啟動(dòng)并進(jìn)入ARM APP程序,讀取存儲(chǔ)在User flash地址0x8090000的Hex格式的數(shù)據(jù),并將Hex格式轉(zhuǎn)換成bin格式,為了防止錯(cuò)誤或者遺漏,進(jìn)行總加和CRC檢驗(yàn)、幀總長(zhǎng)度以及可執(zhí)行程序的地址對(duì)比,確定DSP APP程序無(wú)誤后,通過(guò)SPI傳入DSP中,DSP調(diào)用Flash API庫(kù)相關(guān)的函數(shù)功能,進(jìn)行擦除、燒寫(xiě)、校驗(yàn)功能,完成DSP APP程序更新操作。
以上所述僅是本發(fā)明的實(shí)施方式,再次聲明,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn),這些改進(jìn)也列入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。