RAM_HIGH_ADRS是config.h和makefile中定义的参数。据我所知,它定义了程序的数据+文本+bss段将写入RAM的地址。
这意味着,例如,如果cpu有64MB的RAM,并且RAM高ADRS等于0x00A00000(10MB),那么整个程序在存储文本+数据+bss+堆+堆栈方面有54MB的空间。
我之所以质疑这一点,是因为我正在做一个项目,在这个项目中,我将数据段大幅度扩展,导致cpu无法启动。然后我增加了RAM_HIGH_adr,这使得cpu可以启动。这让我很困惑,因为据我所知,在RAM-LOW-ADRS和RAM-HIGH-ADRS之间写的唯一东西是VxWorks图像,所以增加RAM-HIGH-ADRS只会降低数据段的可用大小。
最佳答案
如果您使用Vxworks bootrom来引导板,那么下面是它的工作原理。
Bootrom被放置在RAM_HIGH_ADRS。然后,Bootrom从网络(或任何其他基于从获取VxWorks内核映像的位置)加载VxWorks内核映像,并从RAM_LOW_ADRS开始将其放在RAM中。
首先放置.text段,然后紧接着放置.rodata、.data和.bss。因此,在RAM_LOW_adr和RAM_HIGH_adr之间有足够的空间来容纳.text+.rodata+.data+.bss。
如果空间不够,用户将看到您看到的症状。在这种情况下,将RAM_HIGH_ADRS设置为更高的值,以便.text+.rodata\.data+.bss可以在RAM_LOW_ADRS和RAM_HIGH_ADRS之间进行匹配。
关于c - RAM_HIGH_ADRS在VxWorks BSP中实际上意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34612252/