孫紅磊,蔡雨琦,施鎮(zhèn)峰(南京理工大學(xué) 電子工程與光電技術(shù)學(xué)院,江蘇 南京 210094)
TMS320C6678 DSP的加載引導(dǎo)研究
孫紅磊,蔡雨琦,施鎮(zhèn)峰
(南京理工大學(xué) 電子工程與光電技術(shù)學(xué)院,江蘇 南京 210094)
德州儀器公司(TI)推出的八核DSP芯片TMS320C6678是基于Keystone架構(gòu)的高性能DSP器件,在高性能信號(hào)處理市場中得到了廣泛應(yīng)用。主要研究了 TMS320C6678程序的加載,把TMS320C6678提供的幾種加載模式按照實(shí)際應(yīng)用和方便理解分成一次加載和二次加載,分別對一次加載和二次加載進(jìn)行了研究和比對,最終為不同需求的加載提供了有效的參考。
TMS320CC6678 DSP;加載;二級(jí)加載
DSP芯片自從問世以來,以其低成本、低功耗、高性能的優(yōu)點(diǎn)得到了廣泛應(yīng)用。作為TI最新推出的八核DSP芯片 TMS320C6678[1-2],更是在高性能信號(hào)處理市場中占據(jù)大量市場份額[3]。為了適應(yīng)市場的需求,其發(fā)展方向也在不斷地發(fā)生變化。嵌入式系統(tǒng)的迅猛發(fā)展,使得TI公司在其開發(fā)軟件CCS中開發(fā)DSP芯片的文件格式也在向兼容嵌入式系統(tǒng)的方向發(fā)展。在較新的CCS5.2版本中調(diào)試 DSP6000系列程序生成的可執(zhí)行文件格式最終過渡到了完全兼容 Linux嵌入式系統(tǒng)的 ELF文件格式[4]。由于DSP內(nèi)部存儲(chǔ)器比外部存儲(chǔ)器的存取速度要快得多,但是內(nèi)部存儲(chǔ)器RAM中的數(shù)據(jù)是掉電易失的,因此DSP一般會(huì)在上電時(shí)通過固化到內(nèi)部的ROM中的一段代碼把外部存儲(chǔ)器中的程序拷貝到內(nèi)部RAM(具體到 TMS320C6678是 L2SRAM)中并運(yùn)行,這段固化到ROM中的代碼就叫RBL(ROM Bootloader)。外部存儲(chǔ)器一般使用Flash、EEPROM等掉電非易失的材質(zhì)。Flash存儲(chǔ)容量大、價(jià)格便宜,在工程項(xiàng)目中得到了的廣泛應(yīng)用。因此,研究 DSP的加載[5-6],研究怎樣快捷方便地把ELF文件格式的調(diào)試程序代碼燒寫到外部存儲(chǔ)器中,并在DSP上電時(shí)使用Bootloader把程序代碼拷貝到內(nèi)部存儲(chǔ)器中被DSP正確識(shí)別并運(yùn)行,這是很有意義的。
目前關(guān)于 TMS320C6678加載的文檔資料較少而且講得很凌亂,在經(jīng)過研讀其各種手冊并且經(jīng)過實(shí)際項(xiàng)目的檢驗(yàn),把 TMS320C6678所提供的加載模式按照以下文章中提供的分類方法將各種模式分類會(huì)更容易理解。TMS320C6678的加載模式主要可以分為一次加載和二次加載。其中一次加載主要是兼容以前版本的DSP加載方式,主要特點(diǎn)是占用存儲(chǔ)空間小,轉(zhuǎn)換過程復(fù)雜;二次加載是較新的加載方式,主要特點(diǎn)是占用存儲(chǔ)空間稍大一些,但是整體操作流程簡單。
本文所使用的硬件是TI公司生產(chǎn)的DSP6678EVM開發(fā)板[7-8],所使用的軟件是 TI公司提供的 CCS、MCSDK開發(fā)套件中的IBL(Intermediate Bootloader)和 Flash燒寫工具[9]。本文中定義一次加載為在DSP開機(jī)加載時(shí)使用RBL搬移外部存儲(chǔ)器中的代碼。因?yàn)?IBL比RBL最主要的一個(gè)優(yōu)勢是搬移代碼時(shí)不需要提前進(jìn)行格式轉(zhuǎn)換,可以自動(dòng)識(shí)別和搬移ELF文件的格式。DSP TMS320C6678的一次加載同 TI公司的較前期的產(chǎn)品6000系列和5000系列類似,主要是因?yàn)楣袒胶藘?nèi)部ROM中的 Bootloader都大同小異,但是 TMS320C6678 PG1.0的鎖相環(huán)在 ROM Bootloader中不能被鎖定[10],因此在 EVM6678開發(fā)板上 FPGA首先會(huì)強(qiáng)制 DSP TMS320C6678 boot時(shí)先把I2C EEPROM的 0X51中的IBL拷貝到 L2SRAM并運(yùn)行 IBL,配置好鎖相環(huán),然后再執(zhí)行一次加載。IBL主要包含了參數(shù)的配置部分和不同存儲(chǔ)器的代碼搬移部分。也就是說一次加載運(yùn)行了IBL代碼的前一部分,配置完參數(shù)就重新跳轉(zhuǎn)到RBL進(jìn)行代碼搬移的工作。所以燒寫到外部存儲(chǔ)器中的代碼應(yīng)該能讓RBL識(shí)別,因此需要有一個(gè)格式轉(zhuǎn)換的過程,然后再燒寫到外部存儲(chǔ)器中。
一次加載的過程如圖1所示。開發(fā)板在上電之后,首先開發(fā)板上的FPGA采樣boot模式的撥碼開關(guān),然后FPGA強(qiáng)制 DSP從I2C總線的0x51地址啟動(dòng)拷貝 IBL到L2SRAM,執(zhí)行IBL,配置好鎖相環(huán),IBL從 FPGA寄存器中讀bootmode的值,如果不是二次加載,IBL把讀到的bootmode值寫入到 DEVSTAT寄存器,如果是PCIE一次加載還需要配置PCIE工作環(huán)境,然后就在 IBL中等待PCIE boot完成,如果不是 PCIE boot而是從 I2C的 0x50 boot,IBL會(huì)直接從 0X50 boot,否則 IBL會(huì)直接跳入到RBL的起始位置并根據(jù)DEVSTAT寄存器的值進(jìn)行相應(yīng)的boot。
在一次加載中,想要 boot的代碼首先要先進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成RBL可以識(shí)別的代碼,同時(shí)要滿足外部存儲(chǔ)器件燒寫格式的需求。使用TI提供的工具自己制作一個(gè)工具鏈就能完成[11-12],如圖 2所示。
圖2 格式轉(zhuǎn)換的工具鏈
rmd文件里面包含一些對Hex.6x操作的指令,首先用hex.6x把程序中有效數(shù)據(jù)按照指令剝離出來得到btbl文件,然后經(jīng)過兩個(gè)小工具得到 ccs文件只包含各個(gè)段的內(nèi)容,并不包含boot參數(shù)的任何內(nèi)容,因此要給其配置參數(shù)頭,由于RBL只識(shí)別大端模式,還要進(jìn)行一次大小段的轉(zhuǎn)換。最后把生成的文件燒寫到外部存儲(chǔ)器后斷電,把boot開關(guān)撥到相應(yīng)的位置,上電boot。
圖1 一次加載的流程圖
查看IBL的源代碼可以知道IBL主要被設(shè)計(jì)為兩段Bootloader,即iblinit.c和iblmain.c,兩個(gè)文件都有main函數(shù),其中iblinit.c主要用來初始化鎖相環(huán),iblmain.c主要處理二次加載啟動(dòng)。TMS320C6678在上電boot時(shí)在IBL中讀出 bootmode是二次加載后會(huì)直接把該加載模式中對應(yīng)的外部存儲(chǔ)器中的代碼搬移到 L2SRAM并運(yùn)行這段代碼,完成boot。TMS320C6678提供的二次加載有I2C NOR Flash加載、I2C NAND Flash加載、I2C TFTP加載3種模式。
因?yàn)槎渭虞d時(shí)是使用IBL進(jìn)行代碼搬移,所以二級(jí)加載時(shí)不需要格式轉(zhuǎn)換,只需要把調(diào)試的.out文件后綴名改成.bin,使用 MCSDK提供的燒寫工具燒寫到Flash中即可,IBL搬移代碼時(shí)能自動(dòng)識(shí)別。對比一次加載,二次加載不需要自己編寫工具鏈,操作簡便,雖然相比一級(jí)加載,ELF格式文件里面有一些無用信息會(huì)使得占用存儲(chǔ)空間稍大一些,但是現(xiàn)在Flash存儲(chǔ)空間足夠大,價(jià)格便宜,因此二級(jí)加載相對更方便。
二次加載中的IBL代碼其實(shí)就是一次加載中的放在外部存儲(chǔ)器中的程序代碼,所以使用二次加載前,要先把IBL代碼按照一次加載的要求轉(zhuǎn)換文件格式燒寫到外部存儲(chǔ)器件中。
DSP TMS320C6678有一次加載和二次加載之分,最主要區(qū)別就是是否使用IBL中的搬移代碼的功能,如果沒有使用,則要對代碼進(jìn)行格式轉(zhuǎn)換。如果外部存儲(chǔ)器空間小對存儲(chǔ)空間要求較高,建議使用一次加載;如果外部存儲(chǔ)空間較大,推薦使用二次加載,過程簡單。
[1]Texas Instruments Corp.TMS320C6678 multicore fixed and floating-point digital processor user guide[EB/OL].[2012-02-XX](2015-08-02).http://www.ti.com/lit/ds/sym link/ tms320c6678.pdf.
[2]Texas Instruments Corp.TMS320C66x DSP corepac user guide[EB/OL].[2013-06-XX](2015-08-02).http://www.ti.com/lit/ug/sprugw0c/sprugw0c.pdf.
[3]龐娜,徐平江.基于多核 DSP的 MIMO雷達(dá)信號(hào)處理的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(9):4-6,13.
[4]Texas Instruments Corp.Keystone architecture DSP bootloader user guide[EB/OL].[2013-06-XX](2015-08-02).http://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf.
[5]張樂年,關(guān)榆君.基于 TMS320C6678的多核 DSP加載模式研究[J].電子設(shè)計(jì)工程,2013,21(24):166-169,173.
[6]沈發(fā)江.基于以太網(wǎng)的 DSP網(wǎng)絡(luò)加載技術(shù)研究[J].微型機(jī)與應(yīng)用,2013,32(7):58-60,63.
[7]Texas Instruments Corp.TMDSEVM6678L EVM technical reference manual version 2.0[EB/OL].[2012-04-XX](2015-08-02).http://www.docin.com/p-673366367.htm l.
[8]Texas Instruments Corp.TI TMS320C6678 EVM board rev.3A[EB/OL].[2012-04-XX](2015-08-02).http://www.ti.com/lit/ df/tidrtt2/tidrft2.pdf.
[9]Texas Instruments Corp.BIOS MCSDK 2.0 user guide[EB/ OL].[2015-04-XX](2015-08-02).http://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_User_Guide.
[10]Texas Instruments Corp.TMS320C6678 multicore fixed and floating-point digital signal processor silicon revision 1.0,2.0[EB/OL].[2015-05-XX](2015-08-02).http://www.ti.com/lit/er/sprz334h/sprz334h.pdf.
[11]Texas Instruments Corp.TMSC6000 assembly language tools v7.6 user′s guide[EB/OL].[2014-04-XX](2015-08-02).http://www.ti.com/lit/ug/spru186x/spru186x.pdf.
[12]TMS320C6000 optimizing compiler v7.4 user′s guide[EB/ OL].[2012-06-XX](2015-08-02).http://www.ti.com/lit/ug/ spru187v/spru187v.pdf.
Research of boot mode on TMS320C6678
Sun Honglei,Cai Yuqi,Shi Zhenfeng
(College of Electrical Engineering and Optoelectronic Technology,Nanjing University of Science and Technology,Nanjing 210094,China)
Texas Instruments(TI)launched eight core TMS320C6678 DSP chip which is based on the Keystone architecture of high performance DSP devices,are widely used on the high performance market of the signal processing.The boot of TMS320C6678 is studied in this paper and the boot mode is divided into first stage boot and second stage boot by practical application and easy to understand.The first stage boot and the second stage boot are researched and compared which provide effective reference for those who boot TMS320C6678 on different requirement.
TMS320CC6678 DSP;boot;second stage boot
TP302
A
1674-7720(2015)24-0073-03
孫紅磊,蔡雨琦,施鎮(zhèn)峰.TMS320C6678DSP的加載引導(dǎo)研究[J].微型機(jī)與應(yīng)用,2015,34(24):73-75.
2015-08-20)
孫紅磊(1990-),男,碩士研究生,主要研究方向:數(shù)字波束形成,DSP6678的應(yīng)用。
蔡雨琦(1991-),男,碩士研究生,主要研究方向:雷達(dá)目標(biāo)檢測。
施鎮(zhèn)峰(1990-),男,碩士研究生,主要研究方向:雷達(dá)信號(hào)處理。