各位专家老师,我最近在实用5416dsk,发现在调试模式下可以在cmd文件里把一些段开到8000h以后的空间里,但是如果烧到flash里面,只有把所有段都开在0到8000h这一空间中才能实现项目的正常功能,如果占用了8000h之后的空间,发现工程不能正常执行,我想问一下烧到flash里的程序怎样使用8000h之外的空间。恳请各位老师予以指导
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.
您好,非常感谢您的回答,我想再问您一下,page1说的是010000到01ffff这段空间吗,这段空间手册上说的是On-Chip DARAM0–3 (OVLY=1) External (OVLY=0),On-Chip DARAM4–7 (MP/MC=0) External (MP/MC=1),是不是说这个空间在使用时也需要改变寄存器的值,如果需要改变该如何设置,还是说可以直接使用,效果和page0是一样的?还有就是问您下烧写到flash里的hex文件大小是不是有要求,大于某一值的话是不是需要加一个二次boot?恳请您予以指导。
谢谢您的回答,我今天试了一下把bss段开到0x18000到0x1ffff这段空间,发现调试模式下一切正常,但是烧写后程序还是不能正常执行。如果所有段都开到0x8000之前的空间,程序执行正常。您觉得是哪里出了问题?
如果需要二次bootloader有没有参考文献?
-stack 1000
MEMORY {
PAGE 0:
PROG_RAM (RWX) : origin = 0x0080, length = 0x7F00
PAGE 1:
DAT_RAM(RWX) : origin = 0x18000, length = 0x8000
}
SECTIONS {
.text > PROG_RAM PAGE 0
.switch > PROG_RAM PAGE 0
.cinit > PROG_RAM PAGE 0
.vectors > VECTORS PAGE 0
.cio > PROG_RAM PAGE 0
.data > PROG_RAM PAGE 0
.bss > DAT_RAM PAGE 1
.const > PROG_RAM PAGE 0
.sysmem > PROG_RAM PAGE 0
.stack > PROG_RAM PAGE 0
.csldata > PROG_RAM PAGE 0
dmaMem : align(1024) { } > DAT_RAM PAGE 1
}
这是我的cmd文件,希望老师能够给予指导,麻烦您了!