F2812烧写个人总结增加程序
《F2812烧写个人总结增加程序》由会员分享,可在线阅读,更多相关《F2812烧写个人总结增加程序(9页珍藏版)》请在装配图网上搜索。
1、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出厂时固化在
2、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
3、bootloader mode. */codestart : BEGIN PAGE = 0SCIATXDA脚接高电平:是为那选择2812以FLASH作为引导模式我们在这里可以看到Flash启动模式,需要将GPIOF4,设置为高电平,其他三个引脚状态任意。其配置如下:二、向工程中添加F2812_EzDSP_FLASH_lnk.cmd文件,它是用于flash烧写的CMD文件,用于替换原有的用于RAM中调试的F2812_EzDSP_RAM_lnk.cmd文件。三、添加DSP281x_Headers_nonBIOS.cmd文件,用于将DSP28头文件中的外设结构及存储器地址对应起来;四、添加DSP28
4、1x_CodeStartBranch.asm文件,此文件负责上电后程序执行顺序跳转的;五、main函数六、编写定义Initflash()函数,并且添加语句#pragma CODE_SECTION(InitFlash, ramfuncs),改语句功能是将InitFlash函数写入RAM中,因为InitFlash经常被调用,这样省得每次都从flash中写入RAM。如果还有经常反复调用的函数,也可自行添加类似语句,需注意#pragma CODE_SECTION (InitFlash, ramfuncs) 应该写在函数Initflash()所在的C文件中,并且在函数之前声明;七、在main函数中写以下
5、语句,功能是从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中具
6、体的烧写操作,就很简单了,有很多资料可以参考,注意别误操作把flash锁死就行。呵呵,说完了,希望能对别人有用。PS:我用的3.3,所以步骤1不用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.cmdPS:这些文件可在sprc0
7、97压缩文件里面找到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(
8、);)之后即可: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)
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。