在PC 架构上(BIOS 的存在和使用非常标准化),您可以通过使用INT15 BIOS 中断函数来发现 RAM 内存的大小,以及它的保留/免费使用区域,函数0xE820。
由于我对低级编程充满热情,并且在对英特尔架构进行了大约 6 个月的编程后,我决定尝试了解其他架构的工作原理。所以我开始深入研究 ARM 开发。我目前正在开发 2 块板:Olimex A20 OlinuXino-MICRO和Samsung Arndale 的 Exynos 5250。我要做的是将我为英特尔架构开发的管理程序移植到这两个板上。我现在正处于尝试以可靠且可接受的标准化方式以编程方式检测系统的内存映射的阶段方式(我不希望为不同的 ARM 板编写完全不同的代码)。但到目前为止,我发现相关文档有点混乱。
在 Olimex A20 上,我有一个 Cortex-A7 ARM CPU。在此处找到的 PDF:http: //infocenter.arm.com/help/topic/com.arm.doc.den0001c/DEN0001C_principles_of_arm_memory_maps.pdf适用于 Cortex-A7 和其他 CPU,在第 14 页指出内存寻址空间从 1GB 到 2GB是为内存映射 I/O 设备保留的,而在此链接中找到的 Olimex-A20 文档https://github.com/OLIMEX/OLINUXINO/blob/master/HARDWARE/A20-PDFs/A20 %20User%20Manual%202013-03-22.pdf?raw=true在第 21 页指出从 1GB 到 3GB 的内存寻址空间是DDR-II/DDR-III 内存。
我只是感到困惑还是这两个文件之间存在不一致?