日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

0 引言

在視頻檢測、醫(yī)療影像及紅外圖像快速跟瞄系統(tǒng)應用中,越來越復雜的二維、三維甚至四維的圖像處理,需要并行化的處理系統(tǒng),并能夠運行復雜的算法。要實現(xiàn)這些復雜的系統(tǒng),高端FPGA+高性能DSP是目前普遍采用的方案,而單個DSP的性能已發(fā)展至極限,所以解決復雜的并行算法,多核DSP是現(xiàn)在發(fā)展的全新方向,其中多核DSP的根加載技術是其難點之一。

TI公司推出的DSP芯片TMS320C6678(C6678)具有8個內核的高性能DSP,每個內核工作頻率均達1 GHz。

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

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

1 C6678 的上電加載過程

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

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

從圖1中看出,一個完整多核加載過程,開發(fā)者需要做的是二級加載器Loader的編寫、FLASH中映像文件的產生、FLASH燒寫器的編寫,主核對各輔助核的觸發(fā)代碼的編寫(被加載的應用程序不在本范圍內)。

 

2 多核映像文件的組成與產生

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

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

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

app.bin為產生的二進制根表文件,將二級Loader程序的二進制代碼加到根表文件的頭部即是app應用程序的映像文件。

 

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

 

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

3 二級Loader程序和FLASH燒寫程序

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

 

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

對于FLASH的燒寫程序,主要任務就是把多核的合成文件燒寫到外部Emif16 NOR-FLASH存儲器中。

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

 

4 輔助核的觸發(fā)

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

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

5 結語

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

作者 劉章文,劉七華,謝川林,袁學文

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

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉