各位高人,我又来讨教了,在周工的功能器件编程实例中,VICVet_c中,使用了mem_b的加载文件,如下: 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) } }
这里面,把堆的顶端分配到了ERAM 0x80040000,将栈的底STACKS 0x40004000处,而在周工所给的历程中,使用的是单区域模式,也即使说没有声明 #pragma import(__use_two_region_memory),这样便是堆和栈同时使用一块连续的内存地址,在使用的时候,堆向上增长,栈向下增长,于是问题产生了,在分散加载函数中,堆和栈的bottom地址被分配到了两个不同的存储器中,当然地址也就不连续,请问这样可以吗 |