TMS320F28335学习笔记-启动过程
1.DSP reset后运行的起始地址是多少? 0x3FFFC0 2.仿真器烧写程序的步骤是? 根据cmd文件把程序烧到指定位置,然后执行。 3.DSP的Flash启动过程是什么? 首先硬件配置GPIO84~87上拉为1,即处于Flash启动过程。当DSP复位后,会从复位向量0x3FFFC0处取得复位向量,并跳转到InitBoot处开始执行,InitBoot会读GPIO84~87的值发现全为1判断为Flash启动方式。然后会跳到0x33FFF6处执行。在CCS5.2工程的cmd文件中有如下代码: MEMORY ... SECTIONS codestart ? ? ? ? ? : > BEGIN ? ? ? PAGE = 0 ...} 即表示把codestart段放到0x33FFF6位置处,文件“DSP2833x_CodeStartBranch.asm”中有codestart段的定义,实际上codestart段只是包含了一个跳转指令,是程序跳转到_c_int00处,_c_int00在boot.asm in RTS library中有定义,_c_int00的代码最终会调用c的main函数,之后就是main函数的执行。 4.F28335如何烧写代码到flash中并运行? 首先使用添加C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_commoncmdF28335.cmd。此文件即为配置代码到flash中的TI官方配置文件。 然后参考C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_examples_ccsv4flash_f28335。添加以下代码: MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);将一些在内存中运行的代码从flash复制到内存中,然后程序才能正常运行。 5.写好的代码再ram中能正常运行但是烧写到flash中后,函数DSP28x_usDelay()不能正常运行为什么? 因为在DSP2833x_usDelay.asm中有.sect "ramfuncs",即把该函数定义在段"ramfuncs"中, 而此段需要在内存中运行,故需要使用函数 MemCopy(&RamfuncsLoadStart,&RamfuncsRunStart);将ramfuncs段复制到内存中然后运行。只算以这样设计是因为函数DSP28x_usDelay()精准运行对运行速度有要求故必须放在段"ramfuncs"中。参考:http://blog.sina.com.cn/s/blog_9388c4140100vs0r.html 6.cmd中以下代码如何解释? ? ?ramfuncs ? : LOAD = FLASHD,? 第1行表示该段的装载在PAGA0的FLASHD中 7.如何将一个函数放到ram中运行? 参考TI公司头文件中自带InitFlash函数,这些函数会以CODE_SECTION申明。如:#pragma CODE_SECTION(InitFlash,"ramfuncs"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |