记于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
分享到:
相关推荐
为了更好的使用CCSV3.3,烧写FLASH
文档描述了用CCS直接烧写.out文件的方法步骤,供大家参考使用,
DSP F2812 烧写FLASH插件可用于CCS3.3
通过一个完整的实例, 详细阐述了 TMS320C54x 系列 DSP 芯片在线烧写 FLASH 存储器, 并实现自举引导的方法。给出了硬件连接方案和完整的 C 语言烧写程序。
CCS编译生成的.out格式文件不能直接用于Flash烧写,在TI公司给出的技术文档闭中,首先将.out文件利用其HEX工具转换为.hex格式文件,然后利用Flash烧写工具将.hex格式映像文件写入到片外Flash中。.out格式到....
CCS-C / C ++编译器脚本“一个为懒惰的人制作的脚本,足以在终端中键入gcc和g ++命令!” :optical_disk: 安装 : 须藤apt-get install figlet git clone 光盘ccs chmod + x ccs chmod + x install.sh ./install.sh ...
CCS8可用的tms320c6747 FLash烧写程序
TI CCS v5.x的中文培训教程,浅显易懂,适合于初学CCS v5.x的
当用自带的烧写不成功时可用升级版,ccs3.3用51仿真器要用这个烧写插件、
1实验中,先编写应用程序程序,编译后生成.out文件(文件位置如:workspace_v8\VC5505 FFT Filter Demo123\Debug)放入新的文件夹中,并将TI的hex55.exe拷到该文件夹下。在该文件夹中建立evm.cmd文件,内容如下: ...
最新Flash烧写插件v1.12.0 for CCS C2000 v2.21 最新Flash烧写插件v1.12.0 for CCS C2000 v2.21
使用的CCS为CCS3.1 使用的DSP为2812 文件中包含烧写至DSP的FLASH中所需的插件和使用说明
自己写的定时器控制闪灯程序,是博客的配套程序,博客名为: 1.如何利用CCS V5创建一个点亮LED的工程.
DSP CCS12.00 芯片:TMS320F28335 结课设计 : 电机模块 + 按键模块 + EQEP 模块 设计 +项目
CCS安装此插件后,可对2812的片上flash进行烧写
CCS4向dsp28xx内置flash烧写程序过程
1、 使用 CCS3.3或 CCS4编译程序(注意 CMD文件应为烧写 flash),生成 .out 文件。 2、 把 HEX2000.exe 和要转化的 .out 文件放在同一个文件夹内。 3、 在 WIN7 系统中, 以资源管理器的方式打开该文件夹, 在该...
ms320f2812的FLASH_烧写 打开“工具\CCS3.1烧写插件”目录下的文件:“C2000FlashPlugin1.13.0.exe”, 并按照提示安装软件。
如何使用CCS v5调试DM81XX的M3代码