gpt4 book ai didi

u-boot - armv7 u-boot使用MMU吗?

转载 作者:行者123 更新时间:2023-12-02 04:28:29 28 4
gpt4 key购买 nike

我们使用 Beaglebone 黑色定制板。我编辑了一个链接器脚本文件以添加内存部分以在其中记录一些信息:

. = ALIGN(4);
.logging :
{
_log_begin = .;
_log_end = . + 0x2000;
}

我在C文件中定义数组如下:

char log_arr[0x2000] __attribute__ ((section(".logging")));

现在,如果我打印 log_arr 地址,它会输出 0x8ffa2774,但是当我检查 u-boot.map 文件时,我会看到log_arr 位于地址 0x8084b774

u-boot 使用 MMU 吗?据我所知,它在汇编编写的启动代码中被关闭。当我尝试在代码中使用 _log_begin 并将其定义为 extern 时,u-boot 代码编译中断并抛出错误:

make1: * [checkarmreloc] Error 1

当我搜索此错误时,我得到一些 patch其中表示“确保 u-boot 仅使用相对重定位”。这是什么意思?

最佳答案

Is u-boot using MMU?

没有。
来自U-Boot 2014-07的README文件:

U-Boot runs in system state and uses physical addresses, i.e. the
MMU is not used either for address mapping nor for memory protection.

链接器映射中的地址值与运行时值相比的差异可能是由于 U-Boot 重新定位自身(在内存中更高,更接近顶部)。
再次来自 U-Boot 2014-07 的 README 文件:

After booting and sizing and initializing DRAM, the code relocates itself
to the upper end of DRAM.

... which says "ensure u-boot only uses relative relocations". What does this mean?

您的代码可以尝试使用绝对(不可重定位)内存位置,或者允许 C 分配和重定位数组(即删除节说明符)。

关于u-boot - armv7 u-boot使用MMU吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152073/

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