教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

TI DSP c6000的二次boot

来源:网络收集 时间:2026-02-09
导读: C6000EMIF接口EEPROM启动的二次bootloader 140lab of uestc 一, 二次boot概述 C6000有3种启动方式 ? 直接执行方式。这种方式中,DSP采用map0储器映射方式,即地址0x00000000指 向片外的存储器。上电后DSP直接从地址0x00000000开始执行。注意这种模式并不适用

C6000EMIF接口EEPROM启动的二次bootloader

140lab of uestc

一, 二次boot概述 C6000有3种启动方式

? 直接执行方式。这种方式中,DSP采用map0储器映射方式,即地址0x00000000指

向片外的存储器。上电后DSP直接从地址0x00000000开始执行。注意这种模式并不适用于TMS320C621x/C671x系列的芯片。

? 主机启动模式。主机通过DSP的HPI口搬移代码和启动DSP。

? EMIF接口的并行ROM启动模式.上电后DSP通过EMIF接口装载代码, 在上述各种启动模式中,ROM启动模式实现简单,速度较快,在实际系统应用中也最为广泛,本文会主要介绍这种启动模式,

当采用EMIF接口的并行ROM启动模式时,大多数6000系列的DSP芯片只能从CE1向地址0处搬移1K bytes的代码,那么当应用程序代码超过1K bytes时就需要两次的代码搬移,这就是所说的二级启动过程。简单过程如下。

1, DSP上电或硬复位时通过EDMA自动地从EMIF接口的BE1空间搬移的1k

bytes的二次boot代码到片内ram的0x00000000到0x00000400空间

2, 搬移完成后自动跳转到地址0x00000000处执行搬移进来的二次boot代码。 3, 二级boot代码将应用程序从外部存储器搬移到内部RAM中,并且在代码搬移

完后跳转到程序入口地址c_int00。

当需要访问外部存储器时,二级启动代码应包括对EMIF寄存器的配置,这些寄存器包括EMIF_GCR,EMIF_CE0,EMIF_SDCTRL及EMIF_SDRP,对这些寄存器的配置可根据原理图的设计及程序的要求用户自己进行编写。对于有内部PLL控制时钟的DSP6000芯片,TI推荐在二级启动代码中配置PLL以提高启动的速度。

二次 boot 代码长度必须小于1k个bytes,这使得我们很难用c语言来编写二次boot代码。因为初始化c运行环境需要空间不小。

二,二次boot 的关键。

? 二次boot代码的编写和boot table 的设置。boot table的作用是告诉二次boot代码

所搬的各个程序段的大小,在片外rom中的源地址和在片内ram中的目的地址。 ? 存储器的安排。包括片内ram和片外eeprom。

1,二次boot代码可以直接使用TI 的6713dsk的boot代码。我简单的修改了一下,主要是将代码合成了一个文件,代码在后面的附录中。可见Boot table 放在改boot代码的最后一块。

2,对于boot table,TI的技术文档(参考1)中提出了3中配置方法,最简单的一种是用hex6x的-boot 选项生成boot表。但需要要注意的是这种方法要求hex6x 的version 至少是4.33版本,低版本中这boot选项时无效的。现在我们教研室的版本都还不够。以后要用这种方法具体可以参考文献1。还由一种采用link来作的,也需要的ccs版本至少2.2。我使用的是三种方法,这种方法通过检查.map文件来手工写boot表。

Boot表的格式如下:

copyTable:

.word 第一个段的大小

.word 第一个段在片外eeprom中的起始地址 .word 第一个段在片内ram中的起始地址 .word 第二个段的大小

.word 第二个段在片外eeprom中的起始地址 .word 第二个段在片内ram中的起始地址 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

.word 0 .word 0 .word 0

依次写入各个段的参数。最后是以三个0的word表示表的结束。 这种boot表的格式时TI推荐的,方便和以后的boot软件兼容 3 存储器的安排。

通过cmd文件来设置,如下一个例子(适用于6713) MEMORY { BOOT : origin = 0x00000000, len = 0x00000400 /* L2. for custom boot code*/ IRAM : origin = 0x00000400, len = 0x0003fc00 /* L2. for non.custom boot code*/ SDRAM : origin = 0x80000000, len = 0x10000000 /* EMIF . CE1 . SDRAM */ FLASH_BOOT: origin = 0x90000000, len = 0x00000400 /* Flash . for custom boot code */ FLASH_REST: origin = 0x90000400, len = 0x0001FC00 /* Flash . for application code */ }

SECTIONS { .boot_load : LOAD = FLASH_BOOT, RUN = BOOT .vectors : LOAD = FLASH_REST, RUN = IRAM .text : LOAD = FLASH_REST, RUN = IRAM .const > FLASH_REST .cinit > FLASH_REST .bss > IRAM .far > IRAM .stack > IRAM .sysmem > IRAM }

一般来所凡是已初始化的代码段,比如text,.vector段都需要烧到片外eeprom中,上电时通过2次boot装入到片内ram中运行。不过像.const 和cinit等的段虽然也是已初始化段,但因为这些代码段只在程序刚开始的时候运行一次,所以可以只放在片外的 eeprom中

就行了。

从上可见,在片内的ram和片外的eeprom的开始都专门给出了1k bytes的空间给.boot.load程序段。以保证正常的boot过程。

需要说明的是当采用如上的cmd文件来biuld工程时,是无法用仿真器加载代码的。所以在进行应用程序功能测试时不能使用这个 cmd文件。可以用一个对应的段定义。Memory定义不用修改。 SECTIONS { .boot_load > BOOT .vectors > IRAM .text > IRAM .const > IRAM .cinit > IRAM .bss > IRAM .far > IRAM .stack > IRAM .sysmem > IRAM }

等完成功能测试后,将sections改为如前的定义方式再biuld一次。

三,具体的超作步骤。 这种方法适合于非BIOS的应用,对于BIOS的应用参考文献一。

1, 编写和测试DSP应用程序。

2, 在工程中加入boot.asm。根据不同的平台修改对EMIF接口和

PLL的配置。根据前面所诉的方法修改cmd文件的MEMORY和SECTION定义。

3, 选择生成map文件,build 工程。检查map文件。

在map文件中可找到各个段的大小,在eeprom中的位置和在ram中的位置。 根据map文件的信息,填写boot.asm中的boot table。

4,填完boot table 后,重新build代码。生成.out文件.

5 , 用hex6x将coff格式的.out文件转化为16进制文件.hex. hex6x 的cmd文件如下(适用于6713)

input_file_name.out /* name of input file*/ -map hex.map /* create a hex map file */ -a /* create ASCII image */ -image /* Create a memory image (no discontinuities) */ -zero /* reset address origin to 0 for output file(s) */ -memwidth 8 /* Width of ROM/Flash memory */ ROMS {

FLASH:org=0x90000000,len=0x20000,romwidth=8,files={out_file_name.hex} }

6, 对应ccs buld的map文件检查hex6x的map文件。如过没错误,用烧写器 将生成的*.hex文件烧入eeprom.。

四,一些补充说明。 如果不考虑效率的话,可以直接在片内ram中化分为boot,code 和data区,将除了boot_load的所有的代码都放到code区去,那么boot table中可以简单到如下只有一项。的形式

copyTable: .word code的大小 .word code在片外eeprom中的起始地址 .wor …… 此处隐藏:3023字,全部文档内容请下载后查看。喜欢就下载吧 ……

TI DSP c6000的二次boot.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/412274.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)