一種DSP的遠(yuǎn)程多加載方案設(shè)計(jì)
引言
芯片的燒寫與自加載是一個(gè)DSP系統(tǒng)能夠順利運(yùn)行的基本條件。在DSP加載技術(shù)方面已經(jīng)有大量文獻(xiàn)和工作成果,比較好地解決了DSP自加載方面的許多基本問題。而傳統(tǒng)的燒寫/加載方案在調(diào)試、更新程序時(shí)需要反復(fù)外接仿真器,配置跳線,并且只能加載運(yùn)行指定地址空間上的工程。這些對(duì)處于安裝調(diào)試階段的系統(tǒng)影響不大,但在諸如航天設(shè)備、大型機(jī)械或其他惡劣環(huán)境中工作,難以直接進(jìn)行仿真器連接的DSP系統(tǒng)中,無法采用普通的燒寫/加載方案對(duì)其進(jìn)行更新和調(diào)試。
通過分析DSP系統(tǒng)加載原理,提出了一種基于TI公司C6x芯片的遠(yuǎn)程多加載DSP系統(tǒng)設(shè)計(jì)。該系統(tǒng)由通信芯片、DSP、外部動(dòng)態(tài)存儲(chǔ)器、外部閃存(Flash)共同組成,具備遠(yuǎn)程燒寫、程序選擇加載功能。系統(tǒng)程序更新時(shí)也具備很高的安全性,即使燒寫過程中斷電,下次上電后仍然可以繼續(xù)燒入、運(yùn)行新的工程。
1 系統(tǒng)結(jié)構(gòu)
為了滿足功能設(shè)計(jì)需求,加載與燒寫系統(tǒng)除了包括DSP系統(tǒng)運(yùn)行必需的DSP芯片之外,還需要連接外部動(dòng)態(tài)存儲(chǔ)器(SDRAM)、可擦除存儲(chǔ)器(Flash)、通信芯片等。系統(tǒng)結(jié)構(gòu)如圖1所示。其中,通信芯片負(fù)責(zé)與遠(yuǎn)程控制端進(jìn)行數(shù)據(jù)交換,SDRAM中存放DSP工作用代碼和數(shù)據(jù),而負(fù)責(zé)引導(dǎo)實(shí)際工作工程的“引導(dǎo)工程”和負(fù)責(zé)實(shí)際信息處理任務(wù)的“工作工程”代碼數(shù)據(jù)分別存放于不同的Flash空間。
2 實(shí)現(xiàn)方案
首先簡(jiǎn)要說明C6x系列DSP的普通二次加載工程的引導(dǎo)原理。自加載模式的DSP上電初始時(shí),會(huì)從CE1空間起始地址(0x90000000)開始拷貝一定長(zhǎng)度(C671x系列為1 KB)的數(shù)據(jù)到內(nèi)部存儲(chǔ)器0地址,并從0地址開始執(zhí)行程序。由于拷貝數(shù)據(jù)長(zhǎng)度有限,通常情況下一個(gè)長(zhǎng)度大于1 KB的自加載工程需要進(jìn)行二次加載操作,因此該工程必須包含一個(gè)長(zhǎng)度小于1 KB的Bootloader模塊,該模塊由進(jìn)行二次加載數(shù)據(jù)搬移操作的代碼構(gòu)成。工程編譯完成后,Bootloader模塊被燒寫在Flash最開頭的1 KB地址空間內(nèi),系統(tǒng)上電復(fù)位后由DSP自動(dòng)搬運(yùn)到0~1 KB地址空間內(nèi)執(zhí)行(第一次加載),并由該模塊進(jìn)行其他數(shù)據(jù)段的數(shù)據(jù)搬移(第二次加載)。在數(shù)據(jù)搬移結(jié)束后Bootloader模塊將PC指針跳轉(zhuǎn)到_c_int00地址段,并最終進(jìn)入主函數(shù),開始整個(gè)工程的運(yùn)行。整個(gè)自加載過程如圖2所示。
顯然,只有存放在DSP CE1空間最前端的數(shù)據(jù)才能被自動(dòng)加載和運(yùn)行。為了使系統(tǒng)上電時(shí)刻就具備通信、燒寫和多引導(dǎo)功能,需要將具備上述功能的引導(dǎo)工程存放在CE1基地址開始的空間。
DSP多引導(dǎo)技術(shù)正是在普通DSP系統(tǒng)的加載技術(shù)基礎(chǔ)上發(fā)展而來的,將具備引導(dǎo)、通信、燒寫、存儲(chǔ)器檢糾錯(cuò)功能的工程作為引導(dǎo)工程獨(dú)立存儲(chǔ)在DSP CE1空間,由DSP自動(dòng)加載運(yùn)行;而將具備不同功能的應(yīng)用程序代碼分別存儲(chǔ)在其他存儲(chǔ)器,等待引導(dǎo)工程根據(jù)功能需要去加載。
引導(dǎo)工程由DSP自動(dòng)運(yùn)行,隨后根據(jù)遠(yuǎn)程指令或按預(yù)定程序流程的執(zhí)行通信、更新工作工程代碼,或搬運(yùn)并運(yùn)行存儲(chǔ)在其他空間工作工程內(nèi)的Bootloader段,從而引導(dǎo)不同功能的工作工程運(yùn)行。借助這種工程分離運(yùn)行技術(shù),可以通過遠(yuǎn)程端或自動(dòng)對(duì)空間電子設(shè)備存儲(chǔ)器中的代碼進(jìn)行更新、檢糾錯(cuò)和加載操作,甚至進(jìn)行多個(gè)工作工程的切換以滿足不同應(yīng)用背景下的功能需求;即使在更新或切換過程中出現(xiàn)故障,系統(tǒng)復(fù)位后仍可回到正常工作的引導(dǎo)工程中進(jìn)行系統(tǒng)維護(hù)或重新更新,具備防燒寫功能。
評(píng)論