當前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:德州儀器TI推出的八核DSP芯片TMS320C6678是目前基于Keystone架構(gòu)的最高性能的DSP器件,是市場上應(yīng)用廣泛的C6455高端處理平臺升級的理想選擇。本文主要研究了C6678 DSP程序的各種單核加栽和多核加載的幾種模式

摘要:德州儀器TI推出的八核DSP芯片TMS320C6678是目前基于Keystone架構(gòu)的最高性能的DSP器件,是市場上應(yīng)用廣泛的C6455高端處理平臺升級的理想選擇。本文主要研究了C6678 DSP程序的各種單核加栽和多核加載的幾種模式,主要用到多核boot技術(shù),對EMIF16 FLASH boot引導(dǎo)模式、主機(PCIe接口)引導(dǎo)模式、I2C引導(dǎo)模式、SRIO引導(dǎo)模式、網(wǎng)絡(luò)引導(dǎo)boot引導(dǎo)模式的方法做了研究,對TI的高性能多核架構(gòu)DSP芯片的程序加載提供了有效的參考幫助。

近年來,以數(shù)字信號處理器(DSP)為基礎(chǔ)的通用信號處理模塊的研制受到人們的重視,DSP技術(shù)廣泛應(yīng)用于雷達、通信、圖像處理等領(lǐng)域。隨著聲納、雷達、高清視頻以及嵌入式機器視覺等需求不斷攀升,多核DSP的應(yīng)用已成為滿足發(fā)展的重要途徑。由于DSP系統(tǒng)穩(wěn)定運行起來后,在實際的應(yīng)用中都要脫離仿真器件,實現(xiàn)系統(tǒng)的自動加載,尤其是多核DSP加載過程中,不同于多芯片間的加載方式,需要實現(xiàn)核間的調(diào)度,數(shù)據(jù)協(xié)同處理,因此多核啟動的加載方式需要做具體研究。

TMS320C6678 DSP是TI最新發(fā)布的一款基于KeyStone架構(gòu)高性能的超長指令字(VLIW)架構(gòu)芯片,片內(nèi)有8個內(nèi)核,每個核頻率為1.25 GHz,單核每秒高達40 GB MAC定點運算和20 GB FLOP浮點運算能力,工作速度可達10GHz。與目前應(yīng)用較為廣泛的TMS320C6455 DSP,為單核1.2GHz工作,定點處理能力為9600M MAC??梢奀6678的處理能力要遠強于C6455。針對C6678多核協(xié)同處理特性,本文以自定義的雙6678板卡平臺為基礎(chǔ),深入研究C6678的多種加載方式,對EMIF16 FLASH boot引導(dǎo)模式、I2C引導(dǎo)模式、SRIO引導(dǎo)模式、網(wǎng)絡(luò)引導(dǎo)boot模式做了分析和說明,主機(PCIe接口)引導(dǎo)模式、HYPERLINK引導(dǎo)模式和SPI引導(dǎo)模式的使用,本文不做說明。

1 多核加載方式論述

在C6678的片內(nèi)地址空間0x20800000到0x20B1FFFF間集成了一塊128K的內(nèi)部ROM程序,又叫做RBL(ROMBoot Loader),Rom code是C6678出廠時固化在Rom中的,用戶不能改變,在DSP復(fù)位或上電時實現(xiàn)將DSP代碼從外部接口讀入到內(nèi)部高速ram。啟動過程可以大致分為主機引導(dǎo)和內(nèi)存引導(dǎo)啟動,在內(nèi)存引導(dǎo)啟動過程代碼從一個外部內(nèi)存的加載初始應(yīng)用程序到內(nèi)部的內(nèi)存來執(zhí)行。如果主機模式,啟動程序配置DSP在被動狀態(tài),等待代碼將DSP應(yīng)用程序程序由外部主機寫入ram開始執(zhí)行。為適應(yīng)不同的系統(tǒng)要求,RBL提供了幾種啟動的執(zhí)行方式。不同的引導(dǎo)方式如表1所示。

2 多核boot預(yù)處理

C6678有8個核,采用基于KeyStone架構(gòu)的中斷控制器、核間通信寄存器以及合適的通信拓撲結(jié)構(gòu)實現(xiàn)多核間的通信,core0為主核,其它7個核可以統(tǒng)一執(zhí)行相同的Romcode代碼,也可以不同,或者根據(jù)核號(即DNUM)進行不同程序的分支。對于core0來說,它主要是讀取DEVS TAT寄存器的加載模式,并根據(jù)當前加載模式進行一些接口的初始化和PLL的配置,還要根據(jù)加載模式?jīng)Q定是否搬移數(shù)據(jù)。對于其它的7個核來說,它們主要是掛載IPC中斷,然后進入IDLE狀態(tài)等待core0發(fā)過來的中斷。中斷一到,就跳到入口地址開始執(zhí)行程序,待加載工程總體流程如圖1所示。

代碼讀入前要根據(jù)不同的boot方式進行轉(zhuǎn)換格式,轉(zhuǎn)換工具是將各核的.out文件轉(zhuǎn)換成.dat或.bin文件,也有網(wǎng)絡(luò)boot時要轉(zhuǎn)換成.eth格式的文件來傳送,不同的轉(zhuǎn)化方式在各自的boot說明中詳細闡述。無論哪一種啟動方式,首先要boot起來core0之后再引導(dǎo)其他的從核,重點是從核在boot啟動時通過host向DSP寫了MAGIC_ADDRESS并觸發(fā)IPC中斷,DSP跳轉(zhuǎn)到BOOT_MAIGC_ADDRESS所指向的地址執(zhí)行程序。

3 C6678 EMIF flash boot

3.1 core0加載

C6678的EMIF16加載是一種直接從Nor Flash(必須掛在CE2空間:0x70000000)加載core0的模式,不需要I2CEEPROM的參與,由Rom code初始化EMIF16接口,由于EMIF16外接Nor Flash是一種XIP器件,因此直接跳到Nor Flash的起始地址處開始執(zhí)行。

為了將Nor Flash中的代碼搬移到C6678的core0的L2SRAM中,需要在core0的待加載工程中編寫引導(dǎo)代碼,此引導(dǎo)代碼的作用就是將core0的代碼按段加載到內(nèi)存中,最后跳到入口地址處開始執(zhí)行。引導(dǎo)代碼放在L2 SRAM的前1KB空間,并燒寫到Nor Flash的前1KB空間,應(yīng)用代碼放到1KB后面,生成.out文件編寫轉(zhuǎn)化工具生成.dat文件,如圖2所示Nor Flash代碼格式:

3.2 core0加載其它核

在多核加載過程中,core0是主核,corel-core7是從核,由core0加載從核,具體步驟是:

1)上電后,core0完成程序加載,并跳到入口地址開始執(zhí)行程序。

2)在core0主程序中.core0從Nor Flash中讀取corel的代碼,并按段加載到core1的L2 SRAM,然后將core1程序的入口地址寫到core1的BOOT_MAGIC_ADDRESS,最后向core1發(fā)送IPC中斷,其它核的加載過程一樣。各個核的Nor Flash空間分配如表2所示。

在將c_int00地址寫到magic address時,注意需要確保寫的是全局地址,如當程序放在L2時,c_int00地址應(yīng)該轉(zhuǎn)換為0x1n8xxxxx,其中n為coreID.

4 C6678 I2C boot

C6678的I2C boot是通過I2C總線讀取掛載在總線上的eepromm中的IBL讀取參數(shù)表配置RBL加載應(yīng)用程序到的指定數(shù)據(jù)塊。可以操作主I2C模式或從模式,在主模式的DSP讀取帶有鏡像文件的I2C從設(shè)備。在從模式,DSP為I2C連接的從設(shè)備,主設(shè)備大多是另一個DSP或FPGA。

4.1 單核啟動模式

單核啟動包括:RBL、IBL、應(yīng)用程序。對于I2C啟動,需要做的主要有4步:

1)編譯IBL:不同版本的IBL,其目錄下的內(nèi)容有些差別。編譯IBL需要的工具有TI CGEN eompiler CGT_C6000_7.x和MinGW。

2)將編譯好的IBL寫到EEPROM中,并根據(jù)需要修改EEPROM中的IBL configuration table;

3)將應(yīng)用程序?qū)懙絅OR FLASH或NAND FLASH中:

首先要編寫格式轉(zhuǎn)化工具,將CCS生成的應(yīng)用程序拷貝到格式轉(zhuǎn)化工具中,將ELF格式的.out轉(zhuǎn)換成CCS格式的數(shù)據(jù)文件.dat,然后將該.dat寫到NOR FLASH或者NAND FLASH即可。

4)將撥碼開關(guān)撥到相應(yīng)的啟動模式。C6678板卡NORboot的bootmode[]=101000100010000,NAND boot的bootmode[]=101010000010000。

4.2 多核啟動模式

多核啟動包括核內(nèi)RBL、IBL、MAD、應(yīng)用程序。

采用pre-link模式:在這種操作模式下的MAP工具為應(yīng)用程序段做地址分配和調(diào)用pre-linker。這種模式適合使用在多核,是應(yīng)用程序開發(fā)人員想要MAP工具協(xié)助地址分配,使多核應(yīng)用之間的通用代碼共享。

MAD引導(dǎo)的多核裝載的過程有以下幾個步驟:

1)在啟動時候,DSP設(shè)備將運行ROM引導(dǎo)裝載程序,將加載并運行在i2c eeprom上載好的IBL。

2)IBL將下載MAD鏡像文件從tftp服務(wù)器(MAD文件也可以存數(shù)在板上的NOR/NAND FLASH中)到DDR中。給IBL配置了一個執(zhí)行程序的入口地址,在非MAD引導(dǎo)的情況下,此地址將是運行程序下載的入口地址,在MAD引導(dǎo)情況下,IBL配置為跳轉(zhuǎn)到MAD Lader的入口地址。

3)MAD引導(dǎo)裝載程序情況,裝載應(yīng)用程序段,在每個配置好的核的運行地址開始執(zhí)行程序。

5 C6678網(wǎng)絡(luò)boot

C6678芯片網(wǎng)絡(luò)通過MARVEL控制芯片與外部RJ45網(wǎng)絡(luò)接口相連,注意增加通過MDIO對MARVEL芯片的控制,從而實現(xiàn)與PC的通信。建立C66 78的網(wǎng)絡(luò)boot主要有圖3所示過程。

DSP內(nèi)RBL主要配置SerDes,SGMII,SWITCH以及多核導(dǎo)航器,準備通過千兆以太網(wǎng)接口接收boot table。這些最初的配置是通過查詢與啟動模式相關(guān)的DEVSTAT寄存器和引導(dǎo)網(wǎng)絡(luò)boot的parameter table。在啟動模式選定后,PA子系統(tǒng)的時鐘主要參考main PLL的參考時鐘或Ser Des參考時鐘。

1)使用arp指令查看網(wǎng)絡(luò)緩存區(qū)鏈接狀態(tài),arp-a檢測網(wǎng)口外接的設(shè)備。

2)使用hex6x.exe將out文件生成hex文件:要有*.cmd文件和hex6x.exe和*.out文件。

3)編譯生成.eth網(wǎng)絡(luò)boot格式文件:最好將編譯工具放到本目錄下編譯,轉(zhuǎn)化得到.eth網(wǎng)絡(luò)文件。

4)獲取板卡的MAC地址:正確配置板卡的撥碼開關(guān)。

配置正確以后PC就能收到板卡發(fā)出的BOOTP包(3 s周期),設(shè)置C6678的bootmode[]=010000100111000。查看板卡的MAC地址:通過wires hark抓包獲取板卡板的MAC地址。

5)傳輸boot文件:MINGW環(huán)境里面運行指令,綁定板卡的MAC地址和IP,設(shè)置板卡IP地址為192.168.1.2,PC端的地址為192.168. 1.1。文件傳輸指令pcsendpkt.exe simple.eth 192.168.1.2。發(fā)送文件到板卡內(nèi)存,傳輸文件成功后可以板卡停止向PC發(fā)送MAC地址,并且可以看到PC向板卡利用UDP協(xié)議傳輸DSP Core0的代碼,Wireshark抓取網(wǎng)口數(shù)據(jù)包結(jié)果如圖4所示。

將Core0的代碼存到DSP的內(nèi)存,此時Core0仍處于boot load的EMAC加載模式,當發(fā)送完畢代碼后,向Core0發(fā)送結(jié)束包.Core0根據(jù)EMAC加載協(xié)議,當收到該包后則從加載模式跳轉(zhuǎn)為正常模式,PC指針從指定的程序入口地址處開始運行。

6)在core0加載的程序中編寫core1到core7的加載程序,通過網(wǎng)口讀入coreN各個核的代碼程序到對應(yīng)的RAM中,如果7個從核的代碼相同,只用讀入一次從核心代碼,加載到7個核中,0核像7個核發(fā)送IPC中斷觸發(fā)運行程序。觀察程序跳轉(zhuǎn)地址到設(shè)定的地址處,驗證程序運行結(jié)果。

6 C6678 SRIO boot

C6678支持的SRIO協(xié)議為2.1版本,link rate速率即1.25G,2.5G,3.125Gbit,使用4x模式。SRIO協(xié)議規(guī)定有兩種傳輸方式:Direct IO與Message方式。當DSP處于SRIO bootload模式時,將代碼直接寫入DSP內(nèi)存并中斷.DSP立即從boot模式跳轉(zhuǎn)到正常模式,執(zhí)行加載的代碼.

1)程序文件格式的轉(zhuǎn)換:

①使用代碼轉(zhuǎn)換工具hex6x.exe轉(zhuǎn)換ELF格式的out文件成為十六進制格式的boot table文件。

②使用Bttbl2Hfile.exe,hfite2array.exe將boot table文件轉(zhuǎn)換為一個DAT格式文件。

③復(fù)制生成文件到\srioboot_example\src,使boot image鏈接到DSP的啟動程序中。

2)DSP boot過程:DSP boot工程使用多核程序包的BIOS支持庫來初始化DDR,它首先從SRIO連接的DSP中通過SRIO將DDR的初始化程序的代碼讀入到Core0的L2RAM中,然后寫入DDR初始化引導(dǎo)程序的入口地址到core0的boot magic address中。在DSP上運行的RBL檢測到core0發(fā)起的入口地址,并跳轉(zhuǎn)開始啟動初始化DDR。DDR的初始化代碼在初始化DDR正確后將繼續(xù)校驗SRIO boot magicaddress,SRIO boot引導(dǎo)流程如圖5所示。

然后從DSP將由SRIO把應(yīng)用程序引導(dǎo)到本地的DDR內(nèi)存啟動板卡,寫入的應(yīng)用程序的入口地址到core0。Core0開始啟動和打印啟動信息,并通過write_boot_magic_number()和一個IPC中斷發(fā)送到其它核心,寫入入口地址啟動其它從核,程序會跳轉(zhuǎn)到其它核上運行的寫boot地址命令開始啟動,每個核心將寫入0xBABEFACE到對應(yīng)的SRIO boot magicaddress。

3)板卡SRIO boot:板卡上包含兩片C6678芯片,SRIOboot。兩片C6678通過4xlane差分線互聯(lián),使用RS-232總線連接到PC的串行端口,板卡設(shè)置boot模式,C6678_A的bootmode []=100000101011000,C6678_B的bootmode []=100000101011100。這將設(shè)置引導(dǎo)板從SRIO啟動,參考時鐘頻率為312.5 MHz,數(shù)據(jù)速率3.125 GBs和lane設(shè)置4x端口,在1GHz的系統(tǒng)時鐘。

打開超級終端或TERA終端連接,設(shè)置波特率115200,數(shù)據(jù)8位,無奇偶校驗,停止位和流量控制,連接主機的CCSv5,加載和運行srio boot_example_evm66xxl.out程序。CCS控制臺將顯示以下消息:…[C66xx_0]Transfer boot code via SRIO successfully

超級終端會顯示以下消息:SRIO Boot Hello World Example Version 01.00.00.01;Booting Hello World image on Core0 from SRIO … … Booting Hello World image on Core7 from Core 0

7 結(jié) 論

TMS320C6678是8內(nèi)核的DSP,主要實現(xiàn)了系統(tǒng)自動加載boot load程序,支持的多種加載方式:主要有EMIFFLASH加載、網(wǎng)絡(luò)EMAC加載,以及SRIO加載和I2C加載。多種加載方式能為實測項目應(yīng)用中達到更高的效率,在數(shù)字信號處理系統(tǒng)中多核DSP的發(fā)展必然成為一種趨勢,多核間的有效加載更直接影響到項目的整體特性,按照該設(shè)計思路編制的boot load方法已在TMS320CC6678+FPCA的CPCI處理卡中得到應(yīng)用,應(yīng)用的高端處理平臺可使用于航天領(lǐng)域、船舶領(lǐng)域、無線平臺和高速圖像處理領(lǐng)域等,多核DSP系統(tǒng)能很好的復(fù)位及快速完成多核間的加載,系統(tǒng)運行穩(wěn)定可靠性較高。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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