查过资料后,大概理解了scatter文件,以及执行域,加载域的知识。但又出现了一个问题:<br /><br />在scatter文件中,有<br /><br /><br />ROM_LOAD 0x7F000000<br />{<br /> ROM +0<br /> {<br /> init.o (Init, +First) <br /> ......<br /> <br /> }<br /> RAM 0x0<br /> {<br /> vectors.o(Vect, +First)<br /> ......<br /> }<br /><br />}<br /><br />另外,在init.s中需要完成flash和sdram的remap,remap后flash地址为0x7F000000,而sdram是0x0.在<br /><br />remap之前,flash是0x0.<br />问题就来了,linker生成一个.bin的文件,这个文件的加载域从0x7F000000开始,而这个地址在开始运行<br /><br />init.s之前又不是flash的地址.这中间似乎有一个是先有**还是先有蛋的问题!<br /><br />即:在开始运行init.s后地址0x7F000000才有效,而在这之前,又需要这个地址来定位init.s生成的init.o<br /><br />我应该是哪里没有理解清楚,多谢各位dx指点. |
|