我用的是TMS320F2812,程序在Emulator下仿真都正常,但下载到FLASH后其他功能都能跑起来(IO口,片内AD采集等,但比较慢),但外部中断子程序却不可以。 具体状况是: 当有外部中断信号后程序在FLASH中跑飞。
后来,我按照http://focus.ti.com/general/docs/techdocsabstract.tsp?abstractName=spraau8 给出的方法,把全部FLASH中代码搬移到RAM中。在CCS下Load Symbol后,程序的入口_c_int00地址确实在RAM区(如果不执行FLASH-->RAM搬移的话,程序的入口地址在FLASH区,我已经观察到)。 但是现在程序RUN后就跑飞,通过CCS观察,地址跑到非法区域,对应的指令为ITRAP0。 如果不执行搬移操作,除外部中断外,其他功能都能执行(除了比较慢) ,但经搬移后,所有功能都不能正常执行了。我在FLASH空间内查看,程序确实被烧写进去了。
后来,我又采用了另外一种方法,就是把中断子函数memcopy到RAM中执行,而不是把全部代码copy。但还是一样的状况。
请问大家有没有碰到这样的问题? 对于外部中断,烧写到FLASH后不能正常执行的原因是什么? 不胜感激!
|