DSPFlashLED以CCS3.3版本为例,介绍下关于DSP2812固化烧写的过程。
1.保证工程在RAM中调试完成;
2.配置好Flash.cmd文件,并加入工程;(CMD文件编写参考 ,Flash.cmd代码见附录1)
3.加入起始代码asm文件DSP281x_CodeStartBranch.asm;
4.配置C文件,并将初始化FLASH中的代码拷贝到RAM中运行;(C文件配置见附录2)
5.重新编译工程;
6.选择工具栏 Tools--F28xx On--Chip Flash Programmer,打开烧写工具,设置相关配置。
(1)首先设置 Clock configuration ,输入30,意思是晶振频率为30M,PLLCR 根据工程内的实际配置进行选择,一般为10,系统时钟SYSCLKOUT此时为150M;
(2)单击Flash Programmer Settings.选择设备 F2812,Selectversion to flash API 选择 FlashAPI-Interface2812V2_10.out.配置完成单机OK。
7.单击Execute Operation 开始烧写,烧写成功,断开仿真器,断电重启测试。
注意事项:
1. 一定要拔除仿真器(JTAG端),给电路板重新上电,方能实现FLASH启动。
2. 注意MP/MC引脚的电压。0为方式MC来作为计算机模式启动,3.3V为方式MP作为微处理器模式启动。
3. 由于GPIO引脚的F4F12F3F2决定了DSP2812的启动顺序,而从FLASH必须要在F4(SCITXDA)为1,而F12F3F2随意的状态下启动。请大家启动前确认F4引脚电压。
附录1:


1 /*------------------------------------------*/ 2 /*描述:通过MEMORY伪指令来指示存储空间 */ 3 /*------------------------------------------*/ 4 5 MEMORY /* Program Memory */ 6 { 7 PAGE 0 : 8 FLASH : origin = 0x3D8000, length = 0x01FF80 /* on-chip FLASH */ 9 BEGIN : origin = 0x3F7FF6, length = 0x000002 10 ROM : origin = 0x3FF000, length = 0x000FC0 11 RESET : origin = 0x3FFFC0, length = 0x000002 12 13 VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of Boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */ 14 RAML0 : origin = 0x008000, length = 0x001000 15 16 PAGE 1 : 17 RAMM0 : origin = 0x000000, length = 0x000400 /* on-chip RAM block M0 */ 18 RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ 19 RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ 20 RAMH0 : origin = 0x3F8000, length = 0x002000 /* on-chip RAM block H0 */ 21 22 DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */ 23 PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */ 24 FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */ 25 CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */ 26 XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ 27 CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */ 28 CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer1 registers */ 29 CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer2 registers */ 30 PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ 31 ECANA : origin = 0x006000, length = 0x000040 /* eCAN control and status registers */ 32 ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN local acceptance masks */ 33 ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN message object time stamps */ 34 ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN object time-out registers */ 35 ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN mailboxes */ 36 SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ 37 SPIA : origin = 0x007040, length = 0x000010 /* SPI registers */ 38 SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ 39 XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ 40 GPIOMUX : origin = 0x0070C0, length = 0x000020 /* GPIO mux registers */ 41 GPIODAT : origin = 0x0070E0, length = 0x000020 /* GPIO data registers */ 42 ADC : origin = 0x007100, length = 0x000020 /*