當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]0 引言在視頻檢測(cè)、醫(yī)療影像及紅外圖像快速跟瞄系統(tǒng)應(yīng)用中,越來(lái)越復(fù)雜的二維、三維甚至四維的圖像處理,需要并行化的處理系統(tǒng),并能夠運(yùn)行復(fù)雜的算法。要實(shí)現(xiàn)這些復(fù)雜的系

0 引言

在視頻檢測(cè)、醫(yī)療影像及紅外圖像快速跟瞄系統(tǒng)應(yīng)用中,越來(lái)越復(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á)1 GHz。

其支持的Boot 模式有SPI、I2C、EMAC、SRIO 和并口Emif16 NOR-FLASH。其中Emif16 NOR-FLASH模式是不用上位機(jī)參與、比較簡(jiǎn)單、獨(dú)立成系統(tǒng)的一種,大多獨(dú)立DSP系統(tǒng)采用該方式。

網(wǎng)上能搜索到關(guān)于C6472和C6678零星一些加載資料,都是借助于第三方轉(zhuǎn)換工具,太過(guò)于籠統(tǒng)。下面是針對(duì)C6678 的并口Emif16NOR-FLASH的上電加載作詳細(xì)的探討。

1 C6678 的上電加載過(guò)程

所謂上電加載(上電自舉),即是當(dāng)DSP復(fù)位后,正常運(yùn)行用戶程序之前運(yùn)行的一段小程序,就像PC機(jī)的BIOS 一樣。多核加載同單核加載區(qū)別很大,不但要負(fù)責(zé)主核的加載而且還有其他核的加載與激活。C6678的Emif16 NOR-FLASH 可以直接執(zhí)行程序(XIP)(這與C641x系列DSP不同),其上電加載過(guò)程示于圖1。

上電復(fù)位后,DSP 首先運(yùn)行固化在片上ROM位于地址0x20b00000的程序,稱(chēng)為片上Loader,片上Loader根據(jù)DSP硬件管腳狀態(tài),判斷用戶采用的Boot 模式以跳轉(zhuǎn)到相應(yīng)模式的二級(jí)加載程序。如圖1的 Emif16 NOR-FLASH模式中,運(yùn)行片上Loader后,PC指針直接指向NOR-FLASH首地址0×70000000并開(kāi)始執(zhí)行FLASH上的二級(jí) Loader程序,二級(jí)Loader存儲(chǔ)在FLASH開(kāi)始地址0×70000000~0×70000400的范圍內(nèi)。從0×70000400開(kāi)始保存應(yīng)用程序的根表數(shù)據(jù)(即被燒燒寫(xiě)到FLASH中的應(yīng)用程序的數(shù)據(jù))。二級(jí)Loader的功能是將保存在 FLASH中的Core0~Core7的根表數(shù)據(jù)搬移到DSP相應(yīng)的地址段內(nèi),搬移完后,二級(jí)Loader程序PC指針跳到Core0的主程序入口地址 _c_int00處,開(kāi)始執(zhí)行Core0的應(yīng)用程序。在Core0的應(yīng)用程序開(kāi)始加有使其他核激活運(yùn)行的代碼(這也是有別于單核的特殊之處),至此整個(gè)多核加載就此完成。事實(shí)上,如果你的應(yīng)用程序很小,且運(yùn)行速度要求不高,圖1中的2、3和4過(guò)程都可以不要,只要把應(yīng)用程序的原始代碼數(shù)據(jù)燒寫(xiě)到FLASH 從0×70000000開(kāi)始的位置,上電正常運(yùn)行即可(這在C641x 上是不行的),如此DSP 的許多高性能就體現(xiàn)不出來(lái),且多核工程大多采用嵌入式sysbios工程,占用存儲(chǔ)器比較大,所以正常的Boot過(guò)程必須采用圖1所示的二級(jí)加載過(guò)程。

從圖1中看出,一個(gè)完整多核加載過(guò)程,開(kāi)發(fā)者需要做的是二級(jí)加載器Loader的編寫(xiě)、FLASH中映像文件的產(chǎn)生、FLASH燒寫(xiě)器的編寫(xiě),主核對(duì)各輔助核的觸發(fā)代碼的編寫(xiě)(被加載的應(yīng)用程序不在本范圍內(nèi))。

 

2 多核映像文件的組成與產(chǎn)生

映像文件就是用戶要燒寫(xiě)到外部FLASH上的全部數(shù)據(jù)文件,它是由二級(jí)加載器Loader的代碼數(shù)據(jù)(在文件前部)和應(yīng)用程序的根表(Boot Table)數(shù)據(jù)(文件后部)的合成數(shù)據(jù)文件。單核和多核的二級(jí)Loader 都一樣,區(qū)別就是后部的根表數(shù)據(jù)。根表是應(yīng)用程序的所有代碼和數(shù)據(jù)以在片上占用的地址來(lái)分段存儲(chǔ)的數(shù)據(jù)包,包的第一個(gè)4 B 是main()函數(shù)的入口地址_C_int00,后面由若干數(shù)據(jù)段組成,每個(gè)段前4 B為該段數(shù)據(jù)的字節(jié)長(zhǎng)度Byte_count_x(x 為段序號(hào)),接著4 B Address_x 為該段在片上的存儲(chǔ)地址,后面是Byte_count_x個(gè)字節(jié)的具體數(shù)據(jù)Data_x。所有數(shù)據(jù)段結(jié)束后是4個(gè)字節(jié)0作為根表的結(jié)束標(biāo)記。該根表格式如表1所示。每一個(gè)段的數(shù)據(jù)字節(jié)數(shù)可能不是4的整數(shù)倍,根表中數(shù)據(jù)區(qū)就在后面添0按4 B的整數(shù)倍向上取整,故整個(gè)根表文件字節(jié)數(shù)必是4的整數(shù)倍。

根表數(shù)據(jù)產(chǎn)生很簡(jiǎn)單,由應(yīng)用程序最終生成的Out文件,通過(guò)ccs自帶工具h(yuǎn)ex6x.exe選擇不同的參數(shù)而產(chǎn)生,產(chǎn)生的文件即是根表文件,可以選擇生成二進(jìn)制文件或文本文件,本研究采用二進(jìn)制。其產(chǎn)生命令為(app為應(yīng)用程序名,app.out為ccs產(chǎn)生的連接文件):

hex6x-boot -b -e _c_int00-order L-memwidth=32 -romwidth=32-o app.bin app.out

app.bin為產(chǎn)生的二進(jìn)制根表文件,將二級(jí)Loader程序的二進(jìn)制代碼加到根表文件的頭部即是app應(yīng)用程序的映像文件。

 

多核的映像文件是由二級(jí)加載器Loader和多個(gè)核應(yīng)用的根表合并而成的文件。多個(gè)核對(duì)應(yīng)多個(gè)獨(dú)立的工程,并由CCS產(chǎn)生多個(gè)out文件,再由 hex6x.exe產(chǎn)生各核的根表文件。后對(duì)Core0的根表文件先去掉末尾4 個(gè)0字節(jié),再將各輔助核的根表文件的開(kāi)始的入口地址_C_int00和末尾4個(gè)0字節(jié)去掉,加到Core0被去掉了末尾字節(jié)的根表文件后,然后再將每個(gè)核的_C_int00當(dāng)成一個(gè)4字節(jié)的數(shù)據(jù)段來(lái)保存到上面的合成文件的后面,而各_C_int00在片上的存放地址即為各核的專(zhuān)門(mén)固定地址Boot Magic Address,如Core1的Boot Magic Ad-dress為0x1187fffc,Core2為0x1287fffc,…,Core7為0x1787fffc。所有根表數(shù)據(jù)段構(gòu)成后,再將4個(gè)0 字節(jié)作為結(jié)尾標(biāo)志加到文件的最后,這樣合并后的根表文件如表2所示。同樣,將二級(jí)Loader 的代碼數(shù)據(jù)加到該文件頭部即形成多核的映像文件。由hex6x 生成的單核根表文件到合成映像文件的產(chǎn)生,全是文件操作,可以用一般的C語(yǔ)言工具,甚至Matlab等工具都可以完成。

 

同表1相比,表2僅僅只是增加了所有輔助核數(shù)據(jù)段和各核的_C_int00特殊數(shù)據(jù)段而已,表頭和結(jié)束字節(jié)都相同,因此完全適用于二級(jí)Loader按統(tǒng)一Boot Table格式搬移數(shù)據(jù)。需特別注意,各輔助核的out文件通過(guò)hex6x.exe產(chǎn)生的根表數(shù)據(jù)段中,當(dāng)映射到 L2(0×00800000~0x0087FFFF)的范圍時(shí),與Core0的地址是相互覆蓋的,產(chǎn)生合成根表時(shí)必須加上各核的L2基地址 0×10000000+n*0×1000000(n 為輔助核號(hào)),如Core1的地址0×00825000,映射為0×11825000,同樣地址Core2映射為0×12825000,Core7映射為 0×17825000。[!--empirenews.page--]

3 二級(jí)Loader程序和FLASH燒寫(xiě)程序

二級(jí)Loader是一段小代碼程序,其功能就是將FLASH的根表數(shù)據(jù)如圖1中從0×70000400開(kāi)始按表2的格式保存的數(shù)據(jù)搬移到DSP的RAM中。該Loader比較簡(jiǎn)單,一般是一小段匯編代碼,代碼如下:

 

需要注意的是,由于DDR 沒(méi)有初始化,所以二級(jí)Loader不能加載DDR數(shù)據(jù),DDR只作數(shù)據(jù)存儲(chǔ)器用,確實(shí)要加載到DDR中,只能將DDR數(shù)據(jù)存在FLASH一指定段中,待Core0運(yùn)行開(kāi)始初始化DDR后,將該數(shù)據(jù)讀到RAM中。

對(duì)于FLASH的燒寫(xiě)程序,主要任務(wù)就是把多核的合成文件燒寫(xiě)到外部Emif16 NOR-FLASH存儲(chǔ)器中。

由于TI大部分的Emif并口加載都是開(kāi)放式的,開(kāi)發(fā)者完全可以根據(jù)自己的思路和格式來(lái)產(chǎn)生和燒寫(xiě)映像文件,故燒寫(xiě)器TI公司是不提供的。其實(shí),一旦合成根表文件產(chǎn)生后,燒寫(xiě)器也顯得容易了。燒寫(xiě)器一般使用輸出legacy COFF格式的CCS工程即可。從圖1的加載過(guò)程看,要燒寫(xiě)的映像文件內(nèi)容包括二級(jí)加載器Loader的代碼和表2 的根表文件兩部分。二級(jí)Loader可以放到燒寫(xiě)器的開(kāi)頭main()函數(shù)之前,也可以放到Core0的應(yīng)用程序同樣位置,本研究采用前者,將二級(jí) Loader代碼映射到燒寫(xiě)工程中指定的存儲(chǔ)器.boot_load段。燒寫(xiě)器的編程流程如圖2所示。

 

4 輔助核的觸發(fā)

多核的加載,如果圖1中僅僅只是進(jìn)入Core0的_C_int00地址運(yùn)行而其他核還未激活,加載仍然是失敗的。輔助核的觸發(fā),必須兩個(gè)條件,一是將各核工程的入口地址_C_int00寫(xiě)到各核的Boot Magic Address處;二是向各核的核間中斷觸發(fā)寄存器IPCx(1

一旦輔助核被觸發(fā),在輔助核應(yīng)用程序中,須向各自核的Boot Magic Address 寫(xiě)入數(shù)據(jù)0xbabeface替換各自的_C_int00。

5 結(jié)語(yǔ)

多核DSP 加載是一項(xiàng)比較復(fù)雜但又很重要的過(guò)程[7,9-10],也是多核技術(shù)的應(yīng)用難點(diǎn)之一,一個(gè)多核DSP開(kāi)發(fā)人員,如果要成功走向應(yīng)用,上電加載這一關(guān)是必須要過(guò)的。各核的應(yīng)用工程可以是輸出elf格式sysbios工程,也可以不是sysbios 工程。上面的多核Emif16NOR-FLASH 加載方法,在自研的C6678圖像信號(hào)處理系統(tǒng)中已成功加載。

作者 劉章文,劉七華,謝川林,袁學(xué)文

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉