摘 要: 對于多核DSP應用技術來說,BootLoad技術是一個關鍵點,也是應用難點之一。針對8核高性能DSP——TMS320C6678的根配置問題進行了研究,包括上電加載過程,單核和多核的emif NOR?FLASH存儲器的映像文件的產生,二級加載器的編寫和FLASH編程器的構成等。其中,關鍵是在多核映像文件中,將輔助核的入口地址作為特殊數據來處理,使其他核觸發更容易,這也是其他文獻未涉及的。該項技術已經用在某圖像處理系統中。
關鍵詞: 多核DSP; TMS320C6678; BootLoad; 映像文件
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)18?0111?04
0 引 言
在視頻檢測、醫療影像及紅外圖像快速跟瞄系統應用中,越來越復雜的二維、三維甚至四維的圖像處理,需要并行化的處理系統,并能夠運行復雜的算法[1?8]。要實現這些復雜的系統,高端FPGA+高性能DSP是目前普遍采用的方案[5?6,8],而單個DSP的性能已發展至極限,所以解決復雜的并行算法,多核DSP是現在發展的全新方向,其中多核DSP的根加載技術是其難點之一[7,9?10]。
TI公司推出的DSP芯片TMS320C6678(C6678)具有8個內核的高性能DSP,每個內核工作頻率均達1 GHz。其支持的Boot模式有SPI、I2C、EMAC、SRIO和并口Emif16 NOR?FLASH。其中Emif16 NOR?FLASH模式是不用上位機參與、比較簡單、獨立成系統的一種,大多獨立DSP系統采用該方式。
關于多核的加載,也有相關的文獻報道[9],而文獻[9]是DSP+ARM的雙核。網上也能搜索到關于C6472和C6678零星一些加載資料,都是借助于第三方轉換工具,太過于籠統。下面是針對C6678的并口Emif16 NOR?FLASH的上電加載作詳細的探討。
1 C6678的上電加載過程
所謂上電加載(上電自舉),即是當DSP復位后,正常運行用戶程序之前運行的一段小程序,就像PC機的BIOS一樣。多核加載同單核加載區別很大,不但要負責主核的加載而且還有其他核的加載與激活。C6678的Emif16 NOR?FLASH可以直接執行程序(XIP)(這與C641x系列DSP不同),其上電加載過程示于圖1。
上電復位后,DSP首先運行固化在片上ROM位于地址0x20b00000的程序,稱為片上Loader,片上Loader根據DSP硬件管腳狀態,判斷用戶采用的Boot模式以跳轉到相應模式的二級加載程序。如圖1的Emif16 NOR?FLASH模式中,運行片上Loader后, PC指針直接指向NOR?FLASH首地址0x70000000并開始執行FLASH上的二級Loader程序,二級Loader存儲在FLASH開始地址0x70000000~0x70000400的范圍內。從0x70000400開始保存應用程序的根表數據(即被燒燒寫到FLASH中的應用程序的數據)。二級Loader的功能是將保存在FLASH中的Core0~Core7的根表數據搬移到DSP相應的地址段內,搬移完后,二級Loader程序PC指針跳到Core0的主程序入口地址_c_int00處,開始執行Core0的應用程序。在Core0的應用程序開始加有使其他核激活運行的代碼(這也是有別于單核的特殊之處),至此整個多核加載就此完成。事實上,如果你的應用程序很小,且運行速度要求不高,圖1中的2、3和4過程都可以不要,只要把應用程序的原始代碼數據燒寫到FLASH從0x70000000開始的位置,上電正常運行即可(這在C641x上是不行的),如此DSP的許多高性能就體現不出來,且多核工程大多采用嵌入式sysbios工程,占用存儲器比較大,所以正常的Boot過程必須采用圖1所示的二級加載過程。
從圖1中看出,一個完整多核加載過程,開發者需要做的是二級加載器Loader的編寫、FLASH中映像文件的產生、FLASH燒寫器的編寫,主核對各輔助核的觸發代碼的編寫(被加載的應用程序不在本范圍內)。
2 多核映像文件的組成與產生
映像文件就是用戶要燒寫到外部FLASH上的全部數據文件,它是由二級加載器Loader的代碼數據(在文件前部)和應用程序的根表(Boot Table)數據(文件后部)的合成數據文件。單核和多核的二級Loader都一樣,區別就是后部的根表數據。根表是應用程序的所有代碼和數據以在片上占用的地址來分段存儲的數據包,包的第一個4 B是main()函數的入口地址_C_int00,后面由若干數據段組成,每個段前4 B為該段數據的字節長度Byte_count_x(x為段序號),接著4 B Address_x為該段在片上的存儲地址,后面是Byte_count_x個字節的具體數據Data_x。所有數據段結束后是4個字節0作為根表的結束標記。該根表格式如表1所示。每一個段的數據字節數可能不是4的整數倍,根表中數據區就在后面添0按4 B的整數倍向上取整,故整個根表文件字節數必是4的整數倍。
4 輔助核的觸發
多核的加載,如果圖1中僅僅只是進入Core0的_C_int00地址運行而其他核還未激活,加載仍然是失敗的。輔助核的觸發,必須兩個條件,一是將各核工程的入口地址_C_int00寫到各核的Boot Magic Address處;二是向各核的核間中斷觸發寄存器IPCx (1 5 結 語 多核DSP加載是一項比較復雜但又很重要的過程[7,9?10],也是多核技術的應用難點之一,一個多核DSP開發人員,如果要成功走向應用,上電加載這一關是必須要過的。各核的應用工程可以是輸出elf格式sysbios工程,也可以不是sysbios工程。上面的多核Emif16 NOR?FLASH加載方法,在自研的C6678圖像信號處理系統中已成功加載。 參考文獻 [1] 汪東,陳書明.一種面向異構多核DSP 的數據流傳輸控制引擎設計與評測[J].國防科技大學學報,2009(5):19?23. [2] 方幸福,梁利平.一種適用于多核DSP 片外擴展的網絡接口的設計[J].微電子學與計算機,2010(5):9?13. [3] 徐力,史少波,王沁.面向SDR應用的多核DSP低功耗設計[J].電子科技大學學報,2012,41(1):136?141. [4] 孫科林,周維超,吳欽章,等.光纖實時傳輸的多核DSP 圖像處理系統[J].光電工程,2012,39(4):136?144. [5] 李樂,熊志輝,王斌,等.DSP+FPGA 折反射全景視頻處理系統中雙核高速數據通信[J].電子與信息學報,2010,32(3):649?654. [6] 劉章文,盧朝政,張生帥,等.基于數字復制和數字上變頻的高速信號的產生[J].電子技術應用,2012,38(8):73?75. [7] 王旭智,張懷柱,宋建中.TMS320VC5416在系統并行引導的研究與實現[J].電子器件,2007,30(1):248?251. [8] 穆文爭,朱德智.基于FGPA和DSP的雷達模目信號設計[J].現代電子技術,2011,34(11):13?15. [9] 劉慧,林海虹,劉智.多核DSP的BootLoader程序的實現[J].電子技術應用,2003,29(6):72?74. [10] 張棟,閆達遠,趙博.Blackfin系統自舉引導過程中的多應用程序管理[J].現代電子技術,2007,30(18):70?72.