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