网站大量收购独家精品文档,联系QQ:2885784924

SPUC6455Flash加载方案.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SPUC6455Flash加载方案

SPU C6455 Flash加载方案 Flash 加载的流程: 按照TI 相关文档中的描述,C6455支持从EMIFA总线上读取ROM来加载DSP程序。其设置由BootMode管脚设定。在SPU 载板上,可通过载板背面的两个拔码开头分别设置DSPA和DSPB的加载模式。 SPU板上的Flash 通过EMIFA挂在C6455上,每个C6455各挂一片。在EMIFA读取ROM的加载模式下,C6455在上电后,从EMFIA的CE3空间(起始地址:0xB0000000)开始执行程序。所以为了实现通过Flash对C6455的加载,必须在Flash的起始空间开始的一段Flash空间上放置一段BootLoader代码,由该段代码完成将Flash中已保存好C6455代码镜像搬移到C6455的 L2空间内的任务。 综上所述,C6455 Flash加载的流程如下: 编程DSP代码; 根据DSP代码编译链接后生成的*.out和*.map文件,获取该DSP代码在运行时的各段的内存分配信息; 根据步骤2中获得的各段内存分配信息,编写BootLoader的汇编代码; 制作BootLoader代码的二进制内存镜像,并存入Flash起始地址处; 制作DSP程序的二进制内存镜像,并存入Flash; 设置SPU板的BootMode拔码开关为Flash加载模式; 重新上电,SPU板上DSP完成从Flash的加载,开始执行程序。 BootLoader代码的制作: Flash 加载各步骤中最重要的是BootLoader代码的编程。本节将详细说明这一过程。 首先,由于在Flash中存放的应该是DSP程序的二进制镜像格式,该镜像实际上就是通过开发工具或其它方式加载到DSP L2空间内的DSP可执行文件。TI 的DSP可执行文件遵行分段的管理方式,由链接器根据*.cmd文件中指定的内存分配规则,将DSP可执行文件中的各段加载到*.cmd文件中指定的位置。 一个使用了C环境的DSP可执行文件主要有以下各段组成: CINIT段:C运行时环境; CONST段:常量; CODE段:可执行的二进制代码; SWITCH段:分支; 而其它的如堆栈段,BSS段等则是会在运行时动态改变的段,不计入必须由BootLoader加载的范围。 下图说明DSP内存空间与Flash中镜像文件的关系: 从DSP L2到Flash的空间映射图示 由于在上电后会立即执行,所以BootLoader 代码由汇编实现,从而避免了初始化C运行时环境的麻烦。 完整的BootLoadr代码如下,其中红色部分是需要根据不同的DSP程序编译链接后生成的MAP文件来进行设置的,这些部分指示出了各段的起始地址和各段的空间长度。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;文件:boot.asm ;;概述:该段汇编代码形成的二进制可执行文件应烧写于Flash的起始地址 .title Flash bootup utility for SPU .option D,T .length 102 .width 140 FLASH_CINIT_START .equ 0xB0000100 ;flash start address FLASH_CODE_START .equ 0xB0000474 ;L2 sram start address FLASH_CONST_START .equ 0xB000E6B4 ;flash start address FLASH_SWITCH_START .equ 0xB000E9C6 ;L2 sram start address CODE_SIZE .equ 0xe2a0 ;application code size in byte CODE_START .equ 0;application code start address CINIT_SIZE .equ 0x0374 ;application code size in byte CINIT_START .equ 0x00812da0 ;application code start address

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档