孫紅磊,蔡雨琦,施鎮峰(南京理工大學 電子工程與光電技術學院,江蘇 南京 210094)
TMS320C6678 DSP的加載引導研究
孫紅磊,蔡雨琦,施鎮峰
(南京理工大學 電子工程與光電技術學院,江蘇 南京 210094)
德州儀器公司(TI)推出的八核DSP芯片TMS320C6678是基于Keystone架構的高性能DSP器件,在高性能信號處理市場中得到了廣泛應用。主要研究了 TMS320C6678程序的加載,把TMS320C6678提供的幾種加載模式按照實際應用和方便理解分成一次加載和二次加載,分別對一次加載和二次加載進行了研究和比對,最終為不同需求的加載提供了有效的參考。
TMS320CC6678 DSP;加載;二級加載
DSP芯片自從問世以來,以其低成本、低功耗、高性能的優點得到了廣泛應用。作為TI最新推出的八核DSP芯片 TMS320C6678[1-2],更是在高性能信號處理市場中占據大量市場份額[3]。為了適應市場的需求,其發展方向也在不斷地發生變化。嵌入式系統的迅猛發展,使得TI公司在其開發軟件CCS中開發DSP芯片的文件格式也在向兼容嵌入式系統的方向發展。在較新的CCS5.2版本中調試 DSP6000系列程序生成的可執行文件格式最終過渡到了完全兼容 Linux嵌入式系統的 ELF文件格式[4]。由于DSP內部存儲器比外部存儲器的存取速度要快得多,但是內部存儲器RAM中的數據是掉電易失的,因此DSP一般會在上電時通過固化到內部的ROM中的一段代碼把外部存儲器中的程序拷貝到內部RAM(具體到 TMS320C6678是 L2SRAM)中并運行,這段固化到ROM中的代碼就叫RBL(ROM Bootloader)。外部存儲器一般使用Flash、EEPROM等掉電非易失的材質。Flash存儲容量大、價格便宜,在工程項目中得到了的廣泛應用。因此,研究 DSP的加載[5-6],研究怎樣快捷方便地把ELF文件格式的調試程序代碼燒寫到外部存儲器中,并在DSP上電時使用Bootloader把程序代碼拷貝到內部存儲器中被DSP正確識別并運行,這是很有意義的。
目前關于 TMS320C6678加載的文檔資料較少而且講得很凌亂,在經過研讀其各種手冊并且經過實際項目的檢驗,把 TMS320C6678所提供的加載模式按照以下文章中提供的分類方法將各種模式分類會更容易理解。TMS320C6678的加載模式主要可以分為一次加載和二次加載。其中一次加載主要是兼容以前版本的DSP加載方式,主要特點是占用存儲空間小,轉換過程復雜;二次加載是較新的加載方式,主要特點是占用存儲空間稍大一些,但是整體操作流程簡單。
本文所使用的硬件是TI公司生產的DSP6678EVM開發板[7-8],所使用的軟件是 TI公司提供的 CCS、MCSDK開發套件中的IBL(Intermediate Bootloader)和 Flash燒寫工具[9]。本文中定義一次加載為在DSP開機加載時使用RBL搬移外部存儲器中的代碼。因為 IBL比RBL最主要的一個優勢是搬移代碼時不需要提前進行格式轉換,可以自動識別和搬移ELF文件的格式。DSP TMS320C6678的一次加載同 TI公司的較前期的產品6000系列和5000系列類似,主要是因為固化到核內部ROM中的 Bootloader都大同小異,但是 TMS320C6678 PG1.0的鎖相環在 ROM Bootloader中不能被鎖定[10],因此在 EVM6678開發板上 FPGA首先會強制 DSP TMS320C6678 boot時先把I2C EEPROM的 0X51中的IBL拷貝到 L2SRAM并運行 IBL,配置好鎖相環,然后再執行一次加載。IBL主要包含了參數的配置部分和不同存儲器的代碼搬移部分。也就是說一次加載運行了IBL代碼的前一部分,配置完參數就重新跳轉到RBL進行代碼搬移的工作。所以燒寫到外部存儲器中的代碼應該能讓RBL識別,因此需要有一個格式轉換的過程,然后再燒寫到外部存儲器中。
一次加載的過程如圖1所示。開發板在上電之后,首先開發板上的FPGA采樣boot模式的撥碼開關,然后FPGA強制 DSP從I2C總線的0x51地址啟動拷貝 IBL到L2SRAM,執行IBL,配置好鎖相環,IBL從 FPGA寄存器中讀bootmode的值,如果不是二次加載,IBL把讀到的bootmode值寫入到 DEVSTAT寄存器,如果是PCIE一次加載還需要配置PCIE工作環境,然后就在 IBL中等待PCIE boot完成,如果不是 PCIE boot而是從 I2C的 0x50 boot,IBL會直接從 0X50 boot,否則 IBL會直接跳入到RBL的起始位置并根據DEVSTAT寄存器的值進行相應的boot。
在一次加載中,想要 boot的代碼首先要先進行格式轉換,轉換成RBL可以識別的代碼,同時要滿足外部存儲器件燒寫格式的需求。使用TI提供的工具自己制作一個工具鏈就能完成[11-12],如圖 2所示。

圖2 格式轉換的工具鏈
rmd文件里面包含一些對Hex.6x操作的指令,首先用hex.6x把程序中有效數據按照指令剝離出來得到btbl文件,然后經過兩個小工具得到 ccs文件只包含各個段的內容,并不包含boot參數的任何內容,因此要給其配置參數頭,由于RBL只識別大端模式,還要進行一次大小段的轉換。最后把生成的文件燒寫到外部存儲器后斷電,把boot開關撥到相應的位置,上電boot。

圖1 一次加載的流程圖
查看IBL的源代碼可以知道IBL主要被設計為兩段Bootloader,即iblinit.c和iblmain.c,兩個文件都有main函數,其中iblinit.c主要用來初始化鎖相環,iblmain.c主要處理二次加載啟動。TMS320C6678在上電boot時在IBL中讀出 bootmode是二次加載后會直接把該加載模式中對應的外部存儲器中的代碼搬移到 L2SRAM并運行這段代碼,完成boot。TMS320C6678提供的二次加載有I2C NOR Flash加載、I2C NAND Flash加載、I2C TFTP加載3種模式。
因為二次加載時是使用IBL進行代碼搬移,所以二級加載時不需要格式轉換,只需要把調試的.out文件后綴名改成.bin,使用 MCSDK提供的燒寫工具燒寫到Flash中即可,IBL搬移代碼時能自動識別。對比一次加載,二次加載不需要自己編寫工具鏈,操作簡便,雖然相比一級加載,ELF格式文件里面有一些無用信息會使得占用存儲空間稍大一些,但是現在Flash存儲空間足夠大,價格便宜,因此二級加載相對更方便。
二次加載中的IBL代碼其實就是一次加載中的放在外部存儲器中的程序代碼,所以使用二次加載前,要先把IBL代碼按照一次加載的要求轉換文件格式燒寫到外部存儲器件中。
DSP TMS320C6678有一次加載和二次加載之分,最主要區別就是是否使用IBL中的搬移代碼的功能,如果沒有使用,則要對代碼進行格式轉換。如果外部存儲器空間小對存儲空間要求較高,建議使用一次加載;如果外部存儲空間較大,推薦使用二次加載,過程簡單。
[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雷達信號處理的實現[J].電子技術應用,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]張樂年,關榆君.基于 TMS320C6678的多核 DSP加載模式研究[J].電子設計工程,2013,21(24):166-169,173.
[6]沈發江.基于以太網的 DSP網絡加載技術研究[J].微型機與應用,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
孫紅磊,蔡雨琦,施鎮峰.TMS320C6678DSP的加載引導研究[J].微型機與應用,2015,34(24):73-75.
2015-08-20)
孫紅磊(1990-),男,碩士研究生,主要研究方向:數字波束形成,DSP6678的應用。
蔡雨琦(1991-),男,碩士研究生,主要研究方向:雷達目標檢測。
施鎮峰(1990-),男,碩士研究生,主要研究方向:雷達信號處理。