原文地址:https://blog.csdn.net/u014379540/article/details/52502470

1 虚拟地址

虚拟地址做为程序员应该听说的最多,不管是在linux还是windows下编程,程序所操作地址都是虚拟地址。

虚拟地址是硬件MMU与软件内存管理结合的产物,方便更高效率的使用RAM。内存管理是篇大文章,这里就不聊细节了,具体可以看UTLK的内存寻址一章。

逻辑地址 虚拟地址作为软件开发人员在基于系统编程以及裸编下都会操作到。

2 物理地址

对于嵌入式开发,物理地址是必须明白的,物理地址是指处理器芯片发出,来进行地址空间寻址的地址,它与处理器地址引脚上发出的电信号相对应。

UTLK上说用于内存芯片级的单元寻址,真实的开发环境中不止这些,因为处理器外部除了RAM还需要别的外设,如nand, spi,serial(当然是指的这些外设的controller)等。

物理地址是处理器真实发送到其地址总线上的地址,而该地址应该访问到谁(ram controller?nand controller?),这个需要看该设备系统总线的仲裁,也就是总线仲裁,现在常用的总线仲裁有AXI AHBA等。

这些总线仲裁器来规划处理器的物理地址空间。

大部分处理器手册会给出其address map,也就是外设控制器(寄存器)在该处理器地址空间上的分布情况。

对于处理器来说,虚拟地址 逻辑地址都是一个输入源,处理器对这些地址进行转换(比如利用MMU),转换为物理地址,真正处理器发出的地址是物理地址。

3 总线地址

总线地址是最难理解的一个概念。

所有的地址都可以称为总线地址,因为开发环境下所有的设备都是接在总线上,如AXI总线,APB总线,PCI总线 I2C总线 SPI总线。也就会存在很多种地址空间。

大部分情况下,总线地址=物理地址,为什么呢,物理地址是处理器在该系统总线上发出的地址,因此处理器发出的物理地址完全可以理解为处理器地址空间的总线地址,这肯定是相等的。

大部分程序操作都是处理器作为主设备,根据指令,来发出地址,读写数据。这时总线地址=物理地址

有一种情况下不是处理器做主设备,DMA,DMA controller操作RAM是不需要经过处理器的,这是DMA controller是主设备,但是因为DMA controller也是挂接在系统总线上,也就是处理器的地址空间中。

所以这时DMA controller发出的地址也是物理地址。

有一种特殊情况下,总线地址与物理地址不同,就是PCI总线。

因为PCI总线存在地址映射,这是因为PCI控制器内部有桥接电路,桥接电路会将I/O地址映射为不同的物理地址。

可以想象,PCI控制器挂接在处理器的系统总线上,而另一端的PCI总线上外扩了一些PCI设备。

假如某个PCI设备具有DMA能力,要去操作RAM,这时该设备看到的RAM的地址就应该是由系统总线映射到PCI总线上的总线地址。

映射关系由PCI控制器地址窗口来配置,一般是一个偏移量,所以这时映射到PCI总线上的RAM的总线地址就不是RAM在处理器系统地址空间上的物理地址(也可以称为系统总线地址)了。

因此总线地址  !=  物理地址。

当然PCI控制器地址窗口可以配置为平映射,这时总线地址就跟物理地址相同了。

这时还会想到一点问题,那像I2C总线 SPI总线会不会也有这样的问题,其实多虑了,PCI总线存在这个问题,是因为PCI总线支持设备做主设备,进行DMA。

而I2C SPI总线不具有这样的能力,但是他们还是有各自的地址空间,因此我们在操作I2C SPI总线时需要在其数据线上根据协议来发送地址锁定设备的。这个地址就不是处理器地址空间了,而是相应总线的地址空间了。

经过上面的解释,可以看出,任何开发环境都存在很多地址总线(AXI PCI I2C SPI),也就有很多地址空间。

物理地址也是总线地址,只不过是处理器系统总线地址(如AXI AHBA等)罢了。

什么是物理地址、虚拟地址、总线地址相关推荐

  1. 树莓派IO口驱动代码的编写、微机总线地址、物理地址、虚拟地址、BCM2835芯片手册

    地址总线: 百度百科解释: 地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/ ...

  2. 微机总线地址,物理地址 ,虚拟地址

    总线地址 地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址. ...

  3. 树莓派高级开发------总线地址、物理地址和虚拟地址的认识

    一.微机总线地址 百度百科的解释:地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存 ...

  4. 树莓派Linux内核编译、文件系统、Linux内核驱动基础框架、驱动测试步骤、总线地址

    树莓派高阶开发课程 1. ubuntu18.04版本安装          让程序猿搭建环境太搞笑了,轻松easy! ========================================= ...

  5. 【操作系统复习】物理地址虚拟地址

    [操作系统复习] 物理地址虚拟地址 物理地址和虚拟地址的区别 物理地址 逻辑地址 线性地址 为什么要分成物理地址和虚拟地址 物理内存及虚拟内存定义 为什么要有虚拟内存 虚拟内存的实现(可以在页式或段式 ...

  6. windows电脑cmd命令查看网卡的物理地址(mac地址)

    ​MAC地址也叫物理地址.硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写).IP地址与MAC地址在计算机里都 ...

  7. 你可得知道物理地址与IP地址

    来看看计算机网络中这些常见的概念你有没有理解~ 物理地址 表示方式 物理地址即mac地址,每个网卡都有6字节的唯一标识,前三个字节表示厂商,后三个字节由厂商随机分配. 如何查看 在 command 中 ...

  8. 计算机ip地址与物理地址绑定,查看机物理地址和IP地址,以及物理地址和IP地址的绑定...

    查看机物理地址和IP地址,以及物理地址和IP地址的绑定: 1.开始--运行--cmd 回车 输入命令:ipconfig/all C:\Documents and Settings\Administra ...

  9. 虚拟地址 线性地址 物理地址 傻傻分不清楚?

    Virtual address  Linear address  Physic address 先说说逻辑地址: 我们时常会看到一种地址的表述方式--segment:offset.比方0x0:0x7c ...

最新文章

  1. 创建自己的CA机构 - openssl cert 双向认证
  2. Petalinux 2017.4安装教程
  3. VTK:地形抽取用法实战
  4. CSS 使网页变灰(文字加动画)
  5. sh: 0: getcwd() failed: No such file or directory解决
  6. git本地分支删除,代码没了!怎么恢复!亲测有效(吓死人了)
  7. Lake Counting(信息学奥赛一本通-T1249)
  8. dede image.class.php,DEDE模板下载织梦DEDE 核心类TypeLink.class.php功能剖析
  9. 硬盘与电线挨着会高温吗_机械硬盘时代徐徐落幕?出货量再减50万件,你还会买新机械盘吗?...
  10. hive字段名、注释中文显示问号
  11. 偶然翻开旧日记本,发现了好多的情诗!!!!
  12. python config文件_Python如何配置config文件?
  13. 51单片机毕业设计题目大全
  14. 联想台式计算机编号怎么查,联想台式机主机编号怎么查询
  15. 关于清华大学C语言门事件
  16. 经典语句扎堆飘过...
  17. oracle 2018 拉里,Oracle拉里,有新武器对付SAP和HANA
  18. 人脸识别用哪种python库_python的face_recognition人脸识别库的使用
  19. PHP面试题(个人总结)————(暂不更新)
  20. PCIe设备驱动demo

热门文章

  1. 北京税务申报延期要如何进行申请?
  2. panoptic polarnet 笔记
  3. 小米趁5G手机加速普及之际,全线优惠促销抢市场
  4. 短线高手如何做当日黄金白银短线
  5. 征途2经典版服务器双线哪个稳定,征途2建国之战_征途2双线新区_快吧游戏
  6. endnote中英混排时“等“与“et al”的处理
  7. 论文解读:Dynamic Connected Networks for Chinese Spelling Check
  8. 斗拱展开面积表_古建筑的斗拱、斗口与模数,你会算了吗 | 10张图表看懂斗拱模数...
  9. 2018国庆第四场个人赛
  10. Java:类和对象(作业自存)