下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C6000DSP的引导方式和bootloader

C6000DSP的引导方式和bootloader.doc

C6000DSP的引导方式和bootloader

zbtxidian
2018-09-10 0人阅读 举报 0 0 暂无简介

简介:本文档为《C6000DSP的引导方式和bootloaderdoc》,可适用于工程科技领域

CDSP的引导方式和bootloaderC是TI的高端DSP它有种引导方式:㈠无引导㈡ROM引导㈢主机引导㈠–无引导:CPU直接从地址处开始执行代码。㈡–ROM引导加载过程:①当CPU的Reset引脚处于低电平状态时BOOTMODE的引脚状态根据预设设定RESET信号处于上升沿的时候相应加载方式启动。②ROM加载方式是通过DMA控制器将外部ROM的一段固定大小的代码复制到内部RAM中(加载时CPU处于stall状态)对于不同型号芯片复制的代码大小不同。对于CxCxDMA从CE空间拷贝K数据到地址处对于CxCxCxEDMA从CE空间拷贝K数据到地址处。③加载完毕后CPU开始从地址执行。对于上述步骤②的第二种(CxCxCx)K是不能解决问题的所以一般在地址处建立一个叫做“bootloader”的段(代码小于KB)这一小段程序也叫“引导程序”上电或者重启后首先执行它完成将其余程序(真正完成用户要求算法的程序)加载然后跳转到主程序入口地址运行。㈢–主机引导:对具有不同接口的芯片分别有以下三种渠道连接:HPIXBUSPCI介绍了TMSCxDSP的几种FLASH引导方法比较了引导过程中基于软件流水的数据搬移方法和QDMA方式的数据搬移方法并介绍了如何利用在系统编程(ISP)对上电引导程序进行FLASH编程。通过对实际的TMSCDSP电路调试实验证明了以上方法简单易行。  关键词:FLASH存储器上电引导COFF文件格式DSP  FLASH存储器是在EPROM和EEPROM的基础上发展起来的一种非易失性存储器在掉电情况下仍能保证数据不丢失并能够在不离开电路板或据设备的情况下实施擦除和再编程操作。由于其具有结构简单、维护便利、存取速度快、对环境适应能力强、抗振性能好等优点十分适合于嵌入式系统的设计和开发并且已成为目前流行的数字信号处理系统的一个基本配置。  在许多DSP的应用中系统上电后需要将用户程序从FLASH存储器引导到高速数据存储器中运行。这就需要给用JTAG接口调试通过的应用程序添加启动代码将生成的目标文件进行格式转换使其能在线烧写将转换过的文件利用FLASH烧写程序在线烧写到FLASH中。  本文将介绍引导过程中数据搬移的几种方法包括QDMA方式的数据搬移方法、CPU直接数据搬移方法以及基于软件流水的数据搬移方法。经过比较测试证明了QDMA方式和基于软件流水的数据搬移方法具有优越性。并且根据COFF文件格式编写了比TI公司的HEX更为直接的转换工具从而简化了文件的转换步骤。  应用程序的FLASHROM引导  当DSP的应用程序从FLASHROM引导时目标板都有一个自动的引导程序。例如对于TMSCxx系列目标板的自动引导程序会在系统上电时将FLASHROM的前K空间的内容复制以片内内存自x开始的地址空间并从x地址处开始运行。因为需要搬到内存中运行的应用程序的向量表、初始化段等往往超过K大小为了能在系统上电时自动引导应用程序运行就需要在引导的K代码中包括自定义的引导代码以将额外需要的初始化代码段和数据段复制到内存中运行。  将FLASHROM的数据复制到IRAM(内部RAM)中有两种方式:一种是直接存储器访问(DMA)它是在没有CPU参与的情况下完成映射存储空间的数据搬移另一种是利用CPU直接搬移数据。QDMA是快速的DMA不需要CPU参与数据传输只需根据要传递内容的信息设置QDMA的相应寄存器即可。用CPU直接搬移数据也有两种方式:一种是是不用流水方式另一种是采用软件流水方式。  在C的汇编中不同类型指令有不同数目的执行节拍。执行节拍在数量上等于该指令在执行级所需要的时钟周期。对于所用到的读取指令ldw的存储指令stw分别完成从存储到通用寄存器的数据搬移和从通用寄存器到存储器的数据搬移。读取指令ldw需要执行的步骤为:计算地址、地址送内存、访问内存、数据送CPU、数据写寄存器即执行节拍数为而存储指令stw执行节拍数为需要执行的步骤为ldw的前三步。表给出了软件流水前后数据搬移间隔编排的比较表。  由表可见要将FLASHROM中的一个数据搬移到IRAM中需要从FLASHROM中读取该数据到通用寄存器(ldw)再从通用寄存器中将其读到IRAM(指令stw)。在软件流水优化以前需要至少个指令周期。采用软件流水优化以后根据指令的特点第到第这个指令周期可连续续个数到通用寄存器从第到第这个指令周期再顺序地将读入通用寄存器的上述个数读出到IRAM。于是在个指令周期内可完成个数据的搬移从而使搬移周期下降到了两个指令周期提高了CPU的运行效率。  QDMA方式和CPU直接数据搬移方式的比较  由于前面已比较了CPU直接数据搬移的两种方式下面着重对QDMA方式和基于流水的CPU直接数据搬移方式进行比较测试。这次测试是在TMSCDSP上进行的采用的FLASH型号为SSTLE。首先根据待烧写应用程序的map文件找出需搬移的初始化代码段的大小其中text段为xcbyteconst段为bytecinit段为xcbyte共需搬移xA个bit字。然后利用QDMA方式和CPU流水方式分别从FLASH中读取xA个bit字到片内内存中。测量所用时间结果如表所示。  表两种数据搬移方式的比较  搬移大小:SIZE=小AWORD  由测试结果可以看出不需要CPU直接参与数据搬移的QDMA方式比CPU流水搬移更具优越性搬移速度快且设置简单。但CPU的流水搬移利用了TMSC系列DSP汇编的特点深入分析了指令的软件流水方式很大程度地提高了CPU的利用率拓宽了编程思路也不失为一种好的选择。  利用ISP对上电引导程序进行了FLASH编程  文件格式的转换  完成了引导程序包括cmd文件中内存段的设置及连接设置后用TI的编程工具CCS(CodeComposerStudio)编译连接生成目标文件(out文件)。但该out文件格式是COFF文件格式FLASH不支持这种格式所以不能直接写入FLASH中必须对该out文件进行转换提取出其中的数据部分形成数据文件。最后利用烧写程序将已转换好的数据文件烧写到FLASHROM中。  在前面的两节点结合TMSCx系列DSP的特点介绍了几种上电引导过程中的数据搬移方法特别推荐和比较了基于软件流水思想的CPU数据搬移方法及QDMA方式还介绍了ISP技术对上电引导FLASH编程的基本步骤及如何根据COFF文件格式将目标文件转换成数据文件供FLASH的烧写程序烧写。  从编写引导程序到将引导程序转换为可供烧写的数据文件再到最终的FLASHROM烧写是比较繁琐的过程。本文所介绍的方法为编写引导程序拓宽了思路并简化了文件转换的步骤。通过对实际的TMSCDSP电路调试实验证明了以上的方法是简单易行的。  有两种方式可将COFF格式文件转换成数据文件。一种是利用TI公司的HEXxexe工具将生成的out文件转化成hex输出文件。由于该HEXxexe工具是提供给EPROM编程器的用EPROM编程器可直接烧写hex文件。但对于FLASHROM的在系统编程来说生成的hex文件不能直接使用必须再编写一段程序将hex的文件头去掉分离出数据文件最后才能由FLASH的烧写程序将最终的数据文件烧写到FLASHROM中。也可以不用TI公司的工具而根据COFF文件格式直接提取出数据。生成一个数据文件然后将其烧写到FLASHROM中。  COFF文件采用的是向量组织方式可以很灵活地安排代码段和目标系统存储器。了解COFF文件的结构不仅可以清楚cmd文件的编写原理而且可以认识初始化段和非初始化段的区别同时还可以在转换文件时减少转换步骤。COFF文件的格式如表所示。  要提取的数据部分即台化段是表的Rowdata部分也就是可执行代码和初始化代码部分。首先根据文件头的信息(文件头描述了整个文件的全局信息)获得文件中段的数量然后根据段的头(Sectionheader)信息判断该段是否为初始化段的头。因为非初始化段是在程序运行中才分配的若为初始化段的头则取得初始化段的位置将这些段按地址由低到高的顺序复制到输出文件便得到了可烧写的数据文件。其流程如图所示。  利用ISP技术烧写FLASH  烧写程序负责将前面所生成的数据文件写入FLASHROM中利用ISP技术就不需要其它编程设备和附加编程电源直接通过烧写程序烧写就可以了。烧写程序必须根据所用的FLASH的型号来编写。以SSTLE为例其软件数据保护和页面写、芯片擦除、芯片型号软件检测等都有不同的指令和时序如表所示需要查阅该型号的芯片手册根据手册完成烧写程序。  表SSTLE内存指令表  在前面的两节点结合TMSCx系列DSP的特点介绍了几种上电引导过程中的数据搬移方法特别推荐和比较了基于软件流水思想的CPU数据搬移方法及QDMA方式还介绍了ISP技术对上电引导FLASH编程的基本步骤及如何根据COFF文件格式将目标文件转换成数据文件供FLASH的烧写程序烧写。  从编写引导程序到将引导程序转换为可供烧写的数据文件再到最终的FLASHROM烧写是比较繁琐的过程。本文所介绍的方法为编写引导程序拓宽了思路并简化了文件转换的步骤。通过对实际的TMSCDSP电路调试实验证明了以上的方法是简单易行的。TMSCxHPI引导过程的实现摘要:TMSCx和TMSCxDSPs提供了几种不同的启动模式不同的启动模式决定了DSP复位后的初始化以及代码装载方式。本文就TMSCxDSP的HPI启动模式进行详细的说明。关键词:TMSCxDSPHPI启动模式绪言在TMSCx系列DSP中主机口HPI是一个位宽度的并行端口。主机(也称上位机)掌管该接口的主控权通过它可以直接访问CPU的存储器空间。另外主机还可以直接访问TMSCx片内的存储映射的外围设备。HPI与CPU存储空间的互连是通过DMA控制器实现的。借助专门的地址和数据寄存器通过DMA辅助通道完成HPI对存储空间的访问。主机和CPU都可以对HPI控制寄存器HPIC进行访问主机一方还可以访问HPI地址寄存器HPIA和HPI数据寄存器HPID。TMSCx引导模式TMSCx系列DSP提供了三种引导方式:()没有自举过程:CPU直接从地址开始执行代码()ROM自举:由DMAEDMA控制器从外部CE空间中的ROM中拷贝固定数量的一段代码到地址拷贝结束后CPU从地址开始运行()HPI自举:由外部主机通过HPI对芯片的存储器空间进行初始化初始化结束后外部主机通过HPI中断唤醒CPUCPU开始从地址运行。所有这些设置项都是在芯片复位的时候才进行检查。一旦复位信号有效(reset=)所有的三态输出管脚恢复为默认状态然后在reset信号的上升沿处检查设置管脚BOOTMODE:的状态自举逻辑开始生效。其中CC有专门的管脚作为BOOTMODE:CC则是利用主机口的HD:CC利用扩展总线的XD:作为BOOTMODE:信号。对于TMSCx的HPI自举模式过程如下:首先需要设置Boot模式Boot模式设置如表所示。当DSP被复位时如果选择了HPIboot模式那么只有DSP的内核进入复位状态DSP其余模块均保持激活状态。这样主机就可以通过HPI接口访问DSP的整个存储空间包括片内、片外存储器和片内的外设寄存器对它们进行初始化。主机对DSP做完了有关设置后向HPIC寄存器的DSPINT位写将DSP从复位状态唤醒接下来CPU就从地址开始执行程序。主机对DSP可以进行的操作包括:初始化CPU和EMIF向DSP加载程序以及数据等。表TMSCxHPIboot配置BOOTMODE:MemoryMapMemoryatAddressBootMAPExternaldefaultvaluesHPIMAPInternalHPITMSCxHPI引导模式的实现创建启动代码实现TMSCxHPI引导模式的第一步是生成HPI引导的DSP代码并把它与主处理器应用程序合并在一起使DSP应用程序可以和主处理器应用程序一起远程下载。为了简化采用下列方案:把DSP应用程序转换成头文件中的数组并和主处理器应用程序一起编译连接。具体实现分为两步:)利用转换工具HEXx把COFF文件转换成ASCIIHex格式十六进制文件)利用自编工具hexarayexe将ASCIIHex格式的文件转换成包含数组的头文件。()利用转换工具HEXx把COFF文件转换成ASCIIHex格式十六进制文件利用转换工具HEXx把COFF文件转换成十六进制文件使用转换工具HEXx需要一个cmd文件说明具体的转换格式如下面文件hexcomcmd所示:HEXx把COFF文件testout转换成两个ASCIIHex格式的文件:一个是代码段包含在文件testa中另一个是初始化的数据段包含在文件testa中。在DOS命令行中执行hexxhexcomcmd将产生testa和testa两个文件。文件hexcomcmd:objecttestoutabyteimagememwidthromwidthorderMROMS{*Sizeoftheinternalpgmmemory*PGM:org=x,length=x*Sizeoftheinternaldatamemory*DATA:org=x,length=x}()利用工具hexarayexe生成头文件然后利用hexarayexe将两个ASCIIHex格式的文件:testa和testa分别转换成两个个包含数组的头文件:codeh和inith。工具hexarayexe为自编工具。在DOS命令行中分别执行hexaray–itesta–ocodeh和hexaray–itesta–oinith两条命令将产生两个头文件codeh和inith。在文件hexcomcmd中的选项:a指示HEXx按ASCIIHex格式转换文件ASCIIHex文件格式如下所示:^B$AXXXX,XXXXXXXXXXXXXXXXXXXX^C文件开始是ASCIISTX字符(ctrlB,h)结束是ASCIIETX字符(ctrlC,h)$AXXXX,代表地址其余为代码。转换后的头文件格式如下:constcharcode={x,x,x,x,x,x,x,x,xA,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,xE,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,…}主机对HPI接口的操作TMSCx提供了三个位寄存器:HPIC、HPIA、HPID和位数据线与主处理器通信。主处理器通过HPIC、HPIA、HPID和位数据线来与TMSCx进行数据交换数据交换的过程如下:)首先初始化HPIC)然后把地址写到HPIA)最后通过HPID读或写数据。假设主机CPU也是TMSCx那么主机与目标机之间的连接如图所示:如图所示假如Target的HCS连接到主机的CE上。Target的HPI寄存器映射到HostDSP内存中HCNTRL:和HHWIL连接到主机CPU的地址线上那么HPIC、HPIA、HPID寄存器的地址分配如表所示。那么在C语言中可以通过指针访问HPIC、HPIA、HPID例如:#defineCHPIx*HostaddressonwhichCxHPIismapped*int*hpiptr*defineandinitializepointer*hpiptr=(int*)CHPI*WritedestaddresstoHPIA,withHOB=*ptrhpi=(int)(destaddressxffff)ptrhpi=(int)((destaddress>>)xffff)表HPIC、HPIA、HPID各寄存器的地址分配映射到主机的地址HPI控制线HPI寄存器访问HCNTL:HHWILHPIBaseaddressxHPICsthalfwordHPIBaseaddressxHPICsthalfwordHPIBaseaddressxHPIAsthalfwordHPIBaseaddressxCHPIAsthalfwordHPIBaseaddressxHPIDsthalfwordHPIA自增HPIBaseaddressxHPIDsthalfwordHPIA自增HPIBaseaddressxHPIDsthalfwordHPIA不自增HPIBaseaddressxCHPIDsthalfwordHPIA不自增主机通过HPI下载代码和数据段到目标DSP一个程序由初始化区和非初始化区两部分组成主机处理器必须根据cmd命令文件把这两个区装载到DSP正确的地址。下面这段代码就是将代码段和数据段两部分分别下载到指定地址(即程序RAM和数据RAM)。它主要是从*source中读出位长的数据然后通过HPI将此数据写到DSP的destadd地址(即程序RAM和数据RAM)中。*source中的数据就是DSP的启动代码段和数据段中的数据。voidCxwritesection(int*ptrhpi,short*source,intdestadd,intlength){inti*WriteHPICwithHWOB=,sthalfwordtransferredisleastsignificant**HCNTRLHCNTRLHHWIL*ptrhpi=x*sthalfword*ptrhpi=x*ndhalfword**WritedestinationaddresstoHPIA,sthalfwordisleastsignificant**HCNTRLHCNTRLHHWIL*ptrhpi=(int)(destaddxffff)**ptrhpi=(int)((destadd>>)xffff)**for(i=i<lengthi){*WritesourcewordtoHPIDwithaddresspostincrement**sthalfwordtransferredisleastsignificant**HCNTRLHCNTRLHHWIL*ptrhpi=(int)*source**ptrhpi=(int)*source**}}目标DSP开始执行所下载的代码主机通过HPI下载代码段和数据段到目标DSP以后那么目标DSP就需要执行所下载的代码了。通过写HPIC寄存器的DSPINT位为让DSP退出复位状态后DSP就开始从地址执行所下载的代码了。具体实现代码为:*WriteHPICwithDSPINT=**HCNTRLHCNTRLHHWIL**sthalfword**ndhalfword*ptrhpi=x*sthalfword*ptrhpi=x*ndhalfword*总结根据前面所述TMSCxHPI启动过程如图所示。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/9

C6000DSP的引导方式和bootloader

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利