Chinaunix首页 | 论坛 | 博客
  • 博客访问: 682597
  • 博文数量: 516
  • 博客积分: 4119
  • 博客等级: 上校
  • 技术积分: 4288
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 17:29
文章分类

全部博文(516)

文章存档

2014年(4)

2013年(160)

2012年(352)

分类: Android平台

2013-06-04 18:32:37

首先介绍一下FlashBurn软件,它是TI的第三方软件公司为TIDSP编写的Flash烧写软件,和CCS软件配合使用,通过DSP内部运行的FBTC实现Flash的读写和擦除。

在这里很有必要说一下DM6437从外部Flash启动的整个过程。首先,当系统加电或复位之后,DSP内核被锁住,暂停工作,EDMA自动的从外部Flash的首地址(基地址)搬运1KB的内容到内部cache的首地址,搬运完成之后,启动DSP内核,CPU运行这1KB的程序,这个程序的作用相当于一个bootloader的作用,完成二次启动,从外部Flash预先设定好的地址开始将真正要运行的程序搬运至DSPcache中,搬运完毕后,运行_c_int00,进入到真正程序运行。这样就实现了DSP内核的启动。

然后说一下FlashBurn的工作过程:软件打开之后,链接CCS,进而连接到目标板上,实现软件和目标板的通信。然后下载FBTC到目标板上,在这里,FlashBurn软件和FBTC程序就相当于一个上位机软件和下位机软件的关系,软件和FBTC进行命令交互,完成如下几个功能:Flash读、写、擦除。如下图所示:

在工程中,CCS自动生成的是.out文件,而FlashBurn软件要求的是.hex文件,所以我们还要将目标out文件转换成hex文件,需要用的工具叫做hex6x.exeCCS自带的有,具体目录在C:\CCStudio_v3.3\C6000\cgtools\bin),它的具体使用命令为(DOS环境):

hex6x.exe OutToHexConvertParams.cmd

其中OutToHexConvertParams.cmdhex6x.exe实现将out文件转换成hex文件的参数文件

其内容为:

video_black_white.out //将要转换的文件名
-a //
生成的文件格式ASCII-Hex
-map video_black_white.map //
生成hex文件的map文件
-memwidth 8 //Flash
存储器的宽度
-boot //
生成引导程序表
ROMS
{
FLASH: org = 42004000h, //
二次引导的Flash地址

len = 02000000h, //Flash的最大容量(长度)

romwidth = 8, //Flash位宽

files = {video_black_white.hex}//将要生成的hex文件的文件名
}

在整个环节中,有两个个概念需要澄清,即Flash的基地址和二次搬移(引导地址),以及这两个地址是如何确定的:Flash的基地址就是你的目标板上Flash的物理地址,确定方法:由开发板的连接图可知,Flash被连接到CS2上,看其芯片资料可知CS2的物理地址范围为0x420000000x42FFFFFF,共16M的范围,所以Flash的基地址为0x42000000;而二次引导地址怎么确定呢,即从哪个地址开始引导的问题,前面提到DSP内核上电之后EDMA自动将低1KB的内容加载到cache中,所以这个地址的偏移地址最好要大于1KB(实际上只要大于开始引导程序的长度就可以,但是为了保险起见,一般都设置的大于1KB),在上面的cmd参数文件中,我们设定的二次引导地址为0x4200400h,为什么要设定成这个地址呢?这就牵涉到DSP引导程序中的Flash的二次搬运地址是如何设定的,这两个值一定要对应起来,也就是说,只有你引导程序是从hex文件烧写的起始地址开始搬运的,才能保证程序内容不会丢失。查看引导代码

由于引导程序的搬运起始地址设置的是0x42004000,所以我们的二次引导地址就设置成了0x42004000,其偏移量为4000H = 16KB > 1KB ,是可以接受的。

接下来就可以向目标板上烧写hex文件了,首先应擦除Flash,接着需要烧写两个hex文件,一个是引导程序的hex文件,另外一个是目标程序的hex文件,烧写完成之后重写启动就可以了。

阅读(3004) | 评论(0) | 转发(0) |
0

上一篇:无线路由器设置不求人

下一篇:C2000

给主人留下些什么吧!~~