首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

详解FlashBurn的hex文件烧写

详解FlashBurn的hex文件烧写

实现在FLASH存储器烧写程序一般有以下三种方法:一是通过编程器下载烧写;二是通过开发商提供的专门软件工具+在线仿真器烧写;三是自己编程通过DSP烧写。个人使用的是合众达电子SEED-VPM642开发板,在最新版本例程中提供了专用的烧写软件SeedConvertTool.exe;但为了实现通用的FLASHBURN烧写,我进行了一些尝试以便了解程序烧录过程及运行情况。

实现Bootloader自引导功能,除了需要生成可执行文件(.out),还需要进行如下步骤:
1、合理配置工程文件(.pjt):需要添加一个boot.asm文件(做搬移时一些初始化和跳转工作),另外工程中.cmd文件也需要为bootloader保留空间。
2、将添加了boot.asm和修改cmd后重新生成的.out文件转化为.hex文件,这时需要一个转换.cmd文件(这个.cmd文件与工程文件中.cmd完全不同,前者是为了指明flash的属性(大小,数据宽度,起始地址和产生文件名)以实现转换.out文件为flash兼容的.hex文件,不能混淆)。
3、最后通过Flashburn工具将.hex文件写入Flash,这时需要转换.cmd文件、.hex文件和FBTC642.out文件。

介绍下各烧录中用到的文件(Flashburn、FBTC.out、hex6x.exe,.cdd和.cmd文件)作用:
1、FBTC.out文件:负责对flash的操作,比如flash的擦除、读、写等。这里主要看个人板子上flash的型号,因为不同型号的flash,它们的操作命令不一样。这样你就必须对FBTC工程进行修改,然后重新编译生成.out文件。如DM642开发板使用的FBTC文件在安装ccs的根目录下(boards\evmdm642\flashburn\FBTC642)。
2、hex6x.exe:将用户工程生成的.out文件转换为二进制文件的工具,这样Flashburn就可以将.out文件以二进制方式烧进flash中。
3、Flashburn:TI的第三方软件公司 Software Design Sloutions 为TI的DSP用户编写的Flash烧写软件,给软件以CCS为基础,通过运行仿真程序FBTC,将用户程序写入Flash中。
4、.cdd文件:保存Flashburn的设置的。
5、.cmd文件:指明flash属性(大小,数据宽度,起始地址和产生文件名),按照flash要求实现将.out文件到二进制文件的转换。

具体步骤:
1。用户程序中添加boot.asm文件,修改.cmd文件中的MEMORY和SECTION部分(DSP/BIOS环境中直接通过配置CDB或者TCF文件中的System->MEM->ISRAM即可;非DSP/BIOS在cmd文件中添加一个名为BOOT的section,位置为0x000,长度为0x400),在连接仿真器环境下编译生成可执行的.out格式的COFF文件。
2。使用HEx6.exe工具,将工程文件生成的.out文件转换成为HEX的ascii格式的二进制文件。
a.编写一个.cmd文件用于设置hex6x.exe的参数
如果例程中存在,则可用记事本打开如下:
SeedH264loopback.out
-a
-memwidth  8
-boot
-bootorg 0x90000400
-bootsection .boot_load 0x90000000
ROMS
{
    FLASH:  org = 0x90000000, len = 0x400000, romwidth = 8, files = {SeedH264Loopback.hex}
}
b.生成二进制文件:
两种方法:
i)将.cmd文件和.out文件放在同一目录下,双击convert.bat。具体操作是将三个文件复制到一起分别是:hex6x.exe和.cmd以及.bat在编辑修改其中的内容(改文件名),最后运行批处理文件即可;
ii)通过windows命令窗口键入命令进行转换。将.out文件,cmd文件,和hex6x.exe文件放在同一个文件夹内。如C:\DSP_BURN。在dos窗口中键入cd C:\DSP_BURN将路径改为“C:DSP_BURN>”,再键入“hex6x.exe XX.cmd”结果生成“XX.hex”文件
在DOS下进入程序保存的目录,直接运行(hex6x.exe)如D:\ti\myprojects\a_video_process_XY>hex6x hex6x.cmd文件得到二进制文件(可以从DOS状态看到),此时就得到了seedvpm642_vedioloop_ahex.hex(文件名可能不同)用于烧写的文件。
注意:hex6x.exe的版本,如果版本太低,在转换过程中会出现问题。
二、改写FBTC工程,这个CCS工程编译而成的文件主要是对flash的操作,其作用相当于一个搬运工具,将hex文件由PC搬入Flash中。这里要注意自己的CCS版本和flash的型号,编译完成会得到一个FBTC642.out文件。对于不同的DSP系统板,TBTC工程主要修改DM642teb.h、FBCmd.c、FBTC_DM642.c和FBurnCmd.c等文件。
  
三、打开开发板上电,启动ccs软件,加载gel文件并连接(connect)硬件仿真器。

四、打开FlashBurn软件,重新对主界面中“Conversion Cmd”、“File to burn”、“Fbtc program file”的三个文件的路径重新设置,分别点击“Browser”按钮,找到事先创建的相应目录下的三个文件“.cmd”、“.hex”、“FBTC642.out”;然后保存关闭cdd文件。
五、点击 flashburn软件中的“Program”依次“download FBTC”(下载),“Erase  Flash”(擦除),“show memory”(查看),“Program flash”(编程)。完毕后拔出仿真器,关电源重启即可成功实现烧写。
更多介绍请见:http://blog.sina.com.cn/s/blog_48fc29af0100n4ye.html

烧写过程中遇到的问题

使用合众达电子SEED-VPM642例程中flashburn程序需要用到的FBTC文件会出现提示:
## 06/29/06 11:35:02
Attempt to create Code Composer Studio...
CCS created OK.
Either I cannot load FBTC, or the FBTC is not compatible with this version of FlashBurn.
Verify that the FBTC file is compatible with target and this version of FlashBurn.
这是由于烧写所需要的文件存放路径不同引起的,因为合众达的工程师在开发这个例程的时候保存配置文件是按照他自己的存放来保存的(F:改为你存放的例程文件夹目录地址),所以你需要修改。最方便的办法就是重新浏览各个配置文件的地址。然后利用flashburn打开CDD配置文件又会提示:
## 06/30/06 12:53:44
Attempt to create Code Composer Studio...
CCS created OK.
Req. FBTC Load.
FBTC Download OK.
Failed to get msg storage addr
Cannot load FBTC Program

这是由于该例程提供的FBTC642文件(大概22k)应该只能用于CCS3.0以下;而个人安装的是CCS3.3版本的,因此提示flashburn和FBTC不兼容。
解决方法有2种:重新安装低版本的CCS软件;使用兼容的FBTC。
个人经过认真的分析和查阅网上资料,用一下午的时间终于解决这个问题了,最后实现了利用flashburn烧写将工程的可执行文件生成的二进制文件.
继承事业,薪火相传
很好的帖子,感谢楼主的分享。
返回列表