C6000DSP的引导方式和bootloader.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C6000DSP的引导方式和bootloader.doc

C6000DSP的引导方式和bootloader C6000是TI的高端DSP,它有3种引导方式:㈠无引导; ㈡ROM引导; ㈢主机引导 ㈠ – 无引导:CPU直接从地址0处开始执行代码。 ㈡ – ROM引导,加载过程: ①当CPU的Reset引脚处于低电平状态时,BOOTMODE的引脚状态根据预设设定, RESET信号处于上升沿的时候,相应加载方式启动。 ②ROM加载方式是通过DMA控制器,将外部ROM的一段固定大小的代码复制到内部RAM中(加载时CPU处于stall状态),对于不同型号芯片,复制的代码大小不同。 对于C620x/C670x,DMA从CE1空间拷贝64K数据到地址0处 对于C621x/C671x/C64x,EDMA从CE1空间拷贝1K数据到地址0处。 ③加载完毕后,CPU开始从0地址执行。 对于上述步骤②的第二种(C621x/C671x/C64x),1K是不能解决问题的,所以,一般在0地址处建立一个叫做“bootloader”的段(代码小于1KB),这一小段程序也叫 “引导程序”,上电或者重启后首先执行它,完成将其余程序(真正完成用户要求算法的程序)加载,然后跳转到主程序入口地址运行。 ㈢ – 主机引导: 对具有不同接口的芯片,分别有以下三种渠道连接: HPI XBUS PCI 介绍了TMS320C6x DSP的几种FLASH引导方法,比较了引导过程中基于软件流水的数据搬移方法和QDMA方式的数据搬移方法,并介绍了如何利用在系统编程(ISP)对上电引导程序进行FLASH编程。通过对实际的TMS32C6711 DSP电路调试实验,证明了以上方法简单易行。   关键词:FLASH存储器 上电引导 COFF文件格式 DSP   FLASH存储器是在EPROM和EEPROM的基础上发展起来的一种非易失性存储器,在掉电情况下仍能保证数据不丢失,并能够在不离开电路板或据设备的情况下实施擦除和再编程操作。由于其具有结构简单、维护便利、存取速度快、对环境适应能力强、抗振性能好等优点十分适合于嵌入式系统的设计和开发,并且已成为目前流行的数字信号处理系统的一个基本配置。   在许多DSP的应用中,系统上电后需要将用户程序从FLASH存储器引导到高速数据存储器中运行。这就需要给用JTAG接口调试通过的应用程序添加启动代码,将生成的目标文件进行格式转换使其能在线烧写,将转换过的文件利用FLASH烧写程序在线烧写到FLASH中。   本文将介绍引导过程中数据搬移的几种方法,包括QDMA方式的数据搬移方法、CPU直接数据搬移方法以及基于软件流水的数据搬移方法。经过比较测试,证明了QDMA方式和基于软件流水的数据搬移方法具有优越性。并且,根据COFF文件格式,编写了比TI公司的HEX60更为直接的转换工具,从而简化了文件的转换步骤。   1 应用程序的FLASH ROM引导   当DSP的应用程序从FLASH ROM引导时,目标板都有一个自动的引导程序。例如,对于TMS320C6x1x系列,目标板的自动引导程序会在系统上电时将FLASH ROM的前1K空间的内容复制以片内内存自0x00开始的地址空间,并从0x00地址处开始运行。因为需要搬到内存中运行的应用程序的向量表、初始化段等往往超过1K大小,为了能在系统上电时自动引导应用程序运行,就需要在引导的1K代码中包括自定义的引导代码,以将额外需要的初始化代码段和数据段复制到内存中运行。   将FLASH ROM的数据复制到IRAM(内部RAM)中,有两种方式:一种是直接存储器访问(DMA),它是在没有CPU参与的情况下完成映射存储空间的数据搬移;另一种是利用CPU直接搬移数据。QDMA是快速的DMA,不需要CPU参与数据传输,只需根据要传递内容的信息设置QDMA的相应寄存器即可。用CPU直接搬移数据也有两种方式:一种是是不用流水方式,另一种是采用软件流水方式。   在C6000的汇编中,不同类型指令有不同数目的执行节拍。执行节拍在数量上等于该指令在执行级所需要的时钟周期。对于所用到的读取指令ldw的存储指令stw,分别完成从存储到通用寄存器的数据搬移和从通用寄存器到存储器的数据搬移。读取指令ldw需要执行的步骤为:计算地址、地址送内存、访问内存、数据送CPU、数据写寄存器,即执行节拍数为5;而存储指令stw,执行节拍数为3,需要执行的步骤为ldw的前三步。表1给出了软件流水前后数据搬移间隔编排的比较表。   由表1可见,要将FLASH ROM中的一个数据搬移到IRAM中,需要从FLASH ROM中读取该数据到通用寄存器(ldw),再从通用寄存器中将其读到IRAM(指令stw)。在软件流水优化以前,需要至少8个指令周期。采用软件流水优化以后,根据指令的特点,第0到第4这5个

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档