我一直在关注剑桥大学的"BakePI"课程,但在确定设备的正确内存地址时我发现了一些问题.
例如:在他们的过程中,他们声称系统定时器位于0x20003000位置,但在BCM2835 ARM外设数据表中,定时器据说可在位置0x7e003000上获得.
所有其他外设(GPIO控制器等)都是一样的.
现在,为什么差异以及如何将地址从数据表"转换"为可用地址?
非常感谢你!
这是因为CPU悬空在GPU侧面而不是负责任务 - ARM内存映射与GPU的总线布局不同.
从数据表的1.2.3-1.2.4节:
外设的物理地址范围为0x20000000到0x20FFFFFF.外设的总线地址设置为映射到从0x7E000000开始的外设总线地址范围.因此,在总线地址0x7Ennnnnn处公布的外设在物理地址0x20nnnnnn处可用.
[...]
本文档中指定的外设地址是总线地址.