gpt4 book ai didi

embedded - 通过将端口的偏移量添加到基地址来访问端口组合。这将如何运作?

转载 作者:行者123 更新时间:2023-12-02 17:59:21 25 4
gpt4 key购买 nike

上下文:我正在学习嵌入式系统类(class) https://www.edx.org/course/embedded-systems-shape-the-world-microcontroller-i

在有关位特定寻址的讲座中,他们展示了以下有关“花生酱和果冻端口”的示例。

Given you a port PB which has a base address of 0x40005000 and you wanted to access both port 4 and port 6 from PB which would be PB6 and PB4 respectively. One could add the offset of port 4(0x40) and port 6(0x100) to the base address(0x40005000) and define that as their new address 0x40005140.

这就是我困惑的地方。如果我想定义 PB6 的地址,它将是基址(0x40005000)+ 偏移量(0x100)= 0x40005100,PB4 的地址将是基址(0x40005000)+ 偏移量(0x40)= 0x40005040。那么,要访问它们,我可以使用 base(0x40005000) + offset(0x40) + offset(0x100) = 0x40005140 吗?对于它们各自来说,这不是一个完全不同的内存位置吗?

还有为什么位 0 表示为 0x004。在二进制中,这将是 0000 0100。我想如果你忽略前两个二进制位,它会代表位 0,但为什么我们要忽略它们呢?

关于位特定寻址的讲义: enter image description here

最佳答案

您对内存映射寄存器如何寻址的解释对于基于 ARM 的微 Controller 上的任何普通外设来说都是相当合理的。

但是,如果您阅读 TM4C123GH6PM datasheet 第 662 页上的 GPIODATA 寄存器定义然后你会发现这个“寄存器”的行为非常不同。

它们将一大块地址空间(1024 字节)映射到单个 32 位寄存器。这意味着不需要地址总线的位[9:2],并且实际上数据已过载。它们包含要更新的位的掩码。这就是您复制的“偏移”计算试图描述的内容。

我个人认为这个硬件接口(interface)可能是一种非常聪明的方法,可以让您使用单个原子写入仅设置存储体中的部分输出,但这使得它成为用于教学的设备的非常糟糕的选择,因为这这不是事情通常的运作方式。

关于embedded - 通过将端口的偏移量添加到基地址来访问端口组合。这将如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74828462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com