gpt4 book ai didi

c - RAM_HIGH_ADRS 在 VxWorks BSP 中的真正含义是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:16 24 4
gpt4 key购买 nike

RAM_HIGH_ADRS 是在 config.h 和 makefile 中定义的参数。据我了解,它定义了程序的数据+文本+bss段将写入RAM的地址。

这意味着,例如,如果 cpu 有 64 Mb 的 RAM,并且 RAM_HIGH_ADRS 等于 0x00A00000(10 Mb),则整个程序在存储 text+data+bss+heap+ 方面有 54Mb 可以使用堆栈。

我对此提出质疑的原因是我正在做一个项目,在该项目中我大幅扩展了数据段,导致 cpu 无法启动。然后,我增加了 RAM_HIGH_ADRS,此时允许 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_ADRS 和 RAM_HIGH_ADRS 之间有足够的空间可以容纳 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com