1.第一段.lds
SECTIONS{
first 0x00000000 : { head.o init.o nand.o}
second 0x30000000 : AT(2048) { main.o delay.o }
}
返回时间过长的原因:
Main代码放在2048, 运行在0x30000000(即SDRAM)
中断代码放在0x00000000(即SRAM),运行也在SRAM,返回中断,需要在两个不同的硬件之间切换(SRAM和SDRAM),所以中断返回很慢。
2.改成如下形式可以很快中断返回:
SECTIONS{
first 0x30000000 : AT(0x00) { head.o nand.o init.o delay.o main.o }
}
即代码全部都在0x300000000运行,不要两个不同的地方切换(中断代码放在init.o)