不要押金的网上兼职:DM642小笔记 flash(摘录)

来源:百度文库 编辑:中财网 时间:2024/04/18 15:09:24

 

 

4. TDS642EVM 的FLASH 烧写
4.1 Flash 的外部接口和内部结构
4.1.1 Flash 的外部接口
TDS642EVM 板上有4M Bytes 的Flash 存储器,位于DM642 的CE1 地址空
间,宽度为8 bits。由于CE1 的地址空间小于Flash,所以用FPGA 扩展了3 根地
址线,把Flash 分为8 页,每页512k bytes,在板子复位时,Flash 位于第0 页。
在板子的初始化完成后,可以通过FPGA 控制选页,从而实现对Flash 各页的读
写操作。
50
4.1.2 Flash 的内部结构
如下图所示,Flash 第0 页的前半页(256k bytes),用于存放用户的自启动
程序。后半页(256k bytes)用于存放FPGA 的程序,第一页(512k bytes)预留
为用户存放数据空间。第2 页至第7 页(3M bytes)用于存放用户程序。
如果用户程序小于256k bytes(以下简称小程序),可放在boot_loader 段,
可参考项目:load_fpga。具体建立方法参考4.2.2。
如果用户程序大于256k bytes(以下简称大程序),在boot_loader 段放不下,
可把用户程序放在第2 页起始的位置上,最大可存放3M bytes。在boot_loader 段
再放一个启动程序,当启动程序运行后,把从第2 页开始的用户程序调入内存,
开始执行。启动程序可参考项目:load_userpro。用户程序建立请参考4.2.3。

51
4.2 建立可完成自启动的程序
4.2.1 DM642 从Flash 中的引导过程
在DM642 上电或复位时,如果选择的是从Flash 中引导程序,dsp 会从Flash
的起始地址拷贝1k bytes 的代码到内部RAM 地址为0 处,并开始执行。用户需
要用这1k 的代码把自己的用户程序加载并指向起始点,开始运行。
4.2.2 小程序建立
如果用户程序较小,可直接烧写在Flash 中boot_loader 段,原有的用户程序
可选择添加boot 代码段的方法,使程序具有自启动功能,可参考项目:load_fpga。
步骤如下:
1. 使用BIOS 配置工具创建BOOT 内存区,打开BIOS 配置工具。右击System
→MEM - Memory Section Manager,选择Insert MEM,创建BOOT 段,起始
地址为0,长度为0×400,如果已存在内存段(如ISRAM)是从地址0 开始
的,则需要把这个内存段后移,从0×400 开始,并把长度减去0×400。
2. 添加.boot_load 段代码,Project→Add File to Project,把boot.asm 加入到
用户程序中,boot.asm 在ti\boards\tds642evm\flashburn\fpga_loader 目
录下。

52
3. 创建连接命令文件(如userlink.cmd),取代原有的BIOS 自动产生的cmd 文
件(如fpga_loadercfg.cmd)。在新建的cmd 文件中,包含原有的cmd 文件,
并把.boot_load 段代码映像到BOOT 内存区。内容如下:
4.2.3 大程序建立
如果用户程序大于256k bytes,在boot_loader 段放不下,可把用户程序放在
Flash 第2 页开始的后6 页,还需要把load_userpro 程序烧入Flash 中的boot_loader
段。DSP 复位后,先运行load_userpro 程序,作完板子的初始化以后,从Flash 的
第2 页开始读取用户程序,读完以后,转向用户程序的入口地址开始执行。为保
证用户程序的正常加载,需要注意以下问题:
1. 用户程序的内存段要从0×400 地址以后开始定义。如下图:
2. 在BIOS 中须指定存储器时,指定为SDRAM。
4.3 使用2 进制文件转换工具
用户的程序经过编译,生成的.out 文件需转换成.hex 文件后,才能烧入Flash。

53
转换工具为: hex6x,在ti\boards\tds642evm\flashburn\fpga_loader 目录下。文件转
换步骤如下:
1. 建立cmd 文件,设置hex6x 的程序参数,以load_userpro_ahex.cmd 文
件为例。
Flag Description
-a Select ASCII hex file format for output
-memwidth 8 Generate output for an 8-bit wide Flash device
-bootorg 0×90000400 Address to place the boot table (base of Flash +
0×400)
-bootsection .boot_load
0×90000000
Place the .boot_load memory section at the
beginning of Flash (address 0×90000000)
-map load_userpro_ahex.map Generate .map file
注意在rom 下大括号中定义的文件长度,0×80000 为512k bytes,如果文件
较大,长度也应改大,最大为不能超过3m bytes(0×300000)。
2. 建立.bat 文件,内容如下:
3. 运行.bat,执行文件转换操作。生成两个文件,load_userpro_ahex.hex
和load_userpro_ahex.map 文件。.hex 文件即为要烧在Flash 中的文件。
4.4 烧写Flash
在烧写Flash 时,要先对Flash 中原有的内容进行擦除,在烧写顺序上,要

54
先烧FPGA 的程序,再烧写用户程序。
4.4.1 烧写FPGA 的程序
1. 进入ccs,点击tools→flashburn,进入Flashburn 界面。
2. File→open,选择ti\boards\tds642evm\flashburn 目录下的配置文
件fpga.cdd。并打开,如下图:

55
3. Program→Erase Flash,擦除原有的Flash 中的数据。此操作为擦
除Flash 中的全部内容,因此在烧写用户代码时,就不能再做擦除
操作了。
4. Program→Program Flash,把FPGA 的程序写入到flash 中。
5. File→Close,退出FPGA 烧写程序。
4.4.2 小程序的烧写步骤
1. File→New,创建新的配置文件。

56
2. 进行参数设置,在Downloading 栏中,File to burn 项填入要烧写的用户
程序的.hex 文件,logical Addr 填入0×0。在Target System 栏中,Processor
Type 项选择64x , FBTC Program File 项选择
ti\boards\tds642evm\flashburn 目录下的FBTC642.out 文件,Flash Physical
项填入0×90000000,Bytes 项填入0×400000。以fpga_loader 项目为例,
见下图:

57
3. File→Save,保存.cdd 配置文件。
4. Program→Download FBTC,建立Flashburn 与Flash 的通信。如果成功,
Target System 栏内图标变为连接状态。
5. Program→Program Flash,把用户代码写入Flash 中。
6. File→Close,退出FPGA 烧写程序。
4.4.3 大程序的烧写步骤
在烧写大程序时,还要烧写大程序的加载程序。

58
4.4.3.1 烧写加载程序
1. File→open,选择ti\boards\tds642evm\flashburn\load_userpro 目录
下加载程序的配置文件load_userpro.cdd。并打开,如下图:
2. Program→Program Flash,把FPGA 的程序写入到flash 中。
3. File→Close,退出FPGA 烧写程序。
4.4.3.2 烧写用户程序
1. File→New,创建新的配置文件。

59
2. 进行参数设置,在Downloading 栏中,File to burn 项填入要烧写的用户
程序的.hex 文件,logical Addr 填入0×100000。在Target System 栏中,
Processor Type 项选择64x , FBTC Program File 项选择
ti\boards\tds642evm\flashburn 目录下的FBTC642.out 文件,Flash Physical
项填入0×90000000,Bytes 项填入0×400000。见下图:
3. File→Save,保存.cdd 配置文件。
4. Program→Download FBTC,建立Flashburn 与Flash 的通信。如果成功,
Target System 栏内图标变为连接状态。
5. Program→Program Flash,把用户代码写入Flash 中。
6. File→Close,退出FPGA 烧写程序