- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FLASHH到RAM的程序说明
ramfuncs: LOAD=FLASHD, PAGE=0? ?? ?? ?? ? RUN=RAML0,PAGE=0? ?? ? LOAD_START(_RamfuncsLoadStart),? ?? ?? ?? ? LOAD_END(_RamfuncsLoadEnd),? ?? ?? ?? ? RUN_START(_RamfuncsRunStart)初始化FLASH时,会有这么一段CMD链接代码,其中,RamfuncsLoadStart、RamfuncsLoadEnd、RamfuncsRunStart应该是定义成extern 全局变量,但它们的赋值语句在哪啊!?或者说它们到底是多少?请高手们不吝赐教!!?这个就是定义和赋值语句,extern只是个外部声明。真正的拷贝是用拷贝函数进行的? ? ? ??MemCopy(RamfuncsLoadStart, RamfuncsLoadEnd, RamfuncsRunStart);可以去查看CCS的帮助文档LOAD_START(sym)??? ? ? ? Define sym with load-time start address of related allocation unit.?ramfuncs: 是一个段名,LOAD=FLASH, PAGE=0/*这句的意思是说,我在PAGE=0的FLASH中分出一段,名字叫ramfuncs。我想用这个段来保存一些东西(在这里用来保存程序)。RUN=RAML0,PAGE=0/*这句的意思是说,当运行放在ramfuncs中的程序时,我想把这些程序搬到PAGE=0中的RAML0中再运行(因为在FLASH运行有点慢),LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart)/*搬运的工作是由MemCopy完成,可是要告诉MemCopy,从哪里开始搬呢!想一想,应该是从FLASH的起始地址开始搬(也就是_RamfuncsLoadStart等于FLASH的起始地址),要搬多少呢?当然是根据放在ramfuncs中的程序的长度,(也就是_RamfuncsLoadEnd等于_RamfuncsLoadStart+程序的长度,你放在ramfuncs中的东西越多,_RamfuncsLoadEnd越大,)。要搬到什么地方呢?当然是RAML0的起始地址,(也就是_RamfuncsRunStart=RAML0的起始地址),_RamfuncsLoadStart,_RamfuncsLoadEnd,_RamfuncsRunStart,是由编译器生成的,在CSS自带的例子,有一个叫FLASH的例子,可以用软件仿真一下,看看上面三个的值!以上纯属个人理解,仅供参考?赵利国对于? ?? ?ramfuncs: LOAD=FLASHD, PAGE=0?? ?? ?? ?? ? RUN=RAML0,PAGE=0?? ?? ? ????LOAD_START(_RamfuncsLoadStart),?? ?? ?? ?? ? LOAD_END(_RamfuncsLoadEnd),?? ?? ?? ?? ? RUN_START(_RamfuncsRunStart)的认识。?首先、LOAD=FLASH是指,把ramfuncs这个段装载到FLASHD这个位置(即allocation).其次、RUN=RAML0,PAGE=0表示ramfuncs这个段将在RAML0这个位置(即allocation)运行.LOAD_START(_RamfuncsLoadStart)首先表示定义了RamfuncsLoadStart这个变量,其次LOAD_START又将装载(LOAD)ramfuncs这个段的区域(即FLASHD的一个区域)的开始(START)地址赋给了RamfuncsLoadStart;LOAD_END则将装载(LOAD)ramfuncs这个段的区域的结束地址赋给了RamfuncsLoadEnd。而RUN_START,将ramfuncs这个段运行空间(即RAML0的一个区域)的首地址赋给了RamfuncsRunStart。从而才有了后面的.在这里LOAD_START就决定要从FLASH 复制到RAM程序的源首地址,而RUN_START决定了要复制到RAM中的运行的?目的首地址。从MemCopy()函数开始从FLASH装载区首地址将程序依次复制到运行区相应地址。?#pragma CODE_SECTION(epwm1_timer_isr, ramfuncs);#pragma CODE_SECTION(epwm2_timer_isr, ramfuncs);#pragma CODE_SECTION
文档评论(0)