|
我在使用easyarm2200的片外flash运行时,看到分散加载文件是这样的:<br />ROM_LOAD 0x80000000<br />{<br /> ROM_EXEC 0x80000000<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br /><br /> IRAM 0x40000000<br /> {<br /> Startup.o (+RW,+ZI)<br /> }<br /><br /> STACKS 0x40004000 UNINIT<br /> {<br /> stack.o (+ZI)<br /> }<br /><br /> ERAM 0x80040000<br /> {<br /> * (+RW,+ZI)<br /> }<br /><br /> HEAP +0 UNINIT<br /> {<br /> heap.o (+ZI)<br /> }<br />}<br /><br /> ROM_EXEC 0x80000000<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br /><br />程序是直接在flash里面运行的吗?没有把RO段复制到ram里面?<br /><br /><br />在b _main的时候,_main函数应该会把加载地址的代码和<br />数据复制到执行地址中,并且对被链接器指定为需要初始化为0的段,进行清零操作。(2) 调用__rt_entry函数,进入用户程序。所以b _main应该不是直接跳到进入用户程序的main()的吧,还要把RW搬到ram里面??<br /><br />是这样的吗?谢谢! |
|