linux内核 - I/O 端口和I/O内存

        在计算机中,最常见的外设是主存(main memory),通常会将主存理解为 RAM。也就是说,RAM 只是众多外设中的一种,它的内存范围对应其容量。

        RAM 的独特之处在于,它完全由 内核管理,对用户来说是透明的。RAM 控制器连接到 CPU 的数据总线、控制总线和地址总线,这些总线同时也被其他设备共享。

        这些共享总线的设备被称为 内存映射设备(memory-mapped devices),与它们的通信(输入/输出操作)称为 内存映射 I/O(memory-mapped I/O)。

        这些设备包括:由 CPU 提供的各种总线控制器(如 USB、UART、SPI、I2C、PCI 和 SATA);以及一些 IP,如 VPU、GPU、图像处理单元(IPU)、安全非易失性存储设备。

       在 32 位系统中,CPU 可以访问多达 2的32次方 个内存地址(从 0 到 0xFFFFFFFF)。但问题是,并非所有地址都对应 RAM。其中一些地址被保留用于访问外设,这部分称为 I/O 内存。

       这些 I/O 内存被划分为不同大小的地址范围,并分配给各个外设。这样,当内核请求 CPU 访问某个物理地址时,CPU 就能将请求路由到 该地址范围所对应的设备。每个设备(包括 RAM 控制器)分配的地址范围通常会在 SoC 数据手册中描述,通常在一个名为 memory map 的章节中。

        由于内核 仅通过虚拟地址(通过页表)进行操作,要访问某个外设的特定地址,必须先将该地址映射到虚拟地址空间(如果系统中存在 IOMMU——I/O 设备的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑不溜秋的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值