我在
fpga
设计过程中多次听到这些术语,据我所知,我从Google搜索中收集到的信息,就像一些数据将从核心传输到内存。
假设一个系统,其中第一个块是 zynq ps(cortex a-9 处理器核心),第二个块是 axi GPIO,它通过一些中间接口(AXI Intercoonect)连接,因此处理器将
axi gpio
视为内存。这是我通过一些渠道了解到的,但我想实际感受它并消化它,所以我需要正确的解释。
当我们知道它是在寄存器和接口的上下文中进行内存映射时。一般来说,寄存器总是内存,所以我们说它是内存映射的Reister,在处理器的上下文中,我们如何知道它是内存映射的接口?
内存映射接口是一种可以被CPU“访问”的接口,就好像它是内存一样。特别是相同的指令(通常还有地址空间)可用于访问外设。 内存的行为使得写入某个地址的值可以从那里再次读回而不改变。 然而,内存映射外设不一定“表现”为内存。相反,它可以具有诸如
之类的行为仅写入地址,例如在设置某个位时发出命令。读回的值可能始终为 0。
只读地址,将数据传送给CPU。例如状态寄存器。每次读取时它们可能有不同的值一个缺点可能是CPU或软件不知道它,可能会引入错误。例如,编译器可以优化对内存映射寄存器的写访问,假设它从未被读取过。或者,如果 MMU 配置不正确,推测性缓存可能会在外设中触发副作用。