TMS320C6678 DSP的加载引导研究
2015-10-18孙红磊蔡雨琦施镇峰南京理工大学电子工程与光电技术学院江苏南京210094
孙红磊,蔡雨琦,施镇峰(南京理工大学 电子工程与光电技术学院,江苏 南京 210094)
TMS320C6678 DSP的加载引导研究
孙红磊,蔡雨琦,施镇峰
(南京理工大学 电子工程与光电技术学院,江苏 南京 210094)
德州仪器公司(TI)推出的八核DSP芯片TMS320C6678是基于Keystone架构的高性能DSP器件,在高性能信号处理市场中得到了广泛应用。主要研究了 TMS320C6678程序的加载,把TMS320C6678提供的几种加载模式按照实际应用和方便理解分成一次加载和二次加载,分别对一次加载和二次加载进行了研究和比对,最终为不同需求的加载提供了有效的参考。
TMS320CC6678 DSP;加载;二级加载
0 引言
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正确识别并运行,这是很有意义的。
1 一次加载
目前关于 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。
2 二次加载
图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代码按照一次加载的要求转换文件格式烧写到外部存储器件中。
3 结论
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-),男,硕士研究生,主要研究方向:雷达信号处理。