BCM2835 数据表寻址系统

BCM2835 datasheet addressing system

我对为我的旧 Raspberry Pi 编写内核很感兴趣,并设法使我在著名的“烘焙 Pi”大学课程中找到的一些 ARM 汇编代码工作。剑桥。因为我知道一些 ARM 程序集,所以我想更深入地研究数据表,但发现“它包含几个错误”(尽管我也发现了勘误表更正页),而且我在理解以下内容时遇到了一些麻烦:

第一节课说“手册使用不同的寻址系统。列为 0x7E200000 的地址将是 0x20200000”,这就是 GPIO 接口的地址。

我不明白的是:这两个地址之间有对应关系吗?我可以使用某种转换来读取数据表吗?

谢谢:)

P.S。我试着 post 这个到 raspberry pi 网站,但据我所知它不是很活跃..

数据表似乎是从 GPU 的寻址视图编写的,这与 ARM 的视图不同。 (文档中显示的排序)。具有 ARM11 内核的较旧的 pi 芯片在 ARM 地址 space 中外围设备的基地址是 0x20000000 你忽略 0x7E 部分并在你的头脑中“翻译”到 0x20。对于 pi 上使用的较新芯片,ARM 内核已被换出,并且可能为 ram 提供更多线性 space 外围设备的 ARM 基地址类似于 0x3F000000,因此当您看到一些 0x7Exxxxxx 地址时,您使用 0x3Fxxxxxx 地址。

虽然它可能不活跃,但 raspberry pi 裸机论坛上挤满了对这些 chips/boards 有非常详细知识的人,以及指向许多好例子的链接(比通过远射)。该论坛是资源远远优于 Whosebug 的案例之一。同时,这个问题已被问过无数次,因此可能无法保证答案,在固定到论坛页面的教程和示例中已涵盖。

由于可用性、价格,尤其是那个论坛,这是学习裸机并可能涉足编写 OS 的一个非常好的平台。 pi-zeros 仍然可用并使用 ARM11,是此类工作的最佳起点。一旦你弄湿了,就转向更复杂的核心。