F2812烧写个人总结----增加程序

合集下载

TMS320F2812片内Flash在线烧写技术研究

TMS320F2812片内Flash在线烧写技术研究

1 引 言
T 30 21 ( MS 2 F 8 2 以下 简 称 F 8 2 2 1 )是 美 国 德 州 仪 器 公 司 (I新 一 代 3 T) 2位 定 点 数 字 信 号 处 理 器 ( S ) 主 要 应 用 于 逆 DP ,
地分 配 到 D P的地址 空间 . S S D P集 成 开 发 环 境 C S经 编 译 C
链 接 之 后 。 成 . t 件 和. p文 件 。. p文 件 详 细 描 述 了. 生 o 文 u ma ma c d文 件 中定 义 的 各 段 起 始 地 址 以及 使 用 长 度 。 而 o t m u 文件 为 C F O F格 式 , S D P能 够识 别 , 不 能 直 接 烧 写 到 Fah 必 须 但 ls ,
变 器 控 制 、 机 控 制 等 领 域 , 拥 有 工 作 频 率 高 达 10MH 电 并 5 z
将 . t 件 转 换 为 Fah能 识 别 的 数 据 格 式 , h x的数 据 文 O 文 u l s 即.e
的3 2位 D P内 核 处 理 器 .可 以高 效 可 靠 地 实 现 自适 应 控 制 S
g v n i h s p p r h mp e n ai n p o e s se s o h e h i u n a to e o e a e g v nT r u h su y i e n t i a e . e i lme t t r c s t p f t e t c n q e a d a p r f k y c d r ie . h o g t d T o
骤 。 出 了关键 部 分 的 程 序 代 码 。 通 过 对 比发 现 , 于 J A 给 基 T G接 口烧 写技 术 常 用 于调 试 阶段 , 串 口烧 写 技 术 能 够 应 而

2812的FLASH 烧写

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步骤及设置

2812串口烧写Flash步骤及设置

1.先安装sdf28xx_v3_3_serial,安装时按照默认路径安装,与CCS3.3安装路径相同;2.安装SDFlash 软件:SetupCCSPlatinum_v30329,安装路径与CCS3.3安装路径相同;3. 编辑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_FLASH3.利用串口线连接DSP与PC机;配置F2812为从SCI-A的启动模式,复位时:GPIOF4=0 GPIOF12=0 GPIOF3=1 GPIOF2=1;4.打开SDFlash,路径为:C:\CCStudio_v3.3\specdig\sdflash\bin下SDFlash.exe,如下图所示。

5.打开F2812SerialFlash.sdp工程,路径:C:\CCStudio_v3.3\specdig\sdflash\myprojects\sdf28xx_v3_3_serial\f28126.打开Project-Settings菜单,对工程进行配置,_ Driver: This must point to F281xRS232Flash.dll (for F281x devices), toF280xRS232Flash.dll (for F280x, F2801x, and F2804x), or toF2833xRS232Flash.dll (for F2833x and F2823x devices)._ Emulator Address/ID: This is the COM port on your PC that you are using to connect to the DSP. If COM1, COM2, COM3 and COM4 do not appear as options, modify the sdopts.cfg file as described previously in step 4._ Board file: Leave as ccBrd028x.dat_ Processor name: Leave as cpu_0Algorithm File: Use the same algorithm file that you specified on the Erase Tab. _ Flash Data File: This is the .out file that you want to program into the flash._ Timeout: Leave as 0. This option has been superseded by Programming User Options 4._ User Options 1 through 3: Unused._ User Options 4: : Program acknowledge retry specifier. After sending the DSP a packet of data to program into the flash, the PC runs a loop that checks for aprogram acknowledge from the DSP. This option controls the maximum number of times the PC will loop. It can generally be left at the default value of 0.Algorithm File: Use the same algorithm file that you specified on the Erase Tab. _ Timeout: Leave as 0._ User Options 1 and 2: Unused.Note: In the JTAG version of SDFlash, these options specify the wait-states for the OTP and Flash memory to be set before the verify operation starts. The serial version of SDFlash does not use these options however, and instead the wait-states remain set to their reset defaults (which are the maximum values). _ User Options 3 and 4: Unused8.保存SDFlash工程,9.DSP上电或复位,以启动SCI-A模式10. 复位SDFlash,单击红色按钮。

DSP-F2812-SPI-FIFO调试总结(精)

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 (; ; ;}。

关于F2812的CAN问题

关于F2812的CAN问题

关于F2812的CAN问题关于F2812的CAN问题2812得can说起来不复杂,但是我调了有一段时间。

我是看了T I提供得例子程序,然后修改放在自己上面得,刚开始得时候不知道为什么总是不行,后来在网上搜,问别人,答案都不让人满意。

于是我就放置了,过了一段时间再拿出来看,问题却解决了。

我很感叹自己从中得经历,所以将自己开发得过程和得出得教训写给大家,以供参考。

我是先参考TI得例子程序来做得,TI得例子程序可以从网站上下载。

can得例子程序是自测试得,而且程序是再ram里面跑得,修改和下载都比较方便,只是没有用到滤波,中断,标准模式,我想这些也是比较容易添加得,前提是要资料看会了,还有个办法就是参考ca n得例子程序,这个文件名是《Programming Examples for the TM S320F281x eCAN.pdf》里面有不少例子。

快说糊涂了,其实我想说明4个问题,1 怎么样快速得得到自己得程序 2 can接收到发送方得id后怎么存放得。

3 发送邮箱得数据修改4 发送和接收中断得使用1 怎么样快速得到自己得程序参考ti提供得例子程序,先将他们得例子在自己得板子上跑起来,其实就是用自测试得方式来验证一下程序,也可以加些中断,看看程序怎么跑得。

这步没问题得话,可以改写程序,当然还在自测试模式下先试,如果可以改写后,在自测试模式下可以。

那么就差不多了,将自测试模式改成正常模式,将程序移植到自己得程序中,拿一个经过验证可以正常通讯得can模块通讯,记得两个can得速率要一致。

当然这个can模块还要能让你看到或者说能验证你得can是否通讯正常。

例如can转232接口得板子,如果收到你得can数据通过232口输出到电脑上。

我经过验证,ti得例子基本上,只要将自测试模式改成正常模式,基本上就可以正常通讯。

修改成那种方式,可以参看《Programming Examples for the TMS320F281x eCAN.pdf》2 can接收id得问题如果在不使用滤波得情况下,基本不用考虑id因为只有相同id得才能接收。

基于TMS320F2812的程序从FLASH到RAM的移植

基于TMS320F2812的程序从FLASH到RAM的移植
行。这可以通过指明加载和运行地址的的指令来实现。一个相关 这样分配如下所示。
.text:LOAD=FLASH—AB。PAGE=0 RUN=RAM—HOLOLl,PAGE=0
LOAD_-sTART(jexLI∞dS协rt), RUN—STARTLtexL,unstart), SIZELte)(t—size) 2软件测试
.sect”RAMfuncs”改变为.te)(t段,使DSP281 x-usDelay.弱m 定位在.te)(【段。
6)从DSP281X-SysclrLc文件代码中移去#pragma CODE —SECTION(1nitFLASH。”RAMfuncs”)。这将重新定位InitFIash() 函数到.te)(t段上来代替原来的RAMfuncs段。
intemaI FlAM.so.direct OperaCe.n F|鸽h for the ha晤h app¨ation,aften can not meeC the requ订ementS.TherefOre,there e×ist a
need to copy the code to RAM 10 enhance the Operating speed.This appIicaliOn repOrt and associated cOde fileS pravide
CMD文件的第二部分是段在存储器中的分配。这时实际 编译的段被链接到存储区中。本文中所有的段被加载和运行在 FLASH存储区。分配如下所示。
codestan:>BEGlN—FLASH。PAGE=0 wddisabIe:>FLASH-AB.PAGE=0
∞pysectjons:>Fb气SH—AB.PAGE=O 其它的初始化段被加载到FIash空间,却在内部RAM中运

Flash28x烧写指导

Flash28x烧写指导

Flash28x烧写指导本程序仅供F2810 Rev A & F2812 Rev A Silicon使用,程序中所有,默认值皆为烧写F2812 Rev A Silicon所作得设置,用户如果需要烧写2810可根据附录提供的资料自行修改。

注:本程序除烧写算法外,全部由Code Composer Studio GEL写成,用户可根据需要自行修改、设置。

需烧写F2810 Rev C & F2812 Rev C Silicon请自行到TI网站下载Flash 2810\F2812 API(此API程序需CCS2.2以上版本)软硬件准备:用户除具备基本的windows系统一套外还需如下设备或软件1、DSP仿真器一套2、F2812 Rev A Silicon目标一套3、CCS 2.0以上版本4、要烧写到Flash的目标程序5、本烧写程序安装程序安装:直接执行软件安装包setup.exe文件。

此文件存在于产品分发的光盘中或在闻亭网站( )下载得到。

安装过程中将需要您指定CCS2000的安装目录,安装完成后将在您指定的目录下生成WTFlash28x目录。

烧写准备:根据目标硬件的设置对flash算法进行重新编译。

相关内容参阅WTFlash28x\doc目录flash28xreadme.pdf文件,使用debug 模式编译文件成功后,请拷贝WTFlash2812.out到CCS的CC\bin目录下,里面安装有一个同名文件,您可以备份后删除或直接用新文件替换已有文件。

1、运行CCS 2000,进入CCS界面.2、为程序的烧写作数据转换工作。

加载目标程序,参照您编译程序的*.cmd文件中的内存分配情况(或编译后产生的*.map文件)把加载到内存中的程序数据使用数据输出(File->Data->Save…)功能转储到硬盘文件中,保存类型尽量使用hex(*.dat)类型,下图为数据存储时的4步,以下的样例采用Data Save –2 中的文件 “c:\ti\wtflash28x\he.dat”。

建立CCSv3.3工程(F2812)

建立CCSv3.3工程(F2812)
3、添加 H 文件,右击工程名,选择 Build Options 选择 Compiler 选项卡左 边标签选择 Preprocessor 在 Include Search Path 里面把工程目录下的 H 文件路径 拷贝到这里,一共两个,用分号分开,比如路径为:
D:\DSP_F28335_Projects\zhang\DSP281x_common\include; D:\DSP_F28335_Projects\zhang\DSP281x_headers\include
建立 CCS 工程
一、软件仿真设置
1. 启动仿真设置软件 点击桌面上的“Setup CCStudio v3.3”,如下图;
在“Platform”中选择 simulator,软件仿真器的型号选择“F2812 Device Simulator”,在 CPU 项中单击右键选择 Porperties,GEL 文件选择 f2812.gel 文件, 点击“Save & Quit”,保存并退出,系统自动“CCStudio v3.3”软件。 2. 硬件仿真设置(使用硬件仿真器在目标板上仿真时,才能选择硬件仿真SP2812x_headers 的 soure 目录中。
五、添加 LIB 库文件
右击添加找到 CCSv3.3 安装目录:比如 D:\Program Files \CCStudio_v3.3\C2000\cgtools\lib 添加 rts2800_ml.lib 文件,最后的文件目录如下:
二、建立一个 CCS 工程(以 TMS320F2812为例)
1、点击 project->new 添加工程名和路径,点击 OK 后左边生成一个文件列 表。
三、添加必要文件
1、把 example 里面的 DSP2802x_common 和 DSP2802x_headers 拷贝到项目 目录中;

TMS320F2812的CMD文件的编写经验总结

TMS320F2812的CMD文件的编写经验总结

TMS320F2812的CMD文件的编写经验总结CMD文件里包含三部分内容:1)输入/输出定义:.obj文件:链接器要链接的目标文件;.lib文件:链接器要链接的库文件;.map文件:链接器生成的交叉索引文件;.out文件:链接器生成的可执行代码;链接器选项2)MEMORY命令:描述系统实际的硬件资源3)SECTIONS命令:描述“段”如何定位F2812的CMD文件只包含后两部分,现对它的编写做一下总结:(一)用于调试时用,取名为SRAM.CMD这里有个比较标准的F2812的CMD文件,可以供大家借鉴使用:MEMORY{PAGE 0:ZONE0 : origin = 0x002000, length = 0x002000ZONE1 : origin = 0x004000, length = 0x002000RAML0 : origin = 0x008000, length = 0x001000ZONE2 : origin = 0x080000, length = 0x080000ZONE6 : origin = 0x100000, length = 0x080000OTP : origin = 0x3D7800, length = 0x000800FLASHJ : origin = 0x3D8000, length = 0x002000FLASHI : origin = 0x3DA000, length = 0x002000FLASHH : origin = 0x3DC000, length = 0x004000FLASHG : origin = 0x3E0000, length = 0x004000FLASHF : origin = 0x3E4000, length = 0x004000FLASHE : origin = 0x3E8000, length = 0x004000FLASHD : origin = 0x3EC000, length = 0x004000FLASHC : origin = 0x3F0000, length = 0x004000FLASHA : origin = 0x3F6000, length = 0x002000BEGIN_H0 : origin = 0x3F8000, length = 0x000002BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002PRAMH0 : origin = 0x3F8002, length = 0x001FFEZONE7 : origin = 0x3FC000, length = 0x003FC0ROM : origin = 0x3FF000, length = 0x000FC0 // boot ROM available if MP/MCn=0 RESET : origin = 0x3FFFC0, length = 0x000002VECTORS : origin = 0x3FFFC2, length = 0x00003EPAGE 1 : // Data MemoryRAMM0 : origin = 0x000000, length = 0x000400RAMM1 : origin = 0x000400, length = 0x000400DEV_EMU : origin = 0x000880, length = 0x000180FLASH_REGS : origin = 0x000A80, length = 0x000060CSM : origin = 0x000AE0, length = 0x000010XINTF : origin = 0x000B20, length = 0x000020CPU_TIMER0 : origin = 0x000C00, length = 0x000008PIE_CTRL : origin = 0x000CE0, length = 0x000020PIE_VECT : origin = 0x000D00, length = 0x000100ECAN_A : origin = 0x006000, length = 0x000100ECAN_AMBOX : origin = 0x006100, length = 0x000100SYSTEM : origin = 0x007010, length = 0x000020SPI_A : origin = 0x007040, length = 0x000010SCI_A : origin = 0x007050, length = 0x000010XINTRUPT : origin = 0x007070, length = 0x000010GPIOMUX : origin = 0x0070C0, length = 0x000020GPIODAT : origin = 0x0070E0, length = 0x000020ADC : origin = 0x007100, length = 0x000020EV_A : origin = 0x007400, length = 0x000040EV_B : origin = 0x007500, length = 0x000040SCI_B : origin = 0x007750, length = 0x000010MCBSP_A : origin = 0x007800, length = 0x000040RAML1 : origin = 0x009000, length = 0x001000FLASHB : origin = 0x3F4000, length = 0x002000CSM_PWL : origin = 0x3F7FF8, length = 0x000008DRAMH0 : origin = 0x3f9000, length = 0x001000}SECTIONS{// Compiler Required Sections.text : > PRAMH0, PAGE = 0.cinit : > PRAMH0, PAGE = 0.stack : > RAMM1, PAGE = 1.bss : > RAMM0, PAGE = 1.ebss : > RAMM0, PAGE = 1.const : > RAMM0, PAGE = 1.econst : > RAMM0, PAGE = 1.sysmem : > RAMM1, PAGE = 1.reset : > RESET, PAGE = 0, TYPE = DSECT // we are not using the .reset // section//Peripheral Frame 0 Register StructuresDevEmuRegsFile : > DEV_EMU, PAGE = 1FlashRegsFile : > FLASH_REGS, PAGE = 1CsmRegsFile : > CSM, PAGE = 1XintfRegsFile : > XINTF, PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1PieCtrlRegsFile : > PIE_CTRL, PAGE = 1PieVectTable : > PIE_VECT, PAGE = 1//Peripheral Frame 1 Register StructuresSysCtrlRegsFile : > SYSTEM, PAGE = 1SpiaRegsFile : > SPI_A, PAGE = 1SciaRegsFile : > SCI_A, PAGE = 1XIntruptRegsFile : > XINTRUPT, PAGE = 1GpioMuxRegsFile : > GPIOMUX, PAGE = 1GpioDataRegsFile : > GPIODAT PAGE = 1AdcRegsFile : > ADC, PAGE = 1EvaRegsFile : > EV_A, PAGE = 1EvbRegsFile : > EV_B, PAGE = 1ScibRegsFile : > SCI_B, PAGE = 1McbspaRegsFile : > MCBSP_A, PAGE = 1//Peripheral Frame 2 Register StructuresECanaRegsFile : > ECAN_A, PAGE = 1ECanaMboxesFile : > ECAN_AMBOX PAGE = 1//Code Security Password LocationsCsmPwlFile : > CSM_PWL, PAGE = 1}(二)用于烧写到FLASH中时用,取名为FLASH.CMDFLASH.CMD与SRAM.CMD基本一样,只是有两处改动:一是MEMORY中将你的程序代码部分映射到FLASH空间里;二是在SECTIONS中添加一个用户定义的起始段,起始段的代码如下://User Defined Sections , Used by file DSP28_CodeStartBranch.asmcodestart : > BEGIN, PAGE = 0其中DSP28_CodeStartBranch.asm中的关键代码为:.ref _c_int00.sect “codestart”Code_start:LB _c_int00.end(三)SECTIONS中段的含义与用户自定义段的方法1、各个段的含义以下是TI公司的技术文档中对一些段的说明,现截个图给大家参考:除此外还有一些段的含义如下(这仅是我见过的,有漏下的还请提示,大家一起学习):.reset 复位中断向量表.vectors 中断向量表.data 已初始化数据,常数数据(比如对变量的初始化数据).pvecs 外围模块中断向量表.ref 引用外部定义的变量或函数名.global 引用全局变量或函数.space 定义要保留的空间.def 定义变量,与#define功能相同.end 段的结束标识.sect 用户自定义的已初始化段.asect 比.sect多了绝对地址定位功能,一般不用.usect 用户自定义的未初始化段已初始化的段:.text, .cinit, .const, .econst, .pinit, .switch.text:所有可以执行的代码和常量.cinit:全局变量和静态变量的C初始化记录.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明.econst:包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明.pinit:全局构造器(C++)程序列表.switch:包含转换语气声明的列表非初始化的段:.bss, .ebss, .stack, .sysmem, .esysmem(更好的理解就是,这些段就是存储空间而已)..bss:为全局变量和局部变量保留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.bss空间中.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中.stack:为系统堆栈保留的空间,主要用于和函数传递变量或为局部变量分配空间.sysmem:为动态存储分配保留的空间。

F2812 Flash烧写步骤

F2812 Flash烧写步骤

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网站下载,只需按照帮助文档操作就可以了,网上也有徐工网友的翻译版操作流程。

DSP2812 flash 烧写成功方法,烧录器下载器 2812下载器 编程器

DSP2812 flash 烧写成功方法,烧录器下载器 2812下载器 编程器

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启动。

TMS320F2812DSP学习

TMS320F2812DSP学习

TMS320F28121 上电注意1)TMS320LF24xx:TPS7333QD,5V变3.3V,最大500mA2)JTAG中有四条地线,和P1(哈丁48输入ADC)中5v的地是联通的说明是由5v 供电的3)JTAG中的两条TCK是相同的4)P1中的每个输入有一个备用的5)电源连接后一定要检测,确保正、负极正确连接6)上电后不用示波器或者万用表点测,否则极易短路,如需,则上电之前用线焊上连出,将示波器探头连好7)送电之前一定用万用表测量电源和地是否短路8)连线务必焊接牢固,防止虚焊,否则易有过冲9)确保连出的线头不会短路,操作过程中不会互相碰触10)所有线头挂锡,否则相连太近的线头毛刺易短路10)仿真器不能热插拔11)加入的信号一定要确保在板子的额定之内,如AD电压不超过3V等2 仿真器驱程安装和ccs设置仿真器型号:USB2.0操作系统:WIN98,WINNT,WIN2000CPU:C2000,C5000,C6000口地址:0x240安装过程如下:1.首先安装USB驱动,与安装其它硬件类似。

2. 安装其它程序,运行SETUP即可。

1)仿真器作用:主要是通过仿真器将DSP开发板与电脑连接,这样所编写的程序才能写入DSP芯片,以及在计算机上通过软件(CCS软件)调试DSP开发板,没有仿真器几乎做不了什么(高手可能出外),现在仿真器一般都是USB接口的,比如XDS510DSP仿真器等等,可以对各种系列DSP使用。

开发板按照板上的DSP芯片信号又分为:2000系列(一般自动控制用),5000系列(一般数字信号处理用),6000系列(一般图像处理用)2)USB 仿真器的安装及设置(1)点击光盘中文件Techusb USB 仿真器安装“USB——SETUP.EXE”.(2)点击下一步;(3)点击下一步;(4)USB驱动安装了,再检测USB与计算机连接是否正常,点击“USB20EMURST.EXE”按“RESET(R)”键,出现如上图标则表示正确。

DSP2812总结之(1)

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)。

DSP2812程序的烧写固化

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上电。

大功告成。

(请按顺序操作)。

2812串口烧写Flash方法

2812串口烧写Flash方法

2812串口烧写Flash方法第一步:安装ccs3.1或更高版本下面以3.3为例步骤二:安装串口编程算法项目文件插件:sdf28xx_uv3_3_uu3_uuSerial(不同的CCS对应不同版本的插件,该插件对应CCS3.3),该插件安装在CCS的根目录中第三步:安装sdflashv1.60或更高版本,安装在ccs根目录下第四步:编辑sdopts Cfg文件,该文件存储在您安装的windows的system32目录中(1)打开sdopts。

记事本中的exe(2)在\前加入如下文本:[emulatorid=c1]emuportaddr=0xc1emuportmode=rs232emuproductname=串行闪存[emulatorid=c2]emuportaddr=0xc2emuportmode=rs232emuproductname=串行闪存[emulatorid=c3]emuportaddr=0xc3emuportmode=rs232emuproductname=串行闪存[emulatorid=c4]emuportaddr=0xc4emuportmode=rs232emuproductname=串行闪存第五步:打开sdflash,路径为…\\ccstudio_v3.3\\specdig\\sdflash\\bin下(在打开ccs的前提下,还需打开要加载的工程,sdflash.exe才能打开)第六步:打开f2812serialflash.sdp工程路径是…\ \ccstudio_uv3。

3\\sdflash\\myprojects\\sdf28xx_uv3_3_uu串行\\f2812打开project-setting菜单,分别对target、erase、programming、verify进行设置擦除:…\\ccstudio\uv3。

3\\sdflash\\myprojects\\sdf28xx_uv3_3_uu串行\\f2812\\f2812串行闪存。

F2812烧写个人总结:FLASH到RAM

F2812烧写个人总结:FLASH到RAM

F2812烧写个人总结----增加程序2010-06-25 22:15在仿真器中将程序调试好,将程序烧入flash之前,需要做以下工作:一、硬件上确保DSP的XMP/MC管教接地,且SCIATXDA脚接高电平;XMP/MC接地为低电平:表示微机算计模式,那么0x3F FFC0指向的是2812的片内FLASH的地址。

上电复位后,复位向量是指向片内Flash的0x3F FFC0。

2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时已经固化好了引导程序。

在0x3F FFC0处是一条跳转指令,跳到iniboot(地址0x3F FB50)函数处执行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实验心得体会

DSP实验心得体会

篇一:d s p实验报告心得体会ms320f2812x dsp原理及应用技术实验心得体会1.设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。

2.在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上型号去添加。

3.不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。

设好的配置中只能有一项。

4.ccs可以工作在纯软件仿真环境中,就是由软件在pc机内存中造一个虚拟的dsp环境,可以调试、运行程序。

但是一般无法构造dsp中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。

5.这次实验采用软件仿真,不需要打开电源箱的电源。

6.在软件真工作时,无需连接板卡和仿真器等硬件。

7.执行write_buffer一行时。

如果f1执行程序,则程序在mian主函数中运行,如果按f11,则程序进入write_buffe函数内部的程序运行。

8.把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。

9.在实验时,显示图形出现问,不能显示,后来在graphtitle把input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。

10.在修改了实验2-1的序后,要重新编译、连接执行程序,并且必须对.out文件进行重新加载,因为此时.out文件已经改变了。

如果不重新加载,那么修改执行程序后,其结果将不会改变。

11.再观察结果时,可将ata和data1的窗口同时打开,这样可以便于比较,观察结果。

12.通过这次实验,对tm32f2812xdsp软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。

但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对自身的提高更多吧。

通过串口通讯实现TMS320F2812的软件更新

通过串口通讯实现TMS320F2812的软件更新

第31卷第4期 2008年4月合肥工业大学学报(自然科学版)J OU RNAL OF H EFEI UN IV ERSIT Y OF TECHNOLO GYVol.31No.4 Apr.2008 收稿日期:2007204212作者简介:陶维青(1964-),男,安徽霍山人,合肥工业大学副教授,硕士生导师.通过串口通讯实现TMS320F2812的软件更新陶维青, 任 谦(合肥工业大学电气与自动化工程学院,安徽合肥 230009)摘 要:馈线自动化终端单元是配网自动化的重要设备,基于32位DSP (TMS320F2812)开发的馈线自动化终端单元,由于其大多安装在野外,程序维护困难。

已安装的设备若出现程序缺陷,或者用户提出新的需求,需要对内部程序进行更新。

该文利用TMS320F2812的内部丰富资源和支持在线编程的特点,实现了片内Flash 擦写过程和上位机通讯程序。

文章详细分析了升级操作步骤。

远程更新功能已经通过实践运用,程序功能稳定可靠。

关键词:数字处理芯片;闪存;在线编程;馈线监控单元中图分类号:TP393104 文献标识码:A 文章编号:100325060(2008)0420569204Design and implementation of the remote updatingprogram for FTU based on TMS 320F 2812TAO Wei 2qing , REN Qian(School of Electric Engineering and Automation ,Hefei University of Technology ,Hefei 230009,China )Abstract :Feeder terminal unit s are important equip ment for Power Distribution Automation.The feeder terminal unit based on t he DSP chip TMS320F2812is commonly installed out side and t he main 2tenance of t he software is very difficult.If t he installed device has t he software bug or t he user de 2mands new f unctions ,it is necessary to up date t he software of t he device.In t his paper ,by taking ad 2vantage of t he internal abundant resources of TMS320F2812and it s In 2Application Program capabili 2ty ,t he erasure and writing of t he internal Flash is realized.The met hod of p rogramming for commu 2nication wit h t he PC is also provided.The remote up dating system has been applied to practical p ro 2ject s ,and t he up dating f unction is stable and reliable.K ey w ords :Ti DSP TMS320F2812;Flash ;In 2Application Programming (IA P );feeder terminal unit (F TU )0 引 言由于配网自动化设备大多安装在野外,给程序维护工作带来了极大的困难[1]。

TMS320F2812程序的远程升级方法

TMS320F2812程序的远程升级方法

TMS320F2812程序的远程升级方法TMS320F2812(简称F2812)是TI 公司推出的C2000 系列性能最高的一款芯片,也是目前DSP 领域最先进、功能最强大的32 位定点DSP 芯片。

它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,其片内自带了128 K 字的Flash,可以将程序直接写入片内运行,开发和使用都非常方便。

自推出以来,已被国内的各行业的开发工程师用于开发各种先进的监控产品。

各种监控产品在线运行时,难免会发现和需要处理各种意料不到的问题,有必要及时升级相应的程序。

F2812 的程序通常需要专用的烧写器和软件才能写入,但由于空间距离、时间、现场条件等多方面原因的限制,现场运行的设备很难在就地进行程序升级。

因此,本文探讨了如何利用设备现有的RS-232数据通信串口进行远程的程序升级方法。

1 设备硬件构成下面针对一台现场在线运行的F2812 监控设备进行远程程序升级。

该设备通过RS-232 串口和外挂的GPRS 模块与主站PC 机可进行点对点通信,其硬件通信平台的构成如图1 所示。

各硬件模块的主要功能:①主站PC 机,负责对远程F2812 监控系统发操作命令,收集实时数据等。

②GPRS 通信模块,通过RS-232 接口分别与主站PC 机和监控系统连接,实现串口到Internet,远程数据透明传输。

③F2812 监控系统负责执行上位机的命令,采集现场数据、存储并定时发送到上位PC 机。

F2812 监控电路板上外扩有128 K 字的RAM 存储,用于存储采集到的数据,以及进行程序升级时,存储上位机传送过来的升级程序数据,待数据传送完成后,以数据块的方式将升级程序写入Flash 内,对程序进行烧写固化。

程序的远程升级方法主要用上位PC 机,通过专用工具软件,将升级程序数据分割发送,下位监控系统收到程序数据后,先将数据放入内存指定的区域,待到全部。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

F2812烧写个人总结----增加程序
在仿真器中将程序调试好,将程序烧入flash之前,需要做以下工作:
一、硬件上确保DSP的XMP/MC管教接地,且SCIATXDA脚接高电平;
XMP/MC接地为低电平:表示微机算计模式,那么0x3F FFC0指向的是2812的片内FLASH的地址。

上电复位后,复位向量是指向片内Flash的0x3F FFC0。

2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时已经固化好了引导程序。

在0x3F FFC0处是一条跳转指令,跳到iniboot(地址0x3F FB50)函数处执行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 = 0
SCIATXDA脚接高电平:是为那选择2812以FLASH作为引导模式
我们在这里可以看到Flash启动模式,需要将GPIOF4,设置为高电平,其他三个引脚状态任意。

其配置如下:
二、向工程中添加F2812_EzDSP_FLASH_lnk.cmd文件,它是用于flash烧写的CMD文件,用于替换原有的用于RAM中调试的F2812_EzDSP_RAM_lnk.cmd文件。

三、添加DSP281x_Headers_nonBIOS.cmd文件,用于将DSP28头文件中的外设结构与存储器地址对应起来;
四、添加DSP281x_CodeStartBranch.asm文件,此文件负责上电后程序执行顺序跳转的;
五、main函数
六、编写定义Initflash()函数,并且添加语句#pragma CODE_SECTION(InitFlash, "ramfuncs"),改语句功能是将InitFlash函数写入RAM中,因为InitFlash经常被调用,这样省得每次都从flash中写入RAM。

如果还有经常反复调用的函数,也可自行添加类似语句,需注意#pragma CODE_SECTION (InitFlash, "ramfuncs") 应该写在函数Initflash()所在的C文件中,并且在函数之前声明;
七、在main函数中写以下语句,功能是从flash中将程序复制到RAM中,
memcpy(&ramfuncs_runstart,
&ramfuncs_loadstart,
&ramfuncs_loadend - &ramfuncs_loadstart);
注意ramfuncs_runstart、ramfuncs_loadstart、ramfuncs_loadend三个变量一定要和
F2812_EzDSP_RAM_lnk.cmd文件中ramfuncs处的三个变量完全一致,并且这三个变量要进行全局变量申明
八、main函数中,在memcpy之后,执行Initflash(),接着再写别的功能函数。

这些工作都做好了的话,至于在CCS中具体的烧写操作,就很简单了,有很多资料可以参考,注意别误操作把flash锁死就行。

呵呵,说完了,希望能对别人有用。

PS:我用的3.3,所以步骤1不用
2. 下载烧写FLASH配套CMD文件、LIB文件以及起始代码asm文件。

CMD文件名称:DSP281x_Headers_nonBIOS.cmd
CMD文件名称:F2812.cmd
LIB文件名称:rts2800_ml.lib
ASM文件名称:DSP281x_CodeStartBranch.asm
另外在RAM调试时用以下两个文件:
F2812_EzDSP_RAM_lnk.cmd
DSP281x_Headers_nonBIOS.cmd
PS:这些文件可在sprc097压缩文件里面找到
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 当中,当然,也可以放在其他系统初始化的地方。

Memcpy这个函数应该是rts2800_ml.lib库文件中自带的,不需要我们定义。

关于FLASH的初始化配置Initflash();
我把它放置在Memcpy函数之后。

关于ramfuncs,则在系统初始化中定义即可。

如:sysctrl.c中
#pragma CODE_SECTION(InitFlash, "ramfuncs");
另外,许多朋友没有注意需要定义自己其他子程序,导致最终运行的主程序还是在FLASH中,比如你需要运行的子程序ABC,则需要定义#pragma CODE_SECTION(ABC, "ramfuncs")。

相关文档
最新文档