CCS v5中烧写Flash实录:成功+失败

记于2013年08月23日


环境:Win7 + CCS v5 + XDS100v2仿真器 + TMS320CF2812芯片


烧写方法:将SRAM.cmd替换成FLASH.cmd。一个通用的用于F2812的 FLASH.cmd  例子为

MEMORY
{
PAGE 0 : 
   OTP         : origin = 0x3D7800, length = 0x000800
   FLASHJ      : origin = 0x3D8000, length = 0x002000
   FLASHI      : origin = 0x3DA000, length = 0x002000
   FLASHH      : origin = 0x3DC000, length = 0x004000 
   FLASHG      : origin = 0x3E0000, length = 0x004000
   FLASHF      : origin = 0x3E4000, length = 0x004000
   FLASHE      : origin = 0x3E8000, length = 0x004000 
   FLASHD      : origin = 0x3EC000, length = 0x004000
   FLASHC      : origin = 0x3F0000, length = 0x004000
   FLASHB      : origin = 0x3F4000, length = 0x002000 
   FLASHA      : origin = 0x3F6000, length = 0x001FF6
   BEGIN       : origin = 0x3F7FF6, length = 0x000002
   PASSWDS     : origin = 0x3F7FF8, length = 0x000008
   ROM         : origin = 0x3FF000, length = 0x000FC0
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E
         
PAGE 1 : 
   /* SARAM                     */     
   RAMM0M1    : origin = 0x000000, length = 0x000800

   /* Peripheral Frame 0:   */
   DEV_EMU    : origin = 0x000880, length = 0x000180
   FLASH_REGS : origin = 0x000A80, length = 0x000060
   CSM        : origin = 0x000AE0, length = 0x000010
   XINTF      : origin = 0x000B20, length = 0x000020
   CPU_TIMER0 : origin = 0x000C00, length = 0x000008
   CPU_TIMER1 : origin = 0x000C08, length = 0x000008		 
   CPU_TIMER2 : origin = 0x000C10, length = 0x000008		 
   PIE_CTRL   : origin = 0x000CE0, length = 0x000020
   PIE_VECT   : origin = 0x000D00, length = 0x000100

   /* Peripheral Frame 1:   */
   ECAN_A     : origin = 0x006000, length = 0x000100
   ECAN_AMBOX : origin = 0x006100, length = 0x000100

   /* Peripheral Frame 2:   */
   SYSTEM     : origin = 0x007010, length = 0x000020
   SPI_A      : origin = 0x007040, length = 0x000010
   SCI_A      : origin = 0x007050, length = 0x000010
   XINTRUPT   : origin = 0x007070, length = 0x000010
   GPIOMUX    : origin = 0x0070C0, length = 0x000020
   GPIODAT    : origin = 0x0070E0, length = 0x000020
   ADC        : origin = 0x007100, length = 0x000020
   EV_A       : origin = 0x007400, length = 0x000040
   EV_B       : origin = 0x007500, length = 0x000040
   SPI_B      : origin = 0x007740, length = 0x000010
   SCI_B      : origin = 0x007750, length = 0x000010
   MCBSP_A    : origin = 0x007800, length = 0x000040

   /* CSM Password Locations */
   CSM_PWL    : origin = 0x3F7FF8, length = 0x000008

   /* SARAM                    */     
   RAML0L1    : origin = 0x008000, length = 0x002000
   RAMH0      : origin = 0x3F8000, length = 0x002000        
}
 
 
SECTIONS
{
   /* Allocate program areas: */
   .reset              : > BEGIN       PAGE = 0
   vectors             : > VECTORS     PAGE = 0
   .cinit              : > FLASHJ      PAGE = 0
   .text               : > FLASHA       PAGE = 0

   /* Allocate data areas: */
   .stack              : > RAMM0M1     PAGE = 1
   .bss                : > RAML0L1     PAGE = 1
   .ebss               : > RAML0L1     PAGE = 1
   .const:			load = 	FLASHB PAGE 0, run = RAML0L1 PAGE 1
	{
	    /* Get Run Address	*/
	    __const_run = .;
	    /* Mark Load Address*/
	    *(.c_mark)
	    /* Allocate .const	*/
	    *(.const)
	    /* Compute Length	*/
	    __const_length = .-__const_run;
	}  
   
   .econst:			load = 	FLASHB PAGE 0, run = RAML0L1 PAGE 1
	{
	    /* Get Run Address	*/
	    __econst_run = .;
	    /* Mark Load Address*/
	    *(.ec_mark)
	    /* Allocate .const	*/
	    *(.econst)
	    /* Compute Length	*/
	    __econst_length = .-__econst_run;
	}    
   .sysmem             : > RAMH0       PAGE = 1

   /* Allocate IQ math areas: */
   IQmath              : > FLASHI      PAGE = 0   /* Math Code */
   IQmathFastTables    : > FLASHI      PAGE = 0   /* Math Tables in fast memory */
   IQmathTables        : > ROM         PAGE = 0   /* Math Tables In ROM */
      
   /* Allocate Peripheral Frame 0 Register Structures:   */
   DevEmuRegsFile      : > DEV_EMU     PAGE = 1
   FlashRegsFile       : > FLASH_REGS  PAGE = 1
   CsmRegsFile         : > CSM         PAGE = 1
   XintfRegsFile       : > XINTF       PAGE = 1
   CpuTimer0RegsFile   : > CPU_TIMER0  PAGE = 1      
   CpuTimer1RegsFile   : > CPU_TIMER1  PAGE = 1      
   CpuTimer2RegsFile   : > CPU_TIMER2  PAGE = 1      
   PieCtrlRegsFile     : > PIE_CTRL    PAGE = 1      
   PieVectTable        : > PIE_VECT    PAGE = 1

   /* Allocate Peripheral Frame 2 Register Structures:   */
   ECanaRegsFile       : > ECAN_A      PAGE = 1   
   ECanaMboxesFile     : > ECAN_AMBOX  PAGE = 1

   /* Allocate Peripheral Frame 1 Register Structures:   */
   SysCtrlRegsFile     : > SYSTEM      PAGE = 1
   SpiaRegsFile        : > SPI_A       PAGE = 1
   SciaRegsFile        : > SCI_A       PAGE = 1
   XIntruptRegsFile    : > XINTRUPT    PAGE = 1
   GpioMuxRegsFile     : > GPIOMUX     PAGE = 1
   GpioDataRegsFile    : > GPIODAT     PAGE = 1
   AdcRegsFile         : > ADC         PAGE = 1
   EvaRegsFile         : > EV_A        PAGE = 1
   EvbRegsFile         : > EV_B        PAGE = 1
   ScibRegsFile        : > SCI_B       PAGE = 1
   McbspaRegsFile      : > MCBSP_A     PAGE = 1

   /* CSM Password Locations */
   CsmPwlFile          : > CSM_PWL     PAGE = 1

}

重新编译OK!

点击Debug进入调试,点击Load Program...选择刚编译生成的*.out文件进行烧写!然后会出现Erase……

烧写成功!


=============== 悲剧 ================

为了调试方便,我设置了点击Debug按钮后自动装载程序,悲剧就在这时发生了!

在一次烧写时由于鼠标抖动,连续点了两次Debug,弹出两个烧写进度条,结果发大了,直接烧写失败,Flash锁死!如下

C28xx: Flash Programmer: Device is locked or not connected. Operation cancelled.
C28xx: Trouble Writing Memory Block at 0x3f7ff6 on Page 0 of Length 0x2 
C28xx: GEL: File: E:\dsp\zx_dsp2000\zx_project_c2000\Debug\zx_project_c2000.out: Load failed.


为吸取经验教训,总结了Flash锁死的可能原因,以后注意这些方面:

(1)由于PC的原因,这里就是这样,中途打断了Flash的烧写过程造成Flash锁死。仿真器在烧写时挂起也会造成Flash锁死,比如有些仿真器速度比较慢,很容易发生挂起的现象。

(2)由于DSP的原因,DSP的电压、时钟等操作条件不对容易造成锁死。


另外,顺便注意DSP与JTAG的上电顺序:

关闭电源开关 ——> JTAG连接DSP ——> DSP连接PC,JTAG连接PC ——> 开启DSP电源开关,给DSP上电

原则:JTAG不能热插拔


================ 喜剧 ===============

不过还好,毕竟是一块实验板,Flash锁死但还可以从SRAM跑程序,谢天谢地!



有关Flash Lock的问题参考:

[1] http://e2e.ti.com/support/microcontrollers/c2000/f/171/t/248836.aspx


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CCS5.5 是 Code Composer Studio 5.5 的版本,它是一款由德州仪器(Texas Instruments)开发的集成开发环境(IDE),主要用于嵌入式软件开发。烧Flashing).out 文件则是将生成的可执行程序文件烧录到目标硬件上的过程。 要完成 CCS5.5 烧。out 文件的步骤如下: 1. 打开 CCS5.5软件并连接你的目标硬件设备(例如:Microcontroller、DSP等)到你的电脑,确保设备驱动程序已正确安装。 2. 在 CCS5.5 的工程窗口中打开你的项目,并编译生成可执行程序文件(.out 文件)。在编译完成后,会在 CCS5.5 工程目录的 Debug 或 Release 文件夹中产生一个带有.out 文件后缀的文件。 3. 在 CCS5.5 软件的菜单栏中选择“烧”选项。这将打开烧设置界面。 4. 在烧设置界面,选择你的目标硬件设备,并确保选择正确的连接方式(例如:通过 JTAG、SPI、ICD 等)。你可以在设备供应商的资料手册中找到关于烧设置的更多信息。 5. 在烧设置界面中,选择你要烧的.out 文件。你可以通过浏览文件系统来定位到你生成的.out 文件所在的路径。 6. 确保设置界面中的其他参数都配置正确,如芯片擦除方式、芯片校验等。 7. 点击“开始烧”按钮,开始执行烧过程。CCS5.5 会将.out 文件中的可执行程序下载到目标硬件上。 8. 在烧过程完成后,CCS5.5 将会显示烧结果。你可以检查日志中是否有任何错误或警告信息。 请注意,以上步骤仅为 CC5.5 烧.out 文件的一般流程,具体步骤和操作可能会因硬件平台、目标设备和软件设置而有所差异。在进行烧操作时,建议参考相关的硬件和软件文档以获取详细的指导和更多信息。 ### 回答2: CCS(Code Composer Studio)是一款广泛使用的集成开发环境(IDE),用于嵌入式软件开发。CCS 5.5是其一个版本。 要烧.out文件,需要按照以下步骤进行操作: 1. 打开CCS 5.5:打开CCS 5.5 IDE,并创建一个新的工程或打开一个已有的工程。 2. 配置目标设备:在CCS 5.5中,需要选择目标设备的型号和架构。可以通过点击"Project"或者"Window"菜单中的"Target Configuration"来进行相关设置。这样设置可以确保CCS 5.5知道如何与目标设备进行通信。 3. 添加.out文件:在工程内部,可以通过右键单击工程文件夹并选择"Add"来添加.out文件。定位到.out文件的存储位置,并选择要添加的文件。 4. 配置下载工具:在下载.out文件之前,需要配置下载工具。在CCS 5.5中,下载工具可以在"Target Configuration"视图中进行配置。具体配置方式因使用的下载工具而异。 5. 下载.out文件:配置正确的下载工具之后,可以通过单击工具栏中的"下载"按钮或右键单击.out文件并选择"Download"来开始下载过程。CCS 5.5将会将.out文件烧到目标设备上。 6. 检验烧结果:下载完成后,可以通过目标设备的调试功能、串口输出或其他合适的方式进行烧结果的检验。可以确保烧过程没有出现错误,并且目标设备上的程序能够正常执行。 通过以上步骤,就可以在CCS 5.5中烧.out文件到目标设备上。请注意,具体操作步骤可能因CCS 5.5版本、目标设备以及使用的下载工具而有所不同。建议查阅CCS 5.5的用户手册或官方文档以获取更加详细的操作指南。 ### 回答3: CCS5.5是一款用于嵌入式系统开发的集成开发环境(IDE),可用于编、调试和烧嵌入式设备的程序。在CCS5.5中,烧.out文件是将已经编译好的程序文件烧录到目标设备的过程。 要烧.out文件,首先需要将目标设备连接到开发计算机上。可以使用USB、串口或者JTAG等接口进行连接。确定设备已经正确连接后,打开CCS5.5并选择目标设备的配置文件。 接下来,在CCS5.5中选择烧工具,通常称为烧录器(Burner)。烧录器是用来将程序文件烧录到目标设备中的工具。可以通过菜单或者工具栏中的烧录器选项来找到相关工具。 在选择烧录器后,打开.out文件以供烧。在CCS5.5中,可以通过选择“打开”或者“导入”选项来将程序文件加载到烧录器中。 确认.out文件已经成功加载到烧录器中后,可以根据需要设置烧录参数,例如目标设备的起始地址、烧速度等。一般情况下,CCS5.5会自动加载默认参数,用户也可以根据实际需求进行调整。 最后,点击“烧录”或者“开始”按钮开始烧过程。CCS5.5将会将编译好的程序文件逐字节地入到目标设备的相应存储区域。烧过程完成后,CCS5.5会显示烧录结果,用户可以根据需要进行进一步的调试或者操作。 总之,通过CCS5.5可以方便地烧.out文件到嵌入式设备中。在烧过程中,需要选择烧录器、加载程序文件、设置烧录参数,然后进行烧录操作,最后查看烧录结果。这样就能够完成.out文件的烧过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值