基于DSP TMS320F206的仿真调试

发布者:bianzitong521最新更新时间:2009-08-14 来源: 今日电子关键字:TMS320F206  仿真调试  Flash 手机看文章 扫描二维码
随时随地手机看文章

前言

    TMS320F206(以下简称F206)是C2XX系列DSP中的一个产品,其独有的片内32KB的闪速存储器FLASH使其仿真调试与众不同。F206带有程序、数据和I/O三个相互独立的存储空间,每个存储空间均为64K×16位,其中片内双访问RAM为544字(288字用于数据,另256字可用于程序/数据),片内FLASH为32K字,片内单访问RAM为4.5K字,其具体分布如表1所示。
F206的仿真调试

● F206仿真调试的特点

    F206的仿真调试器没有采用传统的插入仿真的方法,而是通过仿真器与DSP芯片上的几个仿真引脚间通信实现,F206具有符合IEEE1149.1标准的JTAG逻辑扫描电路,扫描仿真不仅克服了因仿真电缆过长而引起的信号失真,而且克服了传统单片机“插入式”仿真方式脱机运行时就出错的缺点。利用闻亭公司生产的EPP_XDS510仿真器进行系统的在线仿真调试,其一端与计算机的并口相连,另一端通过一双列14脚的仿真插头与F206通信。

● 问题的提出

    如果所要进行仿真的硬件装置没有外部存储器,此种情况下如何实现仿真呢?若将程序完全定位至8000H开始的片上SARAM内,则与F206中断向量表应该定位至0000H相矛盾,从而中断进一步程序将不可能正确运行;若将程序完全定位至0000H开始的FLASH内,虽保证了中断进一步程序可以正确运行,但是由于在FLASH内无法设置断点,所以此种情况下不能顺利进行仿真调试;若将中断向量表定位至0000H的FLASH内,将程序的其他部分定位至8000H内,可以保证中断进一步程序的正确执行,也可以在SARAM内设置断点,似乎是一种可行的方法,但是程序每改动一点,也就意味着中断向量表也要做相应的修改,即要再次将中断向量表烧写到FLASH内,不仅麻烦而且对FLASH也有损伤。

● 问题的解决

    针对以上种种方案存在的弊端,笔者提出了一种行之有效的解决办法,那就是将中断向量表和程序都定位至8000H开始的SARAM内,而在0000H烧写进一定的跳转语句,这样既保证了中断的正确执行,程序断点的调试,同时对FLASH也只要进行一次烧写即可。

    首先完成跳转语句的烧写。F206的FLASH烧写必须具备如下几个前提:FLASH烧写工作只能在WIN98操作系统下完成,在WIN2000操作系统下将会显示窗口初始化失败,被强行关闭;时钟频率必须为20MHz。

    相应的CMD文件为:

    MEMORY
    { PAGE 0: VECB :org= 0000h,length=40h
    ......
    PAGE 1:
    ......
    }
    SECTIONS
    { vectorb : {} > VECB PAGE 0
    ......
    }

    相应的vectorb的程序为如下。

    *File: vectorb.h *
    *File defines Interrupt vector labels *
    .global _c_int0
    .global _c_int1
    .global _c_int2
    .global _c_int3
    .sect "vectorb"
    b 8000h ;硬件复位c_int0
    b 8002h ;外部中断1 /INT1
    b 8004h ;外部中断2 INT2/INT3
    b 8006h ;定时器中断
    nop
    nop
    b 8000h
    b 8000h ;保留
    b 8000h ;保留
    b 8000h ;保留
    nop
    nop
    b 8000h
    b 8000h
    b 8000h
    b 8000h

    假设烧写程序在E:LOADEPP目录下,则将上述工程编译并建立形成的TZ.OUT文件也复制到同样的E:LOADEPP目录下,然后执行如下烧写语句。

    E:LOADEPP>PRG2XXPP -P 280 -M 0X0006 -S 0X4007 -W 6 -E SRCC2XX_SPX.OUT TZ.OUT即可。

    在跳转语句的烧写完成后,即可将中断向量表和程序都定位至8000H开始的SARAM内,这样在SARAM内既可很方便设置断点,同时已经烧写进FLASH的跳转语句又能保证中断的正确执行,且每次对程序修改后无需再次对FLASH烧写,只要重新生成.OUT文件,然后执行CCS的FILE菜单下的LOAD PROGRAM即可。

  相应的CMD文件如下。

   MEMORY
   { PAGE 0:
   VEC :org=8000h,length=40h
    PROG :org=8050h,length=0600h
    PAGE 1:
    RAM_B2 :org=60h,length=20h
    RAM_B0 :org=0200h,length=0100h
    RAM_B1 :org=0300h,length=0100h
    DATAS :org=11ffh,length=0600h
    }
    SECTIONS
    { .data : {} > RAM_B0 PAGE 1
    .stack: {}> DATAS PAGE 1
    .bss : {}>DATAS PAGE 1
    /******************************************/
    vectors : {} > VEC PAGE 0
    .text : load > PROG, PAGE 0
    .mirro : {} > PROG PAGE 0
    .cinit : {} > PROG PAGE 0
    }

    相应的vectors中断向量表的程序如下。

    * File: vector.h *
    * File defines Interrupt vector labels *
    .global _c_int0
    .global _c_int1
    .global _c_int2
    .global _c_int3
    .sect "vectors"
    b _c_int0 ;硬件复位c_int0
    b _c_int1 ;外部中断1 /INT1
    b _c_int2 ;外部中断2 INT2/INT3
    b _c_int3 ;定时器中断
    nop
    nop
    b _c_int0
    b _c_int0 ;保留
    b _c_int0 ;保留
    b _c_int0 ;保留
    nop
    nop
    b _c_int0
    b _c_int0
    b _c_int0
    b _c_int0

结语

    针对具有片内FLASH的DSP芯片TMS320F206,在没有片外RAM的情况下如何方便有效的进行仿真调试,本文提出了一种行之有效的解决办法,以期对各位致力于DSP研究开发的同仁有所帮助。

关键字:TMS320F206  仿真调试  Flash 引用地址:基于DSP TMS320F206的仿真调试

上一篇:Actel推出LIBERO IDE 8.6版本
下一篇:基于SoPC目标板Flash编程设计的创建及应用

推荐阅读最新更新时间:2024-05-02 20:51

HOLTEK新推出TinyPowerTM LCD Flash MCU系列
Holtek推出全新系列的TinyPowerTM LCD Flash MCU,全系列包含HT69F30A、HT69F40A及HT69F50A三个MCU,符合工业上-40℃ ~ 85℃工作温度与高抗噪声之性能要求,且提供48 ~ 80-pin的不同封装型式,搭配TinyPowerTM Flash MCU的丰沛硬件资源及使用弹性,适合各种应用领域的产品,诸如家电、工业控制、面板显示及医疗保健等。 HT69FxxA系列Program Memory为2K~8K Words、SRAM由128~384 Bytes、内建64/128 Bytes Data EEPROM、具有96~192点的LCD Driver、同时支持R-t
[单片机]
HOLTEK新推出TinyPowerTM LCD <font color='red'>Flash</font> MCU系列
兆易创新优化供应链结构,NOR Flash产能依旧供应紧张
3月26日晚间,兆易创新发布2019年年度财报,公司实现营业收入320,292万元,比2018年同期增长42.62%;归属于上市公司股东的净利润60,692万元,比2018年同期增长49.85%;公司拟每10股转增4股并派现3.8元。 2019年,兆易创新依据业务经营情况调整公司组织架构,组建完成了存储+MCU+传感器为核心的三大事业部架构,现有的业务布局分为存储、MCU和传感器三大方向。在Flash方面,2019年,得益于兆易创新Flash产品的技术创新,以及TWS耳机等驱动的NOR Flash产品需求增加,根据CINNO Research产业研究,公司NOR Flash全球市场份额在第二季度实现突破,上升至全球第四,并在第
[嵌入式]
兆易创新优化供应链结构,NOR <font color='red'>Flash</font>产能依旧供应紧张
stm32f103zet6如何识别flash大小
  在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法。考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便。   以大容量产品STM32F103ZET为例,其Flash容量达到512K,可以将其中一部分用作数据存储。如下是大容量的Flash组织模式:     STM32的
[单片机]
stm32f103zet6如何识别<font color='red'>flash</font>大小
JLink烧写Nor Flash出错的解决方案
最近在看国嵌的教学视频,在国嵌体验入门班-2-1(开发板系统安装-Jlink方式)一集中,直接烧写nor flash,不进行任何配置的方法,能够成功纯属偶然!在视频中烧写时也出现了两次错误,误认为是JLink不稳定,先将此文贴出,纠正其错误方法。 如果出现上述错误,可以参考下面的方法进行重新配置。 我的开发板是mini2440,如果是其它类型,也可以根据具体情况参考。 一、解决方案一 1、在网上搜索S3C2440 JLink配置文件下载。 2、点击file - open project,选中下载好的初始化工程文件。 3、点击option - project settings选择Flash,点击select flash de
[单片机]
Nand Flash编程应用难点浅析
Nand Flash存储器是flash存储器的一种,为固态大容量内存的实现提供了廉价有效的解决方案。NAND存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,如嵌入式产品中包括数码相机、记忆卡、体积小巧的U盘等。 1989年,东芝公司发表了Nand Flash结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。经过十几年的发展,NAND应用越来越广泛,但是大多数工程师却仍然不知道关于NAND应用的一些难点:分区、ECC纠错、坏块管理等。只有真正了解NAND特性的工程师,才能在应用上得心应手,不会被Nand Flash所绊倒。 一、分区 定义分区的实质是定义数据会如何写入NAND Fl
[嵌入式]
Nand <font color='red'>Flash</font>编程应用难点浅析
STM32F4读写内部FLASH【使用库函数】
STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多。平时写的代码,烧写完之后还有大量的剩余。有效利用这剩余的FLASH能存储不少数据。因此研究了一下STM32F4读写内部FLASH的一些操作。 【STM32F4 内部Flash的一些信息】 STM32F407VG的内部FLASH的地址是:0x08000000,大小是0x00100000。 写FLASH的时候,如果发现写入地址的FLASH没有被擦出,数据将不会写入。FLASH的擦除操作,只能按Sector进行。不能单独擦除一个地址上的数据。因此在写数据之前需要将地址所在Sector的所有数据擦除。 在STM32F4的编程手册上可找到F
[单片机]
STM32F4读写内部<font color='red'>FLASH</font>【使用库函数】
stvd仿真调试
打开STVD开发环境,如下界面: 1. Workspace窗口右键单击stm8s_sx1276, 选择“Set as Active Project” 2. Workspace窗口右键单击stm8s_sx1276,选中Build,编译项目 3. 点击工具栏图标 开始调试过程, 4. 点击工具栏图标 运行; 5. 点击工具栏图标 ,执行对应的调试动作; 6. 设置断点,在代码浏览串口中,左键单击最左边的代码行号后在行号后显示一个红点即在改行添加了断点; 7. 查看调试过程中变量值,选择菜单栏View - Watch(快捷键Alt + 6)子菜单,弹出如下界面: 在下方窗口的Variable栏中输入需要查
[单片机]
stvd<font color='red'>仿真</font><font color='red'>调试</font>
FLASH模拟EEPROM实验
FLSH操作总结: 1, 锁定解锁函数 上面讲解到在对FLASH进行写操作前必须先解锁,解锁操作也就是必须在FLASH_KEYR寄存器写入特定的序列(KEY1和KEY2),固件库函数实现: void FLASH_Unlock(void); 同样的道理,在对FLASH写操作完成之后,我们要锁定FLASH void FLASH_Lock(void); 2,写操作函数 固件库提供了三个FLASH写函数: FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); FLASH_Status FLASH_ProgramHalfWord(uint
[单片机]
<font color='red'>FLASH</font>模拟EEPROM实验
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved