【发布时间】:2021-12-29 18:50:04
【问题描述】:
我将以TM4C123 Arm 微控制器/板为例。
它的大部分 I/O 寄存器都是内存映射的,因此您可以使用以下方法获取/设置它们的值 常规内存加载/存储指令。
我的问题是,总线上某处的 cpu 之外是否有某种类型的寄存器映射到内存,并且您使用内存区域读取/写入它,该内存区域基本上在寄存器和内存上具有重复值,或者内存是寄存器本身吗?
【问题讨论】:
-
有 CPU,并且有外围模块(又名 IP 模块/IP 内核)通过“内存”总线(例如 AXI 总线,或任何特定 CPU 所具有的)连接到该 CPU。读/写这些 IP 块是硬件连接的地址是与这些块交互的一种方式。从 CPU 的角度来看,这些 IP 块是“内存映射”的。 CPU 没有“单独的寄存器”来访问它们。 IP 块具有“接口寄存器”,CPU 可以通过读取/写入内存值来读取/写入。但是“CPU 寄存器”和“IP 块寄存器”是完全不同的东西。
-
所以我的问题是,
IP blocks registers实际上只是内存地址空间的一部分,还是它们是 cpu 之外的实际寄存器,它们使用内存作为桥接器进行通信? -
两者或都不取决于您的定义... IP 块是内存地址空间的一部分,IP 块寄存器是从 IP 块的角度来看的实际寄存器(从 CPU 方面来看,它们只是内存中的另一个词)。例如 'CPU registers' != 'IP block registers' 虽然两者都有 'registers' 的名称。
-
是的,我只是想确认在 cpu 之外存在一个实际的寄存器,即
i/o registers不仅仅是对一块内存进行裁判,没有其他任何内容。跨度>
标签: arm cpu-registers memory-mapping