This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我看了网上写的关于28335和2812 flash搬移到RAM里运行的方法以后,对照TI的说明,在项目中加入对应的文件,进行了试验,现在发现有下面这个问题。
这两个waring,您可以不理睬。因为可能您在程序中,没有用到这两个section,或者没有定义
_const_loadstart 和 switch_loadstart
>> warning: load address of uninitialized section .const ignored
>> warning: load address of uninitialized section .switch ignored
具体为什么没有进中断,还是需要您逐步调试,看看是否进入了什么非法中断,程序停在什么位置了。
具体是哪条语句导致进入了非法中断。
还是需要您单步调试。
另外,这个例子是将所有Section都copy到Ram中执行,其实真正的程序没有必要。
只需要对相应的重要的代码,也就是.text段copy到RAM中已经足够,而且可以只copy一段程序,也没有必要将整个text段copy,除非楼主的RAM实在太大了,不用浪费了,可以考虑。
还有,此方法的copy是在程序启动前copy的,并不是用memcopy整个语句执行的,楼主也可以考虑尝试一下此语句,具体例子可以参考FlashInit()函数的copy.
您好,我的程序里面用到了switch语句,而且_const_loadstart 和 switch_loadstart两个都有定义如下:
.global _const_loadstart, _const_runstart, _const_size
.global _switch_loadstart, _switch_runstart, _switch_size
然后在asm文件里面写了如
copy_sections:
MOVL XAR5,#_const_size ; Store Section Size in XAR5
MOVL ACC,@XAR5 ; Move Section Size to ACC
MOVL XAR6,#_const_loadstart ; Store Load Starting Address in XAR6
MOVL XAR7,#_const_runstart ; Store Run Address in XAR7
LCR copy ; Branch to Copy
另外,我不清楚要怎么样在烧入DSP后,怎么样进行单步调试
我的程序里面有很多部分对时间比较敏感,如果只是拷贝一部分出来,发现程序调用的那一部分还是没有拷贝到RAM中,而是在FLASH中运行,会导致中断服务程序跑不完。例如这样的程序:
A()
{
B();
C();
D();
……
}
我用#pragma和memcopy配合,把A()拷贝到RAM里面,但是B(),C()的程序并未拷贝进去,同时我发现,即使我把A(),B(),C()……用memcopy全部拷贝到RAM,运行速度也会比仿真的时候慢。因此,我只能把整个.text拷贝到RAM中执行,这样程序运行速度和仿真没什么区别。
我的程序里面有很多部分对时间比较敏感,如果只是拷贝一部分出来,发现程序调用的那一部分还是没有拷贝到RAM中,而是在FLASH中运行,会导致中断服务程序跑不完。例如这样的程序:
A()
{
B();
C();
D();
……
}
我用#pragma和memcopy配合,把A()拷贝到RAM里面,但是B(),C()的程序并未拷贝进去,同时我发现,即使我把A(),B(),C()……用memcopy全部拷贝到RAM,运行速度也会比仿真的时候慢。因此,我只能把整个.text拷贝到RAM中执行,这样程序运行速度和仿真没什么区别。