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(地址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
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&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”)