ICETEK-DM642-PCI板上的29L008B芯片提供了8M位的Flash空间(访问地址空间是CE1,90000000h~90080000h)。主要用于自启动功能和存储FPGA的配置数据。

一、从FLASH自启动过程

系统复位后,DM642将flash空间的前1k字节复制到片内0地址开始的存储单元,从0地址开始执行。而用户程序往往大于1K字节,所以位于0地址的程序常是一个装载程序(Bootloader),用来完成将应用程序从Flash中读出放到RAM中。因此,在Flash中开始的1k字节存放Bootlader,接着是一个装载表(它指示了随后存放的程序或数据加载到RAM的哪个地址以及加载长度)。随后程序或数据分成多个块存储。如下图:

BootLoader程序开始执行后,首先设置CPU和外设寄存器(如EMIP寄存器),然后读入装载表并装载程序和数据。最后转到被装载的应用程序入口。

二、FPGA的配置

板上的FPGA,完成视频数据的叠加图形输出、指示灯控制等功能。掉电时配置丢失,所以需要特殊的配置数据装载后才能工作。配置数据一般放在Flash中,在系统上电时通过自启动加载(自启动程序中要包含配置FPGA部分,位置在第0页地址0x90040000之后)。为了板子能够正常工作,flash擦除后,要先把FPGA的配置数据写进去,然后再烧自己写的程序,中间不能有flash擦除动作。配置完成后,指示灯DS10亮。

三、Flash的烧写

FlashBurn烧写工具

1、Flashburn:TI的第三方软件公司 Software DesignSloutions 为TI的DSP用户编写的Flash烧写软件,给软件以CCS为基础,通过运行仿真程序FBTC,将用户程序写入Flash中。

2、FBTC.out文件:负责对flash的操作,比如flash的擦除、读、写等。如DM642开发板使用的FBTC文件在安装ccs的根目录下boards/evmdm642/flashburn/ FBTC642.out。可根据个人板子上flash的型号,因为不同型号的flash,它们的操作命令不一样。这样你就必须对FBTC工程进行修改,然后重新编译生成.out文件。

3、hex6x.exe:将project编译成功生成的.out文件转换为.hex文件的工具。

4、.cdd文件:保存Flashburn的设置的。

5、.cmd文件:指明flash属性(大小,数据宽度,起始地址和产生文件名),按照flash要求实现将.out文件到.hex文件的转换。ledprd_ahex.cmd文件内容为:

debug\ledprd.out

-a

-memwidth  8

-boot

-bootorg 0x90000400

-bootsection .boot_load0x90000000

ROMS

{

    FLASH: org = 0x90000000, len = 0x80000, romwidth = 8,files = {ledprd.hex}

}

其中,ledprd.out即project编译成功生成的.out文件;ledprd.hex即为要得到的.hex文件。

    6、out2hex.bat批处理文件:使用hex6x.exe,按照ledprd_ahex.cmd生成.hex文件。out2hex.bat文件内容如下:
hex6x ledprd_ahex.cmd  
@pause

注:实现Bootloader自引导功能,除了需要生成可执行文件(.out),还需要进行如下步骤:

、合理配置工程文件(.pjt):
需要添加一个boot.asm文件(这是一个标准的BootLoader程序,做搬移时一些初始化和跳转工作,用户可直接使用它完成程序的装载和运行,注意:它的代码属于“.boot_load”段);
工程中.cmd文件也需要为bootloader保留空间。具体操作:修改.cmd文件中的MEMORY和SECTION部分.(/修改BIOS配置文件:在MEN中创建名为BOOT的段,0地址开始,长度1k。并把已存在的内存段(如ISRAM)后移1k。)
     led.cmd文件内容如下:
-lledcfg.cmd          // -包含原有的cmd文件,
SECTIONS              //并把.boot_load段代码映射到BOOT内存去。
{
.boot_load >  BOOT
}  
、将添加了boot.asm和修改cmd后重新生成的.out文件,转化为.hex文件。这时需要一个.cmd文件(ledprd_ahex.cmd)。注意:它与工程文件中.cmd不同,不能混淆。

3、最后通过Flashburn工具将.hex文件写入Flash,这时需要转换.cmd文件、.hex文件和FBTC642.out文件。

2012.12.22

eagle

 
 

【DM642学习笔记三】flash的烧写的更多相关文章

  1. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  2. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  3. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  5. angular学习笔记(三十一)-$location(2)

    之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...

  6. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  7. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  8. angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

    在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...

  9. amazeui学习笔记三(你来我往1)--常见问题FAQs

    amazeui学习笔记三(你来我往1)--常见问题FAQs 一.总结 1.DOM事件失败:记得加上初始化代码,例如 图片轮播 $('#my-slider').flexslider(); 2.jquer ...

随机推荐

  1. MAMP mysql无法启动 总结(以后有发现再添加)

    1.错误信息Can't start server : Bind on unix socket: Address already in use 解析:主要原因是上次关闭Mysql是出现异常而导致的, 解 ...

  2. JAVA 文件的上传下载

    一.上传文件 1.使用 transferTo 上传 @ResponseBody @RequestMapping(value = "/file/upload") public Res ...

  3. SpringBoot--springboot启动类和controller的配置

    作为一个springboot初学者,在探索过程中难免遇到一些坑,边看书边动手,发现书本中的版本是1.0,而我使用的是最新版2.0,所以有些东西不能完全按照书本进行操作,因为2.0中已经不支持1.0中的 ...

  4. Mysql配置innodb_flush_log_at_trx_commit

    当innodb_flush_log_at_trx_commit被 设置为0,日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作.当这个值为1(默认值)之 ...

  5. Mysql优化系列之查询性能优化前篇1

    前言 这是优化系列的最后一篇的第1小篇,我们其实可以直接从sql怎么写讲起,why not?但是我还是决定花2个篇幅 问一些问题,带着几个问题循序渐进的往下走. 一个sql语句是怎么被执行的? sql ...

  6. 【LGP5350】序列

    题目 可能\(\operatorname{fhq\ treap}\)能做,但是珂朵莉树显然更好写 珂朵莉树是个很玄学的东西啊,就是直接使用\(\operatorname{std::set}\)维护每一 ...

  7. springcloud系列12 config的使用

    config组件分为server端和client端 config的原理: 就是当我们将配置文件放置在git上面,那么configserver就会去拉取相关配置文件至本地: 可以看到我本地是拉去了配置文 ...

  8. CNN网络中的不变性理解

    神经网络中的不变性 原文:https://blog.csdn.net/voxel_grid/article/details/79275637     个人认为cnn中conv层对应的是“等变性”(Eq ...

  9. 企业网盘居然支持高速局域网文件传输工具(速度可达20M)

    高速局域网文件传输工具Mobox,局域网内文件共享是公司内非常必须的功能,原本文件共享可以通过:1)windows目录共享目录来实现文件交互:2)通过U盘拷贝给对方:3)通过QQ发送给对方:4)通过邮 ...

  10. 【BZOJ4407】于神之怒加强版

    题面 题目分析 \[ \begin{split} \sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)^k&=\sum\limits_{d=1}^nd^ ...