gpt4 book ai didi

arm - ARM(特别是移动)外设寻址和总线架构的解释?

转载 作者:行者123 更新时间:2023-12-03 15:25:28 25 4
gpt4 key购买 nike

我首先要说我不是该领域的专家,我的问题可能包含误解,在这种情况下,如果您纠正我并附上资源,我会很高兴,以便我可以了解更多细节。

我试图弄清楚系统总线的方式以及移动设备中出现的各种设备(如传感器芯片、wifi/BT SoC、触摸面板等)如何由 CPU(以及其他MCU)。

在 PC 世界中,我们有将命令/数据路由到设备的总线仲裁器,而且,afaik,地址是硬连线在板上(如果我错了,请纠正我)。但是,在移动世界中,我没有找到任何此类寻址的证据。我确实发现 ARM 已经标准化了 Advanced Microcontroller Bus Architecture ,但我不知道该标准是否适用于位于同一 SoC(即 Exynos、OMAP、Snapdragon 等)内的组件(cpu-cores),或者也影响外围接口(interface)。具体来说,我问的是哪个组件负责为外围设备和 MMIO 地址分配地址?

一个更基本的问题是移动设备架构中是否存在总线管理,或者是否存在某种“星形”拓扑(CPU 为中心)。

来自 this question我的印象是这些设备被视为平台设备,即直接连接到 CPU 的设备,而不是通过总线。不过,我的问题是操作系统如何知道如何解决它们?然后是其他线程,thisthis关于平台设备/驱动程序让我感到困惑..

最佳答案

ARM 和 x86 之间的区别在于 PIO。 ARM 上没有访问 I/O 设备的特殊指令。一切都是通过内存映射 I/O 完成的。

第二个区别是 ARM(和一般的 RISC)有一个独立的加载/存储单元,它与普通逻辑是分开的。

第三个区别是 ARM 许可 architecture和逻辑核心。第一个被 Apple、Samsung 等公司使用,它们制造了无尘室版本的内核。对于实际购买逻辑的第二组,ARM CPU 将包含来自 AMBA 的内容。家庭。

ARM 的其他外设,例如 GIC(Cortex-A 中断 Controller )、NVIC(Cortex-M 中断 Controller )、L2 Controller 、UART 等,都将带有 AMBA 类型的接口(interface)。第 3 方公司(ChipIdea USB 等)也可以为特定 ARM 总线设置逻辑。

注意 Wikipedia 上的 AMBA 记录了几种总线类型。

  • 建业银行 - 低速外围总线;有点像南桥。
  • AHB - 几个版本(旧的北桥)。
  • AXI - 更新的多 CPU(主)高速总线。示例 NIC301 .
  • 王牌 - AXI 扩展。

  • 单个 CPU/内核可能有一个、两个或多个主连接到 AXI 总线。可能有多个内核连接到 AXI 总线。内核的加载/存储和指令获取单元可以使用多个端口将请求分派(dispatch)到单独的从属设备。 SOC 供应商将平衡端口数量与预期的内存带宽需求。 GPU 也经常与 DDR 从设备一起连接到 AXI BUS。

    确实没有 100% 标准的拓扑;特别是如果您考虑所有可能的 future ARM 设计。然而,典型的拓扑将包括一个顶级 AXI 与一些 AHB 外围设备。一级或多级二级 建业银行 (总线)将提供对低速外围设备的访问。并非每个 SOC 供应商都愿意花时间重新设计外设,而较旧的 AHB 接口(interface)速度对于设备来说可能相当不错。

    你的问题被标记为 Embedded-linux。在大多数情况下,Linux 只需要知道物理地址。有时,外围总线 Controller 可能需要配置。例如,可以将 APB 配置为允许或禁止用户模式。此配置可以在引导时锁定。一般来说,Linux 不会直接过多关心总线结构。程序员可能已经编写了具有结构知识的驱动程序(例如 IRAM 更快等)。

    Still, my question is how does the OS knows how to address them?



    较旧的 Linux 内核将这些定义放在一个机器文件中,并传递一个平台资源结构,包括中断号和寄存器组的物理地址。在较新的 Linux 版本中,此信息包含在 Open Firmware 或设备树文件中。

    Specifically I'm asking what component is responsible on allocating addresses to peripheral devices and MMIO addresses?



    物理地址由 SOC 制造商设置。 Linux 平台支持将使用 MMU 将它们映射为不可缓存到某些未使用的范围。通常物理地址可能非常稀疏,因此虚拟重映射包更密集。每一个都会导致 TLB 命中(MMU 缓存)。

    这是一个使用 AXI 并连接了 Cortex-M 和 Cortex-A 的示例 SOC 总线结构。

    Vybrid BUS from AN4947 - Understanding the Vybrid Architecure

    PBRIDGE 组件是 APB 网桥,并以星形拓扑连接。正如其他人所建议的那样,您需要查看特定的 SOC 文档以了解详细信息。但是,如果您没有 SOC 并试图大致了解 ARM,那么上面的一些信息将对您有所帮助,无论您拥有什么 SOC。

    关于arm - ARM(特别是移动)外设寻址和总线架构的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068525/

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