0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何采用DATA进行Flash的在线烧写

电子设计 来源:郭婷 作者:电子设计 2019-02-06 08:51 次阅读

引言

自加载后DSP能够正常运行,关键是Flash中原程序代码的正确烧写。CCS编译生成的.out格式文件不能直接用于Flash烧写,在TI公司给出的技术文档闭中,首先将.out文件利用其HEX工具转换为.hex格式文件,然后利用Flash烧写工具将.hex格式映像文件写入到片外Flash中。.out格式到.hex格式转换操作,需要编写特定格式的命令文件;将.hex格式文件烧写到Flash,需要严格按照.hex文件中的数据存放格式,编写相应的Flash烧写程序。对于初学者而言命令文件、烧写程序的编写则不容易理解和掌握,其中任何一个环节出现错误都将导致Flash烧写的失败。这里提出了一种简单且方便可行的DATA直接烧写方法,不需要数据格式的转换,保存有效的烧写DATA后,只需编写简单且容易理解的烧写程序即可完成Flash在线烧写。

2 DATA直接烧写原理

TMS320C671l提供含有DEBUG模块的JTAG接口,可以通过JTAG接口访问DSP内部寄存器和挂在CPU总线上的设备,对DSP内部所有部件进行编程。在工程开发初始阶段,一般都是通过JTAG口采用硬件仿真器进行调试,将CCS编译生成的.out文件,通过仿真器加载到DSP板卡系统中,加载成功后,会弹出一个Disassembly(反汇编)窗口,如图1所示。

如何采用DATA进行Flash的在线烧写

从窗口中可以看到程序加载的位置、对应的机器指令和汇编语言指令。DSP器件正常工作,支持二进制机器指令代码,仿真器加载.out文件的操作完成了.out格式到.hex格式的转换,将DSP运行所需要的二进制机器指令代码加载到DSP板卡。其加载的位置可由CCS中的cdb配置文件设定,也可以用户编写Linking文件指定。虽然.out文件不能直接用于片外Flash烧写,但CCS具有存储器内的数据保存和加载功能,所以,在仿真器加载.out完成后,将存储器中的二进制机器指令数据保存起来,再通过JTAG口采用在线编程的方式,将保存下来的数据烧写到片外Flash中。这就不必进行.out格式到.heX格式的转换,可方便容易地完成片外Flasn直接烧写,这就是DATA直接烧写原理。

3 COFF段设置及保存与二级加载设计

3.1 COFF段设置

CCS编译成功后生成一个.map文件,在文件中可以查看存储器的使用情况,COFF段运行地址,加载地址及段的长度。COFF段按属性可分为Initialized和Unintialized,Initialized段需要在DSP上电复位时从加载地址搬移到运行地址。要得到在线烧写方便且有效的DATA,必须为COFF段指定特定的运行地址,然后将运行地址上的DATA进行保存.DSP上电复位后的加载操作则实现DATA从Flash到运行地址上的还原。

COFF段运行地址的指定可以手动编写Linking文件,应用DSP/BIOS操作系统时也可直接对MEM属性进行设置。这里选用的TMS320C6711器件,内部RAM为64 K,在程序小于64 K、RAM不做他用时,将COFF段运行地址全部指定在内部RAM。因为TMS320C6711上电复位自加载l K大小的程序,大多数情况下远不能满足需求,需采用二级加载的方式,将自加载的1K字节指令代码设计成二级加载程序,完成剩余代码的搬移。DSP上电复位结束后是从内部RAM的零地址开始执行,需要将内部RAM零地址开始的1 K大小的存储区域分配给二级加载程序代码段,剩余的内部RAM作为存储其他COFF段使用。内部RAM划分情况如表l所示。

如何采用DATA进行Flash的在线烧写

应用DSP/BIOS操作时,图2给出在.cdb文件中对COFF段运行地址的设置。二级加载程序.boot段不能通过.cdb文件设置,需要在工程的Linking文件中以下面的格式设定其运行地址:

在没有应用DSP/BIOS,而是手动编写Linking文件时,需要以同样的格式在SECTI*大括弧内设定所需要加载的COFF段。

3.2 DATA保存与二级加载设计

由于TMS320C67ll自加载的l K程序不能满足需求,需要进行二级加载程序设计。DATA方法二级加载的实质就是将运行地址下的有效数据通过二级加载从外部Flash还原到运行地址下,使程序能够按照仿真器模式那样的状态正常运行。二级加载所需要的正确EMIF配置,二级加载方式以及加载结束后跳转到C语言入口函数_c_int00()等设计在很多资料中都有介绍,在此不予赘述。这里主要介绍用于二级加载所需要的DATA保存操作,以及二级加载程序中,搬移表源地址,目的地址及其长度的设计方法。

如何采用DATA进行Flash的在线烧写

文中3.1部分将COFF段运行地址指定为IRAM,在编译生成的.map文件中,可看到图3所示的COFF段信息。从COFF段可看到其运行起始地址,长度及属性信息,将.out文件通过仿真器加载到DSP中后,根据.map文件保存属性为Initialized的COFF段。在保存操作中发现Initialized段可能不连续,需要分多个数据段进行保存。当Uninitialized段与相邻的Initialized段大小比较可忽略时,可将Initialized段间的Uninitialized段一起保存起来,它不会影响二级加载后程序的运行,这样做既能减少需要保存数据段的个数,又能简化保存操作,二级加载程序及在线烧写程序的设计。

如何采用DATA进行Flash的在线烧写

在二级加载程序搬移表中,要严格按照保存的DATA段信息进行搬移表配置,其格式如下:

如何采用DATA进行Flash的在线烧写

其中,Length为所保存的DATA段的长度:Destination Addr为DATA段IRAM中的起始地址;Source Addr为将保存的DATA段存放于外部Flash的起始位置。在线烧写程序中要严格按照此搬移表中的Source Addr值将保存的DATA段烧写到Flash的相应位置。有多个DATA段时,要配置相应个数的搬移参数表。

4 Flash在线烧写设计

将用户程序代码写入Flash的方法一般有2种:①用专门的Flash编程器实现;②根据DSP与Flash的接口,通过在线编程来实现。前者的主要优点是使用方便可靠,但要求Flash只能是双列直插等一些可插拔的封装形式,且表面贴装或PLCC封装的Flash难以利用编程器实现;后者克服了前者的缺点,使用灵活,因而在DSP系统中得到广泛采用。

Flash在线烧写操作就是将保存起来的DATA,烧写到二级加载程序搬移表所指定位置的Flash中。在线烧写的思想是,首先将保存起来的DATA加载到DSP的内部RAM或系统的外部RAM中,再通过在线烧写程序将加载的DATA写入到Flash中。DSP实验板Flash采用的是AM29LV160D,根据其数据手册分别建立擦除void ChipErase(void)和写入Byte Write(int offsent,short data)子函数。编写在线烧写程序如下:

如何采用DATA进行Flash的在线烧写

在对Flash写操作前首先要进行其擦除,在擦除后要指定DATA存放首地址Saddr,要烧写到的Flash首地址FlashAddr,以及待烧写的数据长度Length。在有多个DATA段时,程序中要进行相应个数的DATA段烧写指定操作。

在线烧写程序设计完成后,编译将.out文件下载到DSP中,可以在擦除操作完成,开始烧写前设置断点,运行完Flash擦除操作后,将保存的DATA加载到程序中指定的位置,为了确保烧写程序的正常运行,不能将DATA加载到烧写程序占据的RAM空间。当所需要烧写的DATA全部加载完成后继续运行烧写程序,即可完成Flash的在线烧写。

基于所用到的实验板,在Flash烧写完成后断电,将DSP设置为Flash启动模式,再上电,测试到应用程序中预先设计的运行指示,表明Flash已烧写加载成功,验证了DATA方法的Flash烧写是切实可行的。

5 结语

详细介绍了DATA方法直接烧写原理,如何进行合适的COFF代码段设置,如何保存烧写数据DATA以及二级加载程序和在线烧写程序的相应设计。DATA方法容易理解,操作简单、不易出错,能够简便、快捷的完成Flash的烧写操作,为DSP开发者提供了一条有效的Flash烧写途径。该方法适应于C6000系列所有DSP,其设计思想对其他系列的DSP也提供了有益的借鉴。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    553

    文章

    7984

    浏览量

    348710
  • 寄存器
    +关注

    关注

    31

    文章

    5334

    浏览量

    120219
  • FlaSh
    +关注

    关注

    10

    文章

    1632

    浏览量

    147926
收藏 人收藏

    评论

    相关推荐

    适应于C6000系列DSP器件的DATA直接原理和设计

    可行的DATA直接方法,不需要数据格式的转换,保存有效的DATA后,只需编写简单且容易理
    发表于 09-25 16:35 1600次阅读
    适应于C6000系列DSP器件的<b class='flag-5'>DATA</b>直接<b class='flag-5'>烧</b><b class='flag-5'>写</b>原理和设计

    TI的DSP在线方法

    由于 TI 的 DSP 要比单片机略微复杂,很多客户对不是很熟悉,所以我们将方法做一
    发表于 07-21 17:07 2146次阅读

    hex文件到flash问题

    本帖最后由 sundonga 于 2014-10-29 10:36 编辑 各位大侠,我仿照别人的程序改写了一个自己的hex文件程序,DSP是DSP6713,
    发表于 10-29 10:31

    并行flash

    并行flash如何实现在线
    发表于 08-07 13:19

    TMS320F2812片内Flash在线技术

    基于TMS320F2812内部Flash在线技术,提出了一种串口
    发表于 12-20 17:02 57次下载

    基于CCS的DSP片外Flash直接设计

    基于CCS的DSP片外Flash直接设计 自加载后DSP能够正常运行,关键是Flash中原程序代码的正确
    发表于 10-04 09:41 3336次阅读
    基于CCS的DSP片外<b class='flag-5'>Flash</b>直接<b class='flag-5'>烧</b><b class='flag-5'>写</b>设计

    JTAG接口在线Flash的实现

    本文阐述了一种针对TMS320VC5509A DSP 简单有效的Flash 方法, 并提出了程序自举引导的实现方法。可以有效地解决程序代码存储问题和DSP 脱机自举问题.
    发表于 09-16 14:43 1.6w次阅读
    JTAG接口<b class='flag-5'>在线</b><b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>Flash</b>的实现

    CCS4向内置flash程序过程

    用CCS4向内置flash程序过程这期间要用到100V2仿真器
    发表于 12-04 14:44 18次下载

    FPGA配置– 使用JTAG是如何SPI/BPI Flash的?

    Xilinx的JTAG电缆可以通过FPGA“直接”SPI/BPI。很多对xilinx开发环境不熟悉的用户,如果第一次接触这种模式可能会有疑惑,FPGA是如何做到JTAG和
    发表于 02-08 02:40 8310次阅读
    FPGA配置– 使用JTAG是如何<b class='flag-5'>烧</b><b class='flag-5'>写</b>SPI/BPI <b class='flag-5'>Flash</b>的?

    使用JTAGNand Flash实验解析

    的FS2410及Flash工具为例进行讲解,不同厂商的开发板都会提供相应的Flash
    发表于 10-18 17:03 6次下载
    使用JTAG<b class='flag-5'>烧</b><b class='flag-5'>写</b>Nand <b class='flag-5'>Flash</b>实验解析

    CCS的DSP片外Flash直接设计

    CCS的DSP片外Flash直接设计
    发表于 10-20 08:29 3次下载
    CCS的DSP片外<b class='flag-5'>Flash</b>直接<b class='flag-5'>烧</b><b class='flag-5'>写</b>设计

    Jlink使用技巧之SPI Flash存储芯片

    大多数玩单片机的人都知道Jlink可以Hex文件,作为ARM仿真调试器,但是知道能SPI Flash的人应该不多,本篇文章将介绍如何
    发表于 01-26 18:37 4次下载
    Jlink使用技巧之<b class='flag-5'>烧</b><b class='flag-5'>写</b>SPI <b class='flag-5'>Flash</b>存储芯片

    可供用户修改的FLASH驱动介绍

    为方便客户针对 S698 芯片外接不同种类的 FLASH 进行在线编程。V8mon 的 FLASH 提供源码可以
    发表于 06-08 14:39 0次下载
    可供用户修改的<b class='flag-5'>FLASH</b><b class='flag-5'>烧</b><b class='flag-5'>写</b>驱动介绍

    华大单片机在线工具

    华大单片机在线工具
    发表于 09-26 16:32 0次下载

    TI、DSP方法介绍

    由于 TI 的 DSP 要比单片机略微复杂,很多客户对不是很熟悉,所以我们将方法做一
    发表于 10-07 14:22 1516次阅读
    TI、DSP<b class='flag-5'>烧</b><b class='flag-5'>写</b>方法介绍