0 引言
在視頻檢測、醫(yī)療影像及紅外圖像快速跟瞄系統(tǒng)應(yīng)用中,越來越復(fù)雜的二維、三維甚至四維的圖像處理,需要并行化的處理系統(tǒng),并能夠運(yùn)行復(fù)雜的算法。要實(shí)現(xiàn)這些復(fù)雜的系統(tǒng),高端FPGA+高性能DSP是目前普遍采用的方案,而單個(gè)DSP的性能已發(fā)展至極限,所以解決復(fù)雜的并行算法,多核DSP是現(xiàn)在發(fā)展的全新方向,其中多核DSP的根加載技術(shù)是其難點(diǎn)之一。
TI公司推出的DSP芯片TMS320C6678(C6678)具有8個(gè)內(nèi)核的高性能DSP,每個(gè)內(nèi)核工作頻率均達(dá)1GHz。
其支持的Boot 模式有SPI、I2C、EMAC、SRIO 和并口Emif16 NOR-FLASH.其中Emif16 NOR-FLASH模式是不用上位機(jī)參與、比較簡單、獨(dú)立成系統(tǒng)的一種,大多獨(dú)立DSP系統(tǒng)采用該方式。
網(wǎng)上能搜索到關(guān)于C6472和C6678零星一些加載資料,都是借助于第三方轉(zhuǎn)換工具,太過于籠統(tǒng)。下面是針對C6678 的并口Emif16NOR-FLASH的上電加載作詳細(xì)的探討。
1 C6678 的上電加載過程
所謂上電加載(上電自舉),即是當(dāng)DSP復(fù)位后,正常運(yùn)行用戶程序之前運(yùn)行的一段小程序,就像PC機(jī)的BIOS 一樣。多核加載同單核加載區(qū)別很大,不但要負(fù)責(zé)主核的加載而且還有其他核的加載與激活。C6678的Emif16 NOR-FLASH 可以直接執(zhí)行程序(XIP)(這與C641x系列DSP不同),其上電加載過程示于圖1.
上電復(fù)位后,DSP 首先運(yùn)行固化在片上ROM 位于地址0x20b00000 的程序,稱為片上Loader,片上Loader根據(jù)DSP硬件管腳狀態(tài),判斷用戶采用的Boot模式以跳轉(zhuǎn)到相應(yīng)模式的二級加載程序。如圖1的Emif16 NOR-FLASH 模式中,運(yùn)行片上Loader 后,PC 指針直接指向NOR-FLASH 首地址0×70000000 并開始執(zhí)行FLASH 上的二級Loader 程序,二級Loader 存儲在FLASH 開始地址0×70000000~0×70000400 的范圍內(nèi)。從0×70000400開始保存應(yīng)用程序的根表數(shù)據(jù)(即被燒燒寫到FLASH中的應(yīng)用程序的數(shù)據(jù))。二級Loader的功能是將保存在FLASH中的Core0~Core7的根表數(shù)據(jù)搬移到DSP相應(yīng)的地址段內(nèi),搬移完后,二級Loader 程序PC 指針跳到Core0的主程序入口地址_c_int00處,開始執(zhí)行Core0的應(yīng)用程序。在Core0 的應(yīng)用程序開始加有使其他核激活運(yùn)行的代碼(這也是有別于單核的特殊之處),至此整個(gè)多核加載就此完成。事實(shí)上,如果你的應(yīng)用程序很小,且運(yùn)行速度要求不高,圖1中的2、3和4過程都可以不要,只要把應(yīng)用程序的原始代碼數(shù)據(jù)燒寫到FLASH從0×70000000 開始的位置,上電正常運(yùn)行即可(這在C641x 上是不行的),如此DSP 的許多高性能就體現(xiàn)不出來,且多核工程大多采用嵌入式sysbios工程,占用存儲器比較大,所以正常的Boot過程必須采用圖1所示的二級加載過程。
從圖1 中看出,一個(gè)完整多核加載過程,開發(fā)者需要做的是二級加載器Loader 的編寫、FLASH 中映像文件的產(chǎn)生、FLASH燒寫器的編寫,主核對各輔助核的觸發(fā)代碼的編寫(被加載的應(yīng)用程序不在本范圍內(nèi))。