DSP2812_FLASH烧写成功经验总结
2812串口烧写Flash方法
第一步:安装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 其余不用改动,按默认值就可以。
2812的FLASH 烧写
FLASH 烧写
1.1. 烧写软件的安装
ٛ打开“2812烧写插件” 目录下的文件:
C2000-2.00-SA-to-UA-TI-FLASH2X.EXE,并按照提示安装软件。
ٛ
ٛ软件安装完成后,打开CCS 2(C2000),会出现下图所示的云状按钮。
1.2. 生成烧写文件
以定时器往返流水灯实验为例说明。
打开工程文件CpuTime0.pjt。
从工程中移除文件:SRAM.cmd 。
如下图所示。
添加FLASH.cmd 文件到工程。
如下图所示
在工具栏单击Release 按钮,并重新编译。
Release 目录下的OUT 文件是最终烧写文件。
1.3. 烧写用户程序
ٛ点击云状物按钮,出现下图所示界面。
注意黄色部分最好不要修改,也不要轻易点击“Lock”,否则2812 可能烧毁。
ٛ
ٛ
ٛ编程程序设定:
ٛ点击Execute Operation按钮即可开始烧写,此过程会出现多次进度条提示,分别是:clear、erase 、program 、check 等。
请耐心等待,程序会自动完成烧写过程。
ٛ
ٛ烧写完成后关闭烧写界面。
如果信息栏出现如下图所示信息,说明烧写成功!请将开发板断点后重新加电,即可。
2812 FLASH编程小结
//#define CPU_RATE 20.000L //for a 50MHz CPU clock speed (SYSCLKOUT)
#define CPU_RATE 33.333L //for a 30MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 41.667L //for a 24MHz CPU clock speed (SYSCLKOUT)
Flash_CPUScaleFactor=SCALE_FACTOR; Flash_CallbackPtr=NULL;
VersionFloat = Flash_APIVersion(); VersionHex = Flash_APIVersionHex(); //Flash_ToggleTest(GPAMUX,GPATOGGLE,GPIOA0); for(i=0;i<8;i++)
//#define CPU_RATE 8.333L //for a 120MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 10.000L //for a 100MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 13.330L //for a 75MHz CPU clock speed (SYSCLKOUT)
30M,PLL=2;
在直接编程前先做 Flash 编程频率测试,用 Flash_ToggleTest 实现;
用示波器测试频率大概在 10K 左右;
现在你可以使用 Flash API 函数编程了;
我没有把程序放到 Flash 里面,只是用仿真器在 RAM 里面运行,下面是我的测试
DSP28xx芯片FLASH烧写
该文档主要是为了方便第一次对DSP28xx芯片进行FLASH烧写的朋友声明:1、以下方法基于CCS3.3,其它版本不知道行不行;2、使用的是修改例程后的工程,如果自己新建的工程,可能会出现其它问题,如头文件没有引,build options设置等问题;3、使用的是某公司的开发板,其它开发板可能硬件上连接不同,flash mode是需要特定引脚接高电平的;有的板没有reset键也没办法,总之我的是要上电、reset才行。
操作步骤:1、第一次用flash烧写要设置以下内容:1)开始->所有程序->TexasInstruments->Code ComposerStudio3.3->ComponentManager2)Texas Instrument Inc.下找到并选中Flash28xx<x:\……\ccstudio_v3.3\plugins\flash28xx>。
注:x:\……\是你的路径,每个人可能不同。
3)连接好DSP,在CCS中rebuild all你的工程后,Tools-F28xx on-chip flash programmer,设主频,选择插件版本(我试过选旧版的那个,好像会默认帮你改成最新那个),然后进入Flash界面,切勿乱改左边中间(就是很多行“FFFFFF”那里)的东西,点execute operation 就开始烧写了。
烧写完后可能会弹出以下警告:Warning: This program contains initialized RAM data.It may run successfully under Code Composer Studiobut not as a standalone system because of this. Ifyour Flash program requires initialized data in RAM,you will need to write Flash code to initialize RAM memory.以下两步是解决该警告的方法。
flash烧写成功经验
flash烧写成功经验DSP2812_FLASH烧写成功经验总结初次接触DSP2812的FLASH烧写,在“成功”锁死2块DSP2812和处理了一堆报错后,终于烧写成功。
在此过程中在HELLODSP论坛中看到很多朋友也遇到过与我类似的问题,为了让更多的新手朋友少走弯路,将我4天折磨的烧写过程经验与大家分享,本人菜鸟初学,有错误之处,敬请指教。
其中CMD\LIB\ASM文件,我都是在一个同事给北京瑞泰开发板给的例程中找到,大家可以参照。
1. 一定要下载最新的FLASH烧写插件,可以避免很多奇怪的错误出现,这一点非常重要,本人就是在此问题困扰了一整天。
名称是:C2000-2[1][1].00-SA-to-UA-TI-FLASH2X.EXE我使用的产品版本号为2.02.0012. 下载烧写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.cmd附件给出了2个CMD文件、ASM文件、LIB文件以及C文件。
其中C文件仅仅作为大家参考。
3. 配置C文件配置好主程序的C文件,才能将FLASH成功烧录,并且将FLASH 中的文件拷贝到RAM 中运行。
关于C文件的配置。
首先在F2812.CMD文件中,我们可以看到有关于加载FLASH到RAM的内容:ramfuncs : LOAD = FLASHD,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSystem();)之后即可:InitSystem();memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd - &RamfuncsLoadStart);Initflash();所以,我们需要定义所用变量:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;我的这些定义都是:DSP281x_GlobalPrototypes.h 当中,当然,也可以放在其他系统初始化的地方。
DSP-F2812-SPI-FIFO调试总结(精)
D S P -F 2812-S P I -F I F O 调试总结2010-5-231、调试运行期间,不可间断,哪怕是用刷新一下寄存器的值也不可以。
因为,SP I的运行是以时钟为基准的,即便是很短暂的延时或是外界干扰,也可能导致数据不正确。
而你如果刷新一下寄存器,在实时调试期间,无论程序运行在何处,都会有很短暂的延时,对D S P 来说,不能忽略!2、如果想查看通信传输的结果是否正确,只需运行一段时间,停止,查看事先设置好的暂存数据的数组即可。
3、下面的例程调试时,是将从机烧写到另一块D S P 的F L A S H 里面,主机采用实时调试方式。
4、把从机程序写到f l a s h时要注意:一定要在R A M区初始化F L A S H ,只有这样,其代码的运行速度才可以达到一个相对来说比较高的水平。
5、像这种反复进出中断的程序,在时序上的确让人很头疼,在中断里有时即便有很短暂的延时,也会出现错误,或者是刚开始运行正常,可过不了多久,传输数据就会出现差错。
6、主机的程序如下,从机的几乎是一样的,只是把主从设置为改了即可。
#i n c l u d e " D S P 281x _D e v i c e . h "#i n c l u d e " D S P 281x _E x a m p l e s . h "#d e f i n e G p i o S e l e c t ( E A L L O W ; \G p i o M u x R e g s . G P F M U X . a l l = 0x 000F ; \ E D I Si n t e r r u p t v o i d S p i T x I s r (v o i d ;i n t e r r u p t v o i d S p i R x I s r (v o i d ;v o i d I n i t S p i F I F O (v o i d ;v o i d E r r o r ( ;u n s i g n e d i n t i = 0, r d a t a [8], s d a t a [8];v o i d m a i n (v o i d{I n i t S y s C t r l ( ; //初始化系统时钟G p i o S e l e c t ( ; //初始化G P I O ,配置本例程需要G P I O 端口 D I N T ; //关C P U 级总中断I E R = 0x 0; //关P I E 级所有中断I F R = 0x 0;I n i t P i e C t r l ( ; //初始化P I E 控制寄存器I n i t P i e V e c t T a b l e ( ; //将P I E 中断向量表重新映射到特定位置,使能P I E 级中断E A L L O W ;P i e V e c t T a b l e . S P I R X I N T A = &S p i R x I s r ; //指定中断服务子程序的入口地址P i e V e c t T a b l e . S P I T X I N T A = &S p i T x I s r ;E D I S ;P i e C t r l R e g s . P I E I E R 6. b i t . I N T x 1 = 1; //使能P I E 级的S P I R X I N T 中断P i e C t r l R e g s . P I E I E R 6. b i t . I N T x 2 = 1;I E R |= M _I N T 6; //使能第六组P I E 级中断E I N T ; //开放C P U 级中断E R T M ; //使能实时调试中断P i e C t r l R e g s . P I E A C K . a l l = P I E A C K _G R O U P 6; //允许接受该组的中断请求I n i t S p i F I F O ( ; //初始化S P I , 配置成所需模式D E L A Y _U S (1 ;f o r (; ; ; //等待中断}v o i d I n i t S p i F I F O (v o i d{S p i a R e g s . S P I C C R . a l l = 0x 000F ; //S P I配置寄存器,复位、禁止自测模式、下降沿发送数据、字符长度为16 S p i a R e g s . S P I C T L . a l l = 0x 000E ; //S P I操作寄存器,为主机模式、yo u 延时、主机、允许发送S p i a R e g s . S P I B R R = 124; //S P I波特率寄存器,300K H zS p i a R e g s . S P I F F T X . a l l = 0x c 028; //复位、使能F I F O模式、使能T X 匹配中断、8级中断匹配 S p i a R e g s . S P I F F R X . a l l = 0x 0028; //复位、使能R X 匹配中断、8级响应中断S p i a R e g s . S P I F F C T . a l l = 0x 0; //无延时S p i a R e g s . S P I F F R X . b i t . R X F I F O R E S E T = 1; //退出复位 S p i a R e g s . S P I F F T X . b i t . T X F I F O = 1;S p i a R e g s . S P I C C R . b i t . S P I S W R E S E T = 1;}i n t e r r u p t v o i d S p i T x I s r (v o i d{f o r (i =0; i <8; i ++{s d a t a [i ] = i +1; //初始化发送数据S p i a R e g s . S P I T X B U F = s d a t a [i ];}S p i a R e g s . S P I F F T X . b i t . T X F F I N T C L R = 1; //清除发送中断,已可以响应其他中断P i e C t r l R e g s . P I E A C K . a l l = P I E A C K _G R O U P 6; //允许响应该组其他的中断}i n t e r r u p t v o i d S p i R x I s r (v o i d{注丗发送级别最好设为0否则可能出现意向不到的问题f o r (i =0; i <8; i ++{r d a t a [i ] = S p i a R e g s . S P I R X B U F ;i f (r d a t a [i ] == 0 i = 0; //舍去伪数据,实验时发现刚开始收的数据都是0,在此姑且这么认为i f (r d a t a [i ] ! = s d a t a [i ] E r r o r ( ; //收发数据不相等,报错,停止}S p i a R e g s . S P I F F R X . b i t . R X F F I N T C L R = 1; //清除接受中断 P i e C t r l R e g s . P I E A C K . a l l = P I E A C K _G R O U P 6;}v o i d E r r o r (v o i d{a s m (" E S T O P 0" ; //错误,则调试终止f o r (; ; ;}。
2812串口烧写Flash步骤
旺仔教你学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。
2812flash烧写flash心得、说明
//上面的放在程序之前
memcpy(&RamfuncsRunStart,
&RamfuncsLoadStart,
&RamfuncsLoadEnd - &RamfuncsLoadStart);
然后这个是放在系统初始化之后
下面这个是放在main函数之后
void InitFlash(void)
asm(" RPT#6 || NOP ");
}
不同频率下所需要插入的等待数目不一样
2812所用的外部时钟为30MHZ,在InitSysCtrl()函数中设置CPU的时钟频率,例如 PLLCR=0x0A 时,CPU的时钟频率为150MHZ;
在根据不同频率下片内flash所需要插入的等待数目:
这样子就可以了。
还可以这样子,将运行时所有的常量加载至RAM单元,但需要占用较多的RAM单元。
方法:复制整个.econst段至RAM单元。
在CMD文件和C文件中添加如下代码:
SECTIONS
{
.econst : LOAD = FLASHD, PAGE = 0
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
#pragma CODE_SECTION(InitFlash,"ramfuncs")
void InitFlash(void);
对时间敏感的函数代码如定时器加载到RAM中运行以优化性能
对关键的全局常量如数组加载至RAM运行以优化性能
DSP2812的FLASH在线升级
DSP2812的FLASH在线升级当开发人员把工业控制电路板或产品发出去给客户使用后,紧接着面临的问题是如何对板级芯片升级。
我们不可能要求所有客户会使用仿真器,让工程售后服务人员去每一个厂家升级也不切实际,况且客户分布在全国各地,甚至世界的各个角落。
那我们就必须要做到像升级应用程序一样,插上U盘或者系统联网后点下按钮就能完事。
目前很多公司的新系统都面临着此类的问题。
习惯使用仿真器的开发者开始了新的挑战。
这方面资料网上比较少,即使找到成功的案例他们也只说成功了,却没有提及到如何成功。
我们唯一能确定的是这是可以的,但得自己去摸索,去实践。
我正在做的是dsp2812的flash在线升级。
也就是说在不用仿真器的情况下把程序烧写到片上flash中。
TI官方公布了一些资料,其中包括1.通过windows的程序sdflash利用串口烧写flash,需要几个先决条件(网上可以下载到)1)安装sdf28xx_v3_3_serial.exe和setupCCSPlatinum_v30329.exe2)根据《2812串口烧写Flash步骤及设置.pdf》操作此方法我没有成功,但是有几点我可以肯定,首先没有从flash启动,应该是从SCI_A启动的,串口可以通讯(不过当做发送文件试验时只能发送10个字节就不行了)。
没有找到问题所在,希望以后有机会能够搞懂。
2.片上flash不能从一个扇区操作另一个扇区。
也就是说flash的程序复制升级数据到flash上是不行的。
这里采取3个步骤1)升级前把程序(升级部分)拷到内存中运行(后面会讨论)2)内存中的程序擦除flash(本文需要叙述的)3)内存中的程序把升级的数据(我们通过双口ram从ARM传过来)烧写进flash,并验证。
(本文需要叙述的)3.TI已经公布了操作flash的API库,头文件,需要注意的事项和例子,装好sdflash软件,在该目录下可以找到这些东西(C:\CCStudio_v3.3\specdig\sdflash\mydrivers\DSP281x_v3_3\Flash281x_API\Flash2 812_API_V210)。
DSP串口烧写Flash方法(精)
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相同。
DSP2812程序运行过程学习总结
DSP2812程序运⾏过程学习总结DSP2812程序运⾏过程学习总结⼀、2812的上电运⾏过程以下是2812上电(复位)后运⾏过程的描述:1:上电运⾏时根据MP/MC引脚的状态决定是从⽚外的3fffc0处读取复位向量或者时从⽚内的rom的3fffc0处读取复位向量。
MC ⽅式下从⽚内读取,MP⽅式下从⽚外读取。
2:⼀般我们⽤的是MC⽅式,即从⽚内读取复位向量,在⽚内的rom 3fffc0处有⼀个地址为3ffc00。
3:复位后处理器从3fffc0处读取3ffc00这个地址,所以程序从3ffc00处开始执⾏4:3ffc00处开始的就是initboot过程,根据IO管教的状态判断该进⼊那⼀种引导⽅式5:在SCITXA引脚为⾼电平时就是flash boot⽅式,此时置PC=3F7FF6SCITXA引脚有内部上拉,所以只要没有强制下拉的话,DSP检测的都是⾼电平。
对于通讯不影响。
SCITXA不⽤在外部上拉。
不能直接接到⾼电平上。
6:在⽚内flash的3F7FF6和3F7FF7处有⼀个跳转指令,该跳转指令就是LB _c_int007:执⾏这个跳转指令后程序就开始运⾏c_int00这个函数了8:这个函数就是建⽴⼀个c程序的运⾏环境,等建⽴完c运⾏环境后c_int00调⽤main函数9:main函数开始就是我们⾃⼰编写的应⽤程序了。
⼆、CMD⽂件介绍DSP开发过程中,编译器⽣成的代码和数据要由链接器分配到合适的存储空间,通常链接器的命令⽂件.cmd⽂件是由⽤户⾃⼰编写的,编写不当,就会使仿真开发不能进⾏。
1存储空间的配置TMS320F2812的DSP存储器分为三个独⽴选择的空间-程序空间、数据空间和I/O空间,其中程序存储器存放待执⾏的指令和执⾏中所⽤的系数(常数),可使⽤⽚内或⽚外的RAM、ROM或EPROM等来构成;数据存储器存放指令执⾏中产⽣的数据,可使⽤⽚内或⽚外的RAM和ROM来构成;I/O存储器存放与映象外围接⼝相关的数据,也可以作为附加的数据存储空间使⽤。
DSP2812总结之(1)
DSP总结之(1)第一部分:TMS320F2812简介♦DSP(Digital Signal Processor)数字信号处理器,主要研究如何将理论上的数据处理技术应用于DSP中。
♦DSP采用哈佛结构,通过独立的数据总线在程序空间和数据空间同时访问。
♦在一个指令周期内(150MHz,6.67ns)可以完成一次乘法和一次加法运算。
♦TMS320F2812是TI(Texas Instruments)公司推出的32位定点DSP芯片,属于C2000系列。
向下是2407,向上是28335。
TMS表合格产品,320表TI DSP系列,F表Flash EEROM (内核电压1.8/1.9V,I/O口电压3.3V),PGF表176脚LQFP封装,A表40℃-85℃。
♦DSP开发所需准备的工具:CCS3.3+仿真器XDS100+目标板F2812+具体外围电路♦F2812片内外设(DSP内部集成的外部设备)6个:EV A EVB ADC SCIA SCIB SPI CAN McBSP♦常用地:脚86,常用3.3V:脚81♦用ADC时,脚175和176相连♦常用到F14作为I/O口输出,作指示使用♦JTAG(Joint Test Action Group ,联合测试行动小组) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,如今大多数比较复杂的器件都支持JTAG 协议,如ARM 、DSP 、FPGA 器件等。
♦工程文件放在MyProjects文件夹中肯定好使,放在其他地方(桌面除外)亦可。
♦.h文件定义了DSP内部寄存器的数据结构、中断服务程序等内容软件开发时编写的代码都是写在.c中.cmd文件规定了把哪些代码放到哪个区域,管存储空间分配♦.h中宏定义、变量、函数声明.c所有变量和函数的定义♦DSP281x_Device.h中有一段代码已经包含了其他的头文件(具体多少个在其中看,2个未加DSP281x_Device.h)。
dsp2812falsh烧写经验总结
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管脚状态,确定启动模式。
DSP串口烧写Flash方法精
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傻瓜式烧写步骤
本文关于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,断电,拔除仿真器,再次上电即可看到,程序执行的现象。
成功烧写TMS320F2812经验
}
SECTIONS
{
/* Allocate program areas: */
.reset : > BEGIN PAGE = 0
/* 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
CSM : origin = 0x000AE0, length = 0x000010
XINTF : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
PIE_VECT : origin = 0x000D00, length = 0x000100
/* Peripheral Frame 1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100
F2812烧写个人总结----增加程序知识分享
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文件。
DSP2812程序的烧写固化
DSP-TMS320X2812.之代码烧写入Flash固化--cold weather程序的固化不是很难的事情,但是还是有很多需要注意的地方,如果对DSP了解不够多不够熟悉的话,建议不要贸然去尝试烧写DSP 的Flash,因为操作过程一个不注意会造成Flash锁死或者烧毁,因此在完全完成系统的调试之后,再对Flash进行烧写。
下面,weather以CCS3.3版本为例,介绍一下烧写过程。
(用到较多的版本为CCS2.2和CCS3.3,3.3的版本一般需要安装插件,本例子以3.3版本为例,所以需要安装插件的孩子们请度娘一下插件)步骤:1.打开需要烧写的工程,必须保证这个工程在RAM中已经调试完成了。
2.如果工程还没有添加gel文件,先添加f2812.gel.通常f2812.gel文件的路径是:CCS的安装路径\cc\gel\f2812.gel。
3.将工程原有的lib文件更换为:rts2800n.lib。
4.将RAM的CMD文件更换为flash烧写的CMD文件:FLASH.cmd5.重新编译工程。
6.选择工具栏Tools--F28xx On--Chip Flash Programmer,打开烧写工具,弹出如下:接下来,首先设置Clock configuration,输入30,意思是晶振频率为30M,PLLCR根据工程内的实际配置进行选择,一般为10,系统时钟SYSCLKOUT此时为150M。
7.单机Flash Programmer Settings.选择设备F2812,Select version to flash API选择FlashAPI-Interface2812V2_10.out.配置完成单机OK。
8.单机Execute Operation开始烧写。
烧写成功。
9.关闭CCS,关闭电源。
将仿真器从计算机USB口拔下,将仿真器和目标板分开。
单独给DSP2812上电。
大功告成。
(请按顺序操作)。
【心得体会】dsp实验心得体会
【关键字】心得体会dsp实验心得体会篇一:dsp实验报告心得体会TMS320F2812x DSP原理及应用技术实验心得体会1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。
2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。
3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。
设置好的配置中只能有一项。
4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。
5. 这次实验采用软件仿真,不需要打开电源箱的电源。
6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。
7. 执行write_buffer一行时。
如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。
8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。
9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。
10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。
如果不重新加载,那么修改执行程序后,其结果将不会改变。
11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。
12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
memcpy(&RamfuncsRunStart,
&RamfuncsLoadStart,
&RamfuncsLoadEnd - &RamfuncsLoadStart);
Initflash();
所以,我们需要定义所用变量:
其中CMD\LIB\ASM文件,我都是在一个同事给北京瑞泰开发板给的例程中找到,大家可以参照。
1. 一定要下载最新的FLASH烧写插件,可以避免很多奇怪的错误出现,这一点非常重要,本人就是在此问题困扰了一整天。
名称是:
C2000-2[1][1].00-SA-to-UA-TI-FLASH2X.EXE
2. 注意MP/MC引脚的电压。0为方式MC来作为计算机模式启动,3.3V为方式MP作为微处理器模式启动。
3. 由于GPIO引脚的F4\F12\F3\F2决定了DSP2812的启动顺序,而从FLASH必须要在F4(SCITXDA)为1,而F12\F3\F2随意的状态下启动。请大家启动前确认F4引脚电压。
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSystem();)之后即可:
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
我的这些定义都是:DSP281x_GlobalPrototypes.h 当中,当然,也可以放在其他系统初始化的地方。
Memcpy这个函数应该是rts2800_ml.lib库文件中自带的,不需要我们定义。
关于FLASH的初始化配置Initflash();
我把它放置在Memcpy函数之后。
关于ramfuncs,则在系统初始化中定义即可。如:sysctrl.c中
#pragma CODE_SECTION(InitFlash, "ramfuncs");
关于C文件的配置。
首先在F2812.CMD文件中,我们可以看到有关于加载FLASH到RAM的内容:
ramfuncs : LOAD = FLASHD,
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
另外在RAM调试时用以下两个文件:
F2812_EzDSP_RAM_lnk.cmd
DSP281x_Headers_nonBIOS.cmd
附件给出了2个CMD文件、ASM文件、LIB文件以及C文件。
其中C文件仅仅作为大家参考。
3. 配置C文件
配置好主程序的C文件,才能将FLASH成功烧录,并且将FLASH中的文件拷贝到RAM中运行。
DSP2812_FLASH烧写成功经验总结(带本人调试的CMD等文件)
初次接触DSP2812的FLASH烧写,在“成功”锁死2块DSP2812和处理了一堆报错后,终于烧写成功。在此过程中在HELLODSP论坛中看到很多朋友也遇到过与我类似的问题,为了让更多的新手朋友少走弯路,将我4天折磨的烧写过程经验与大家分享,本人菜鸟初学,有错误之处,敬请指教。
我使用的产品版本号为2.02.001
2. 下载烧写FLASH配套CMD文件、LIB文件以及起始代码asm文件。
CMD文件称:DSP281x_Headers_nonBIOS.cmd
CMD文件名称:F2812.cmd
LIB文件名称:rts2800_ml.lib
ASM文件名称:DSP281x_CodeStartBranch.asm
另外,许多朋友没有注意需要定义自己其他子程序,导致最终运行的主程序还是在FLASH中,比如你需要运行的子程序ABC,则需要定义#pragma CODE_SECTION(ABC, "ramfuncs")
烧写成功后的注意事项:
1. 一定要拔除仿真器(JTAG端),给电路板重新上电,方能实现FLASH启动。