2812串口烧写Flash方法
- 格式:doc
- 大小:325.00 KB
- 文档页数:4
第一步:安装CCS3.1或更高版本下面以3.3为例第二步:安装串口编程算法项目文件插件:sdf28xx_v3_3_serial(不同CCS对应不同版本插件,此插件与CCS3.3对应),安装在CCS根目录下第三步:安装SdFlashV1.60或更高版本,安装在CCS根目录下第四步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下(1)用记事本的方式打开sdopts.cfg(2)在"# End of sdopts.cfg”前加入如下文本:[EmulatorId=C1]EmuPortAddr=0xC1EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C2]EmuPortAddr=0xC2EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C3]EmuPortAddr=0xC3EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C4]EmuPortAddr=0xC4EmuPortMode=RS232EmuProductName=SERIAL_FLASH第五步:打开SDFlash,路径为…\CCStudio_v3.3\specdig\sdflash\bin下(在打开CCS的前提下,还需打开要加载的工程,SDFlash.exe才能打开)第六步:打开F2812SerialFlash.sdp工程路径为…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812打开Project-setting菜单,分别对target、erase、Programming、Verify进行设置Target:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F281xRS232Flash.dll 若使用PC的COM1则选择仿真器为C1,COM2则选择C2Erase:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out Programming:(1)…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out (2)flash data 载入要烧写的文件工程最好放在…\CCStudio_v3.3\MyProjects下,避免不必要的麻烦Verify:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out 其余不用改动,按默认值就可以。
Flash28x 烧写指导本烧写程序支持 TMX F2810 Rev A ,TMS F2810 Rev C、TMX F2812 Rev A, TMS F2812 Rev C ,程序中所有默认值皆为烧写 F2812 Rev a ,Rev C 所做的设置,用户如果需要烧写2810可根据附录提供的资料自行修改。
软硬件准备:用户除具备基本的windows系统一套外还需如下设备或软件1、 DSP仿真器一套2、 TMS F2812 Rev C Silicon目标一套3、 CCS 2.0以上版本4、要烧写到Flash的目标程序5、本烧写程序安装程序安装:直接执行软件安装包setup.exe文件。
此文件存在于产品分发的光盘中或在闻亭网站( )下载得到。
安装过程中将需要您指定CCS2000的安装目录,安装完成后将在您指定的目录下生成WTFlash28x目录。
WTFlash28x目录中包括一个名为F2812LED的例子程序,TMX F28X Rev A及TMXF28X Rev C的Flash烧写算法包:l F2812LED程序为闻亭F2812DSK板专用,此程序使板上的LED闪烁l 烧写TMX F28X Rev A请使用WTFlash28x\tif28x_Rev_A目录中的算法l 烧写TMS F28X Rev C请使用WTFlash28x\tif28x_rev_C目录中的算法l 安装程序完成后在CCS2000的安装目录中的cc\bin目录里存在如下文件:wtflash2810.gelwtflash2810.out //TMS F2810 Rev C的烧写算法文件,默认时钟为150MHZwtflash2812.gelwtflash2812.out //TMS F2812 Rev C的烧写算法文件,默认时钟为150MHZwtflash2810.gel和wtflash2812.gel 为在CCS中应用的Falsh烧写程序.烧写准备:根据目标硬件的时钟频率对Flash算法进行重新编译。
CCS5.4烧写FLASH教程(以TMS320F2812为例)一、前期文件准备如上图所示,CCS5.4环境下烧写FLASH必须将以上文件添加到工程文件夹中,DSP28xxx_CodeStartBranch.asm和DSP28xxx_SectionCopy_nonBIOS.asm可以将FLASH中的部分内容移植到RAM中,增加运行速度。
二、具体步骤1、如下图所示,打开工程设置,在general选项卡中,将configuration由Debug[Active]改为Release[Active],并将Linker command filer改为下图所示的CMD 文件。
2、在Predefined Symbols 选项卡中添加FLASH 预定义符号。
3、在Debug 选项中,修改FLASH下载基本设置,根据实际板子情况,修改晶振OSCCLK。
(实验室里的2812板子晶振为20MHz,而28335板子的晶振为30MHz)4、在主函数中添加一下代码:#ifdef FLASH// Copy time critical code and Flash setup code to RAM// The RamfuncsLoadStart, RamfuncsLoadEnd, and RamfuncsRunStart// symbols are created by the linker. Refer to the linke MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd,&RamfuncsRunStart);// Call Flash Initialization to setup flash waitstates// This function must reside in RAMInitFlash(); // Call the flash wrapper init function#endif并且在主函数前面定义变量:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;最终效果如下:5、打开工程文件夹中的DSP28_SysCtrl.c,在程序开头添加以下语句:#pragma CODE_SECTION(InitFlash, "ramfuncs");并且检查此C文件中有没有定义InitFlash函数,如果没有,添加以下代码:void InitFlash(void){EALLOW;FlashRegs.FOPT.bit.ENPIPE = 1;FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;//5;FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;//5;FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;EDIS;asm(" RPT #6 || NOP");}6、最后在F281x_nonBIOS_flash.cmd中添加以下代码:ramfuncs : LOAD = FLASH_CD,RUN = RAM_H0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0最终效果如下:三、编译烧录1、Bulid工程文件,修改相应的错误。
旺仔教你学DSP考虑到众多买不起仿真器的劳苦大众!下面提供利用PC RS232 下载FLASH 到281x 的方法此教程, 适用与现在的所以C2000 系列,包括最小28335。
al,安装安装路径与CCS3.3 安装路 径相同; 2. 安装SDFlash 软件:SetupCCSPlatinum_v30329,安装路径与 CCS3.3 安装路径相同; 3. 编辑sdopts.cfg 文件(此目的是在SDFLASH 软件中能找到串口 端口号, 此文件存放在你所安装的windows 的System32 目录下(没 找到?(电脑的全部杀毒软件关了吗,赶紧关了再重新安装!))如下文本: C12IAL_FLASHC22IAL_FLASHC32IAL_FLASHC42IAL_FLASH3. F2812为从SCI-A 的启动模 式,复位时:GPIOF4=0 ,GPIOF12=0 ,GPIOF3=1, GPIOF2=1; (本人开发板配置跳线帽旁边已经标明配置电平例如MDXA 的 右边为一0,表示跳线帽接至0)(GPIOf4 为SCI_A TXD 端子,复位完成后应恢(要电脑的全部杀毒软件关了!!!)1、先安装sdf28xx_v3_3_seri (1)用记事本的方式打开sdopts.cfg(2)在"# End of sdopts.cfg”前加入[EmulatorId=C1]EmuPortAddr=0x EmuPortMode=RS23EmuProductName=SER [EmulatorId=C2]EmuPortAddr=0x EmuPortMode=RS23EmuProductName=SER [EmulatorId=C3]EmuPortAddr=0x EmuPortMode=RS23EmuProductName=SER [EmulatorId=C4]EmuPortAddr=0x EmuPortMode=RS23EmuProductName=SER 利用串口线连接DSP 与PC 机;配置复原DSP 能传输信号状态(拔出上面的跳线帽),否则无法进行FLASH 烧写)件夹,点击\sdf28xx_v3_3_serial\f2812默 lash.dll (for F281x devices),(路径在f2812 里)连接的串口,具体是哪个串口可查看:右击我的电脑-->看到具体是哪个串口,我的是COM4。
2812的FLASH烧写
TMS320F2812 FLASH烧写
1.1. 烧写软件的安装
打开“工具\CCS3.1烧写插件”目录下的文件:“C2000FlashPlugin1.13.0.exe”,并按照提示安装软件。
软件安装完成后,打开CCS 3.1,会出现下图红圈中的云状按钮。
1.2. 生成烧写文件
以键盘实验为例说明。
打开keyboard文件夹下面的.PJT工程文件。
从工程中移除文件:SRAM.cmd 。
如下图所示。
之后,添加FLASH.cmd 文件到工程。
如下图所示
在工具栏单击Release按钮,并重新编译。
Release 目录下的OUT 文件是最终烧写文件。
1.3. 烧写用户程序
点击云状物按钮,出现下图所示界面。
注意红框部分最好不要修改,也不要轻易点击“Lock”,否则2812 可能烧毁。
编程程序设定:
点击Execute Operation按钮即可开始烧写,此过程会出现多次进度条提示,分别是:clear、erase 、program 、check 等。
请耐心等待,程序会自动完成烧写过程。
烧写完成后关闭烧写界面。
如果信息栏出现如下图所示信息,说明烧写成功!
请将开发板断点后重新加电,即可。
F2812 Flash烧写步骤参考文档:TI手册:spra958f《Running an Application from Internal Flash Memory on the TMS320F28xx DSP》CCS帮助文档:TMS320F28xx On-Chip Flash ProgrammerSEED合众达电子论坛上的官方说明:使用F2812开发时需注意的问题最近有部分用户咨询:为何编译程序没有问题,可是烧录不进去,或者烧录成功了无法运行需要注意的问题:1,CMD:F2812与别的器件不同,在调试过程中使用的一般是对于SRAM的定义,编译一个SRAM.CMD,所以调试的时候没有问题,但是烧写FLASH的时候需要重新编写一个针对FLASH分配的FLASH.CMD文件,然后进行烧录。
注意:这个文件不能load到ram里面去。
2,lib:我们产品里面提供的lib文件是基于CCS2.2上面的,所以需要烧写的时候要求你的库文件随着CCS 的版本更新而更新库,否则无法烧录。
3,API:根据F2812的版本不同,烧写插件不同,需要注意一下,目前主要有CC, CE, CG,否则烧写一半会报错,然后CCS不能操控了。
调试过程总结:最开始直接参照CCS帮助文档的烧写步骤将开发板上的仿真例程直接烧录,天真的离谱!开始上网搜索FLASH.CMD,最终找到一个版本,并确认基本没有问题;2007-12-191.以合众达开发板SCI程序为模板:2.更换库文件为rts2800_ml.lib;3.更换链接文件为flash.cmd文件4.添加0x3F7FF6处的自动跳转汇编命令:spra958f第26页的CodeStartBranch.asm(代码同样可以在TI网站上免费下载),在CCS SCI 工程中将该文件添加到Source文件夹里即可;5.编译有Warning(待修改,Flash寄存器操作部分)[SCI_TEST.c] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -g -k -q -fr"C:/CCStudio_v3.3/MyProjects/SCI/Debug" -d"_DEBUG" -d"LARGE_MODEL" -ml -v28 -@"Debug.lkf" "SCI_TEST.c"[Linking...] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"Debug.lkf"<Linking>>> warning: load address of uninitialized section ramfuncs ignoredBuild Complete,0 Errors, 1 Warnings, 0 Remarks.6.参照CCS帮助文档:TMS320F28xx On-Chip Flash Programmer烧写步骤,注意的是CCS V3.3版本已自带最新的烧写插件Flash2812_API_V210版本,无需再去TI网站下载,只需按照帮助文档操作就可以了,网上也有徐工网友的翻译版操作流程。
281x无需仿真器,串口烧写Flash方法再发一次!希望版主不要再删!!考虑到众多买不起仿真器的劳苦大众!下面提供利用PC RS232下载flash到281x的方法:第一步:安装CCS2.2或更高版本以确保你的源代码能编译为下载源码:xxx.out文件第二步:安装串口编程算法项目文件:sdf28xx_v3_0_serial (Ti网站上有下载详情请阅读包含的:SDFlash_Serial_RefGuide_v3_0.pdf文件第三步:在算法项目文件中设置好相应的时钟频率,并生成.out文件(1在CC中导入F2812SerialFlash.pjt文件文件目录:C:\CCStudio_v3.1\specdig\sdflash\mydrivers\DSP281x_v3_0\DSP281x_serial\build \F28xxSerialFlas h(2设置好你的目标板相应的时钟频率在Flash280x_API_Config.h中相应的PLL时钟,我使用的是20M晶掁则选择: #define CPU_RATE 10.000L // for a 100MHz CPU clock speed (SYSCLKOUT (3保存并编译项目文件,生成F2812SerialFlash.out文件存放在:C:\CCStudio_v3.1\specdig\sdflash\mydrivers\DSP281x_v3_0\DSP281x_serial\bin注:确定你的程序空间定义在flash段,(在CMD文件修改第四步:安装SdFlashV1.60或更高版本第五步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下(1用记事本的方式打开sdopts.cfg(2在"# End of sdopts.cfg”前加入如下文本:[EmulatorId=C1]EmuPortAddr=0xC1EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C2]EmuPortAddr=0xC2EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C3]EmuPortAddr=0xC3EmuPortMode=RS232EmuProductName=SERIAL_FLASH[EmulatorId=C4]EmuPortAddr=0xC4EmuPortMode=RS232EmuProductName=SERIAL_FLASH第六步:打开SDFlash,按SDFlash_Serial_RefGuide_v3_0.pdf提供的方法指定算法文件路径在Project设置中,若你使用PC的COM1则选择仿真器为C1,COM2则选择C2第七步:将DSP的SCI_A和PC的RS232口连接.将DSP的如下脚管置为相应的电平,然后复位复位时:GPIOF4=0 GPIOF12=0 GPIOF3=1 GPIOF2=1注:GPIOf4为SCI_A TXD端子,复位完成后应恢复原DSP能传输信号状态第七步:点击SdFlash菜单的Flash项--->点击Start,即可!!!seed啊甘,你好,找你要个sdflash烧写软件,,~谢谢!seed啊甘,你好,找你要个sdflash烧写软件,,~谢谢!由于产品为了升级容易,所以要改用rs232烧写来升级,我按照你的方法做,就是没找到SDFLASH这个烧写软件!如果你看到此贴,麻烦你发给我,我email:wangyazix@ [quote][i]seed阿甘[/i] 写道:1.先安装sdf28xx_v3_0_serial,安装时按照默认路径安装;2.再安装SDFLASH,安装路径与sdf28xx_v3_0_serial相同。
1、一般不用你换GEL.LIB文件,用原来的就可以.2、换完FLASH的CMD后,不要烧写,看下.MAP文件,主要是看 0X3F 7FF8处有没有烧内容.如果有别烧,改,直到这处没有烧入内容.3、如果没有烧入其他的内容,则可以烧了.烧完后,RESET CPU 看是不是到 0X3F FFC0处,如果不是,看是不是你的MP/MC=0了,并且是不是FLASH启动模式,即所有4个脚都是高(只要第一个脚是高就可以,即1XXX)4、如果RESET CPU 是到 0X3F FFC0处,即可以断电,并且拔掉与板子相连的仿真器接口(注意拔电脑上的USB不好使),然后上电,自动运行.注意:其中遇到的问题:烧写\时说初始化RAM,和寻找BOOT.ASM都不用管_如果说是 NOT AN execuTivefile ,则在PROJECT_BULIT OPTION_LINK_OUT MODLE _absolute file最重要是可以断电,并且拔掉与板子相连的仿真器接口(注意拔电脑上的USB不好使),然后上电,自动运行.我遇到的是这些,我用以上方法解决了,但不知道为什么,所以大家都说说经验,让新手烧走弯路,少LOCK28122812从内部flash启动的过程a)程序硬件复位或者软件复位b)判断mp/mc是否为0,微计算机模式(为1,当为微处理器模式时,2812内部的bootrom被禁止,通过zone7从外部调引导程序启动。
)c)为0则从boot rom启动,否则从外部启动(0x3F FC00)d) 到boot rom的0x3F FC00处取出复位向量,跳到boot函数:2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时ti已经固化好了引导程序iniboot:Iniboot函数判断几个GPIO引脚来判断使用哪一种引导模式,比如flash boot模式,检测SPICLKA,SCITXA,GPIO34的电平,当都为高电平时表明是片内flash boot模式,那么initboot执行完后跳转到0x3F 7FF6处)e)采集io管脚状态,确定启动模式。
281x无需仿真器,串口烧写Flash方法再发一次!希望版主不要再删!!考虑到众多买不起仿真器的劳苦大众!下面提供利用PC RS232下载flash到281x的方法:第一步:安装CCS2.2或更高版本以确保你的源代码能编译为下载源码:xxx.out 文件第二步:安装串口编程算法项目文件:sdf28xx_v3_0_serial (Ti 网站上有下载详情请阅读包含的:SDFlash_Serial RefGuide_v3_0.pdf文件第三步:在算法项目文件中设置好相应的时钟频率,并生成.out文件(1 在CC 中导入F2812SerialFlash.pjt文件文件目录:C:\CCStudio_v3.1\s pecdig'sdflash'mydrivers'DS P281x_v3_0\DS P281x_serial\build \F28xxSerialFlas h(2设置好你的目标板相应的时钟频率在Flash280x_API_Config.h中相应的PLL时钟,我使用的是20M晶掁则选择:#defi ne CP U_RATE 10.000L // for a 100MHz CPU clock sp eed (SYSCLKOUT(3保存并编译项目文件,生成F2812SerialFlash.out文件存放在:C:\CCStudio_v3.1\s pecdig'sdflash'mydrivers'DS P281x_v3_0\DS P281x_serial\bin注:确定你的程序空间定义在flash段,(在CMD文件修改第四步:安装SdFlashV1.60或更高版本第五步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下(1用记事本的方式打开sdopts.cfg(2在"# End of sdopts.cfg前加入如下文本:[Emulatorld=C1]Emu Po rtAddr=0xC1Emu PortMode=RS232EmuProductName=SERIAL FLASH[EmulatorId=C2]EmuPo rtAddr=0xC2EmuP ortMode=RS232EmuP roductName=SERIAL_FLASH[EmulatorId=C3]EmuP ortAddr=0xC3Emu PortMode=RS232EmuProductName=SERIAL FLASH[EmulatorId=C4]EmuPo rtAddr=0xC4Emu PortMode=RS232EmuProductName=SERIAL FLASH第六步:打开SDFlash按SDFIash_Serial_RefGuide_v3_0.pd提供的方法指定算法文件路径在Project设置中,若你使用PC的COM1则选择仿真器为C1,C0M2则选择C2第七步:将DSP的SCI_A和PC的RS232 口连接.将DSP的如下脚管置为相应的电平,然后复位复位时:GPIOF4=0 GPIOF12=0 GPIOF3=1 GPIOF2=1注:GPIOf4为SCI_ATXD端子,复位完成后应恢复原DSP能传输信号状态第七步:点击SdFlash菜单的Flash项--->点击Start,即可!!!seed啊甘,你好,找你要个sdflash烧写软件,,-谢谢!seed啊甘,你好,找你要个sdflash烧写软件,,-谢谢!由于产品为了升级容易,所以要改用rs232烧写来升级,我按照你的方法做,就是没找到SDFLASH这个烧写软件!如果你看到此贴,麻烦你发给我,我email:wangyazix@ [quote][i]seed阿甘[/i]写道:1.先安装sdf28xx_v3_0_serial安装时按照默认路径安装;2.再安装SDFLASH,安装路径与sdf28xx_v3_0_serial相同。
本文关于DSP2812的烧写做一个简单的归纳,其实是防止自己忘记;
现在以该文件夹下的LQG_CTRL_2014.04.22V2zhengshiban工程为例,进行说明;1,将原来在ram中运行的ram.cmd替换成工程中的Flash_Link.cmd;
2,将DSP281x_CodeStartBranch.asm和DSP281x_MemCopy.c两个文件添加到工程中;
3,打开工程中的主函数,在主函数中添加一下语句
:
在添加这一语句之前要给出函数的初始化和变量的定义,主要是这几部分的定义和说明:
此语句可以加在经常用的DSP28_Device.h的头文件中
还有就是添加
这个函数和
这个函数;
4,以上几步做完之后就可以编译程序,编译完成之后可能会提示:
的警告,不用管,再次编译,则警告不见;
5,连接仿真器,使用tools下拉菜单中的f28xx on-chip flash programmer,打开后呈现如下界面:
6,下面就是设置系统的时钟,烧写密码,如果是第一次烧写,请点击Flash Programmer Setings呈现如下界面:
点击Browse得到如下的界面:
将上图中的.out文件打开,即可
7,点击右边的执行操作按钮,则会出现擦写、编程、校验的进度条(可以选择单独擦写或者其他的选择,具体的见于选择框)
8,烧写成功后,CCS的任务栏会出现烧写成功的提示:
9,断电,拔除仿真器,再次上电即可看到,程序执行的现象。
通过串口烧写DSP片内Flash的新方法符玉襄;孙德新;刘银年【期刊名称】《科学技术与工程》【年(卷),期】2013(013)024【摘要】在DSP开发过程中,传统通过串口烧写Flash的方法有一个共同特点:必须事先在Flash里面放置初始代码,上电后先运行初始代码,再利用它把用户程序烧写到Flash.当DSP应用在卫星载荷上时,Flash的存储单元可能发生单粒子翻转,不论是用户程序还是初始代码都有失效的风险.以TMS320F2812为例,提出了一种通过串行通信接口烧写Flash的新方法;该方法利用DSP的自举引导功能,上电后先加载烧写程序,再加载用户程序,利用前者把后者烧写到Flash,从而不需要在Flash 中放置初始代码.地面实验表明,该方法可操作性强,程序运行稳定.%In the development of DSP,traditional methods of writing Flash via serial port have a common characteristic.The initial-code must be placed inside Flash in advance.After power on,the initial-code first be executed,then utilize it to write user-program into Flash.When DSP applied in satellite payload,single event effect may cause the Flash storage unit to happen flip.Both user-program and initial-code have the risk of failure.Based on TMS320F2812,a new method of writing Flash via SCI is proposed.This method utilized DSP's bootload.After power on,first loaded writing-program and then loaded user-program.The later was wrote into Flash by the former,thus avoiding placing initial-code inside Flash.Groundverification shows that this method is of strong operability,and program works well.【总页数】4页(P7219-7222)【作者】符玉襄;孙德新;刘银年【作者单位】中国科学院上海技术物理研究所,上海200083;中国科学院上海技术物理研究所,上海200083;中国科学院红外探测与成像技术重点实验室,上海200083;中国科学院上海技术物理研究所,上海200083;中国科学院红外探测与成像技术重点实验室,上海200083【正文语种】中文【中图分类】TP368.1【相关文献】1.一种烧写TMS320F2xxDSP片内 Flash存储器的方法 [J], 崔伟成;赵修平;吕小勇;刘林密2.TMS320F2812片内Flash在线烧写技术研究 [J], 李静;张树团3.基于CCS的DSP片外Flash直接烧写设计 [J], 孙秋生;陈尚峰4.一种基于TMS320C 6713串口烧写FLASH实现自启动的方法 [J], 官琴;赖文娟;张筱波5.基于串口通信的DSP在线烧写技术研究 [J], 刘浩;李荣冰;刘建业;周彬因版权原因,仅展示原文概要,查看原文内容请购买。
DSP2812成功批量烧录下载、调试仿真DSP2812_FLASH烧写成功经验总结初次接触DSP2812的FLASH烧写,在“成功”锁死2块DSP2812和处理了一堆报错后,终于烧写成功。
其中CMD\LIB\ASM文件,可以在网上下载到,大家找找就可以1. 一定要下载最新的FLASH烧写插件,可以避免很多奇怪的错误出现,这一点非常重要,本人就是在此问题困扰了一整天。
2.下载烧写FLASH配套CMD文件、LIB文件以及起始代码asm文件。
CMD文件名称:DSP281x_Headers_nonBIOS.cmdCMD文件名称:F2812.cmdLIB文件名称:rts2800_ml.libASM文件名称:DSP281x_CodeStartBranch.asm另外在RAM调试时用以下两个文件:F2812_EzDSP_RAM_lnk.cmdDSP281x_Headers_nonBIOS.cmd3.配置C文件配置好主程序的C文件,才能将FLASH成功烧录,并且将FLASH中的文件拷贝到RAM中运行。
关于C文件的配置。
首先在F2812.CMD文件中,我们可以看到有关于加载FLASH到RAM的内容,以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSystem();)之后即可,所以,我们需要定义所用变量,这些定义都是:DSP281x_GlobalPrototypes.h 当中,当然,也可以放在其他系统初始化的地方。
Memcpy这个函数应该是rts2800_ml.lib库文件中自带的,不需要我们定义。
关于FLASH的初始化配置Initflash(); 我把它放置在Memcpy 函数之后。
关于ramfuncs,则在系统初始化中定义即可。
如:sysctrl.c中#pragmaCODE_SECTION(InitFlash, "ramfuncs"); 另外,许多朋友没有注意需要定义自己其他子程序,导致最终运行的主程序还是在FLASH中,比如你需要运行的子程序ABC,则需要定义#pragma CODE_SECTION(ABC, "ramfuncs") 烧写成功后的注意事项:1 一定要拔除仿真器(JTAG端),给电路板重新上电,方能实现FLASH启动。
F2812烧写个人总结----增加程序F2812烧写个人总结----增加程序在仿真器中将程序调试好,将程序烧入flash之前,需要做以下工作:一、硬件上确保DSP的XMP/MC管教接地,且SCIATXDA脚接高电平;XMP/MC接地为低电平:表示微机算计模式,那么0x3F FFC0指向的是2812的片内FLASH的地址。
上电复位后,复位向量是指向片内Flash的0x3F FFC0。
2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时已经固化好了引导程序。
在0x3F FFC0处是一条跳转指令,跳到iniboot(地址0x3FFB50)函数处执行iniboot代码,该iniboot代码就是ti在dsp出厂时固化在flash中的。
Iniboot函数判断几个GPIO引脚来判断使用哪一种引导模式,比如flash boot模式,检测SPICLKA,SCITXA,GPIO34的电平,当都为高电平时表明是片内flash boot模式,那么initboot执行完后跳转到0x3F 7FF6处,此位置刚好在128位(CSM)密码位置之前,你要在0x3F 7FF6处放置跳转指令(codestart:>BEGIN,PAGE=0 ),以跳转到你要去的地方。
BEGIN : origin = 0x3F7FF6, length = 0x000002/* Part of FLASHA. Used for "boot to Flash" bootloader mode. */codestart : > BEGIN PAGE = 0SCIATXDA脚接高电平:是为那选择2812以FLASH作为引导模式我们在这里可以看到Flash启动模式,需要将GPIOF4,设置为高电平,其他三个引脚状态任意。
其配置如下:二、向工程中添加F2812_EzDSP_FLASH_lnk.cmd文件,它是用于flash烧写的CMD文件,用于替换原有的用于RAM中调试的F2812_EzDSP_RAM_lnk.cmd文件。
DSP_2812Flash烧写步骤(本文是基于TI官方提供的库文件来操作的)说明:本人是将TI提供的库函数里面的DSP281x_common文件夹和DSP281x_headers文件夹里面的内容放到一起整理为自己用的UserFile文件夹。
具体参看下图:(1)(2)下面就开始说怎么烧写程序了:1.首先在线调试好程序,调试没有错误后开始执行下面的步骤;2.下载烧写FLASH之前首先添加CMD文件、LIB文件、起始代码asm 文件以及需要用到的MemCopy函数所在的源文件。
CMD文件名称:DSP281x_Headers_nonBIOS.cmdCMD文件名称:F2812.cmdLIB文件名称:rts2800_ml.libASM文件名称:DSP281x_CodeStartBranch.asmMemCopy文件名称:DSP281x_MemCopy.C将这几个文件都添加到工程中。
同时移除F2812_EzDSP_RAM_lnk.cmd是必须的。
因为这个是在RAM中调试的时候用到的。
3.配置C文件:配置好主程序的C文件,才能将FLASH成功烧录,并且将FLASH中的文件拷贝到RAM中运行。
首先在F2812.CMD文件中,我们可以看到有关于加载FLASH到RAM的内容:ramfuncs : LOAD = FLASHD,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSysCtrl();)之后即可:依照这三句话即可。
InitSysCtrl();MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);Initflash();下面就解释下为什么这样用:a)根据上面的三行程序以及CMD文件可以看出,我们需要定义所用变量:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;而这些变量的定义在TI提供的库文件中的DSP281x_GlobalPrototypes.h 当中,当然,你自己也可以放在其他系统初始化的地方(建议不用乱改TI提供的库文件)。
FLASH烧写的步骤大概如下
1、安装FLASH插件,CCS3.1版本的对应的插件版本(FLASH2X
for CCS3.1.EXE)要在1.12以上,否则不能烧写FLASH,安装完毕后,在CCS3.1的TOOLS工具中多一条F28XX on ship flash programmer。
2、将FLASH.CMD文件代替SRAM.CMD文件,编译程序后生成
“xx.OUT”文件。
3、点击TOOLS->F28XX on ship flash programmer,点击版面上的
“flash programmer Settings”后弹出一个对话框,点击BROWSE 按钮,选择弹出对话框中的文件:“FlashAPIInterface2812V2_10.out”,接着点击“OK”按钮。
注意改版面不要轻易修改任何参数,否则会造成DSP芯片死锁报废!不需要设时钟或者空间!!!
4、返回上一层界面后点击“Execute Operation”,DSP开始擦写
FLASH,在擦写过程中,禁止碰动DSP板子,防止出现烧写问题。
烧写完成后信息栏出现:
Erase/Program/V erify Operation succeeded
**** End Erase/Program/V erify Operation. ***
Device reset detected. Updating locked or unlocked
state of target in Flash Programmer.
The device is unlocked.
大功告成。
第一步:安装CCS3.1或更高版本下面以3.3为例
第二步:安装串口编程算法项目文件插件:sdf28xx_v3_3_serial(不同CCS对应不同版本插件,此插件与CCS3.3对应),安装在CCS根目录下
第三步:安装SdFlashV1.60或更高版本,安装在CCS根目录下
第四步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下
(1)用记事本的方式打开sdopts.cfg
(2)在"# End of sdopts.cfg”前加入如下文本:
[EmulatorId=C1]
EmuPortAddr=0xC1
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C2]
EmuPortAddr=0xC2
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C3]
EmuPortAddr=0xC3
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
[EmulatorId=C4]
EmuPortAddr=0xC4
EmuPortMode=RS232
EmuProductName=SERIAL_FLASH
第五步:打开SDFlash,路径为…\CCStudio_v3.3\specdig\sdflash\bin下(在打开CCS的前提下,还需打开要加载的工程,SDFlash.exe才能打开)
第六步:打开F2812SerialFlash.sdp工程
路径为…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812
打开Project-setting菜单,分别对target、erase、Programming、Verify进行设置Target:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F281xRS232Flash.dll 若使用PC的COM1则选择仿真器为C1,COM2则选择C2
Erase:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out Programming:
(1)…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out (2)flash data 载入要烧写的文件工程最好放在…\CCStudio_v3.3\MyProjects下,避免不必要的麻烦
Verify:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out 其余不用改动,按默认值就可以。
如图所示
设置完成后保存工程。
第七步:将DSP的SCI_A和PC的RS232口连接以SCI-A模式重新上电或复位
DSP的SCI-A启动模式:GPIOF4=0 GPIOF12=0 GPIOF3=1 GPIOF2=1
特别注意:GPIOF4为SCI_A TXD端子,复位完成后(几秒钟后即OK),应马上恢复原DSP 能传输信号状态。
第八步:复位SDflash,点击Reset红色键
第九步:点击SdFlash菜单的Flash项,再点击Start即可。
第十步:烧写成功后,一定要掉电并拔掉RS232连接,重新上电以Flash模式启动。
系统默认采用30M晶振,如不是该频率,参考SDFlash_Serial_RefGuide_v3_3.pdf对算法工程文件进行修改。