楊磊 張瑩
摘要:介紹了TI生產(chǎn)的多核DSP TMS320C6678的啟動過程,詳細講解了其內(nèi)置啟動程序RBL提供的幾種常用啟動方式,并從應(yīng)用場景,硬軟件設(shè)計等多個方面分析了各方式的優(yōu)劣。提出了一種基于EMIF16接口的添加引導服務(wù)程序的多級引導模式,能夠很好的擴展C6678二級引導程序的功能。
關(guān)鍵詞:C6678;EMIF16;RBL;二級引導;自啟動
中圖分類號:TP13 文獻標識碼:A 文章編號:1007-9416(2019)01-0054-02
0 引言
在當今數(shù)字化不斷加快的背景下,各信號處理系統(tǒng)對嵌入式實時性要求在進一步提高。TI推出的多核DSP TMS320C6678,具有8個運算核心,單核心主頻最高可達1.25Ghz[1],無論是定點或浮點都具有較高的計算能力,并且TI為其配套了專用嵌入式實時操作系統(tǒng)SYS/BIOS,使該款芯片在軟件設(shè)計上的難度大大降低。
在實際應(yīng)用中,應(yīng)用場景復雜多變,我們可根據(jù)其引導方式將其分成兩類,一類需要主機將應(yīng)用程序鏡像下載到DSP內(nèi)存并激活DSP運行用戶程序。另一類是將用戶程序燒寫在外部存儲器中,上電后由DSP的引導程序完成自加載啟動[2-3]。C6678內(nèi)置了一級引導程序RBL,RBL為用戶提供了多種引導方式以滿足其不同需求。但同時RBL程序相對簡單,無法滿足一些較為復雜的引導需求,這時往往需要二級引導程序的輔助。因此,C6678的啟動引導過程常常是由一級和二級引導程序共同完成的。
1 C6678啟動過程
RBL是廠家固化在其Boot Rom內(nèi)的一段程序,其主要功能是通過判斷DEVSTAT寄存器后三位BOOTMODE[2:0]的狀態(tài)來決定運行的Boot代碼。當C6678上電后,由內(nèi)部的EDMA將Boot Rom中的代碼搬運到Core0的內(nèi)存中執(zhí)行,完成一系列初始化工作。
C6678上電啟動的大致過程可描述為:Core0運行RBL;RBL根據(jù)BootMode[2:0]運行相應(yīng)一級引導程序;一級引導程序引導用戶程序啟動,如有二級引導,則先引導二級引導程序,由二級引導程序引導用戶程序啟動。
2 C6678常用引導方式
2.1 PCIE Boot
PCIE[4]是一種高速串行總線的擴展標準,C6678集成了PCIE外設(shè)接口,PCIE啟動過程可簡單描述為:RBL檢測到BootMode[2:0]的值并初始化PCIE模塊;主機加載程序在PC與DSP間建立內(nèi)存映射;主機通過PCIE總線將DDR初始化程序送入Core0 的L2內(nèi)存并初始化DDR;主機將用戶程序推送至DDR內(nèi)存指定位置,并將入口地址寫入magic地址[5],DSP跳轉(zhuǎn)到magic內(nèi)的入口地址執(zhí)行,并通過IPC中斷通知從核工作。
PCIE啟動方式能夠通過PC來控制DSP的啟動過程,能很好地與以往采用X86架構(gòu)的工控系統(tǒng)銜接。但該方式也有局限性,例如當一個系統(tǒng)中C6678節(jié)點較多時,PC無法為每個節(jié)點分配足夠的映射空間,會導致主機系統(tǒng)無法啟動。此時需借助二級引導程序來降低RBL中為C6678設(shè)置的BAR空間大小,以保證PC順利完成PCIE枚舉過程。
2.2 Ethernet Boot
以太網(wǎng)啟動是主機將用戶鏡像通過以太網(wǎng)下載到C6678的內(nèi)存中啟動的一種方式。這里的主機可以是具有以太網(wǎng)功能的PC,ARM芯片或PowerPC芯片。以太網(wǎng)啟動雖然通用性較強,但由TI提供的主機加載程序以及RBL內(nèi)置的以太網(wǎng)加載代碼功能較為簡單,而操作起來又比較復雜。因此在實際應(yīng)用中通常是通過二級引導程序來擴展以太網(wǎng)啟動功能。
2.3 SRIO Boot
SRIO[6]是一種高速串行接口標準,與PCIE相比,靈活性更強。SRIO節(jié)點可通過對方的Srio ID直接讀寫其內(nèi)存數(shù)據(jù)。SRIO引導過程可以描述為:RBL檢測BootMode[2:0]的值并初始化芯片的SRIO模塊,設(shè)置SRIO模塊的Srio ID,連接模式等;主機將DDR初始化程序下載到Core0 L2內(nèi)存中并完成DDR初始化工作;主機將用戶程序鏡像通過SRIO總線寫入DSP的DDR內(nèi)存中,并改寫Magic地址;Core0根據(jù)Magic地址跳轉(zhuǎn)執(zhí)行用戶程序,并通過IPC中斷喚醒從核工作。
與PCIE引導相比,SRIO具有硬件結(jié)構(gòu)靈活,軟件設(shè)計簡單等特點,但PC機并沒有擴展SRIO接口,因此,通常是采用另一片C6678或PowerPC等集成了SRIO模塊的芯片作為主機加載平臺,這就在一定程度上限制了SRIO 啟動方式的使用范圍。
3 Nor Flash引導服務(wù)程序
與上面介紹的幾種boot 方式不同,在大多工程應(yīng)用中,我們需要將用戶程序固化在EMIF16接口的外掛Nor Flash存儲器中,由DSP自動完成加載過程。Nor Flash的特性決定了程序可直接在其中運行,但為了提高運行速度,往往將程序搬移到DDR內(nèi)。TI的EVM板及薛志遠等人[7]提出的方法都是在引導程序后直接添加用戶代碼,功能單一。
為解決普通Nor Flash引導功能單一的問題,我們在二級引導代碼后增加了引導服務(wù)程序。此服務(wù)程序主要通過軟件方式完成DSP參數(shù)設(shè)置,引導方式選擇等功能。可在此服務(wù)代碼中增加以太網(wǎng)啟動,SRIO啟動,PCIE啟動以及自啟動服務(wù)模塊。增加了引導服務(wù)程序后的完整啟動流程如圖1所示。
通過引導服務(wù)程序,可以用串口更改保存在Flash保留區(qū)域并且與啟動相關(guān)的環(huán)境變量。隨后根據(jù)人為設(shè)置的環(huán)境變量選擇啟動加載模式,經(jīng)測試,此方式大大增加了C6678啟動方式的靈活性。
4 結(jié)語
通過對C6678啟動方式的分析,本文中提出了一種基于EMIF16接口的引導設(shè)計方案,增加了引導程序的通用性。但是目前而言,DSP端的引導程序并不能做到完全復用,大部分是根據(jù)實際功能進行定制。因此,設(shè)計一個能夠滿足各種應(yīng)用需求,類似于Uboot的開源DSP BootLoader將是今后研究的重點,這將大大降低DSP嵌入式軟件的開發(fā)成本,促進DSP在我國軍事和民用高速信號處理系統(tǒng)中的應(yīng)用和發(fā)展。
參考文獻
[1] 牛金海.TMS320C66x KeyStone架構(gòu)多核DSP入門與實例精解[M].上海:上海交通大學出版社,2014.
[2] 孫紅磊,蔡雨琦,施鎮(zhèn)峰.TMS320C6678 DSP的加載引導研究[J].微型機與應(yīng)用,2015,34(24):73-75.
[3] 黃震,劉亞斌.TMS320C6000系列DSP程序固化的研究[J].電子設(shè)計工程,2016,24(12):26-28+32.
[4] 樂亮.新一代多核DSP-TMS320C6678的PCIE接口驅(qū)動設(shè)計[A]. 第六屆全國信號和智能信息處理與應(yīng)用學術(shù)會議論文集[C],2012:4.
[5] 李飛平,卿粼波,滕奇志,舒君,何小海.基于TMS320C6678的多核程序加載研究與實現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(03):31-34.
[6] 盧建章,劉洋.TMS320C6678中的高速串行接口RapidIO研究[J].單片機與嵌入式系統(tǒng)應(yīng)用,2017,17(06):51-53.
[7] 薛志遠,王春雷.基于TMS320C6678的多核Bootloader設(shè)計與實現(xiàn)[J].航空兵器,2017(04):80-83.
Abstract:The startup process of multi-core DSP TMS320C6678 produced by TI is introduced.,several common startup methods provided by its built-in startup program RBL are explained in detail,the advantages and disadvantages of various methods are analyzed from application scenarios, hardware and software design,etc.A multi-level boot mode of adding boot service program based on EMIF16 interface is proposed,which can extend the function of C6678 two stage boot program.
Key words:C6678; EMIF16; RBL; secondary boot; self-boot