今天在看《Linux设备驱动程序》里面的第十五章“内存映射和DMA”
里面的一大堆地址类型弄得我云里去雾里来的。
如:
用户虚拟地址
物理地址
总线地址
内核逻辑地址
内核虚拟地址
linux这个操作系统真是事情多啊,地址都搞这么多名堂的。我以前对地址的理解就是:
逻辑地址:相对于进程4G空间来说的,为了隔离物理地址与程序直接交互,减轻程序员的负担。通过段映射,页映射可以转换成物理地址。
物理地址:就是CPU通过地址总线发送的信号,可以连接到实际内存。
虚拟地址:就是为了在小内存的系统中运行大的应用程序而出现的一种机制。这里就牵涉到了页中断,就是在某个进程不用的时候,把其中的内存存放到硬件中,等需要使用的时候,产生一个页中断把它重新调回到内存中。当然,它牺牲了时间。典型的“以时间换空间”的做法。
但是总线地址是个什么概念呢?
它出现的理由是什么啊! 区别的标准是什么呢?
通过google的search发现有个解释还不错。原文如下:
PCI设备总线地址与CPU物理地址的区别 1 域的概念 之所以把PCI设备和CPU加红色高亮,是因为这里有个域的概念对理解总线地址和物理地址很重要,区分这两个域是理解两个地址的基础。 PCI设备域包括: PCI设备,PCI设备上的DMA Enginer, CPU端的DMA 控制器。 CPU域包括: CPU
2 物理地址到总线地址的映射 物理地址和总线地址一一映射,而且在绝大多数平台上,为了简便,总线地址和物理地址起始地址也是一样的。虽然方便,但是很多开发者弄不清楚某个具体值到底是物理地址还是总线地址。有了域的概念,就好理解多了,如设备的PCI config space 中的BAR地址就是总线地址,因为它是给设备用的。而调用kernel API pci_resource_start(dev,...) 返回的值则是CPU域的物理地址。
=========================完===================================
我的理解就是,物理地址一般与CPU有关系,是给CPU指令使用的。而总线地址主要是给设备使用的,是设备中的一些内存资源。如果要CPU的物理地址连接上设备上的总线地址就需要使用mmapi映射,这样就能将物理地址与总线地址链接在一起。
也不知道我这样理解对么? 不管对与错,先把我自己的观点抛出来在说。
OK,在深入理解点。希望大牛么给个更好的解释,同时我也会关注这个话题。
|
分享到:
相关推荐
CAN协议分为物理层、数据链路层和应用层,其中数据链路层又分为逻辑链接控制(LLC)和媒体访问控制(MAC)子层。29位的标识符(ID)用于区分不同的消息,高优先级的消息拥有较低的ID值。 CAN总线的典型应用协议包括...
此外,还有根据用途(如计算机总线、外设总线、控制系统总线)、作用域(全局总线和本地总线)、标准化程度(标准总线和专用总线)以及使用位置(内部总线和外部总线)来区分的总线类型。 内部总线是计算机内部组件...
4. CAN总线协议栈,兼容OSI模型(物理,数据链路,网络,传输,会话,表示层,应用层); 5. CAN总线的电平信号,0-3.5V, 以2.5V为高低电平区分; 6. CAN传输距离和传输速率kbps的关系:位速率越快,传输距离越短;...
在总线的体系结构中,可以区分为主控模块和受控模块。主控模块(Master或主模块)是能够控制总线并启动数据传输的模块,而受控模块(Slave或从模块)则是响应主控模块命令的模块。还有一种是分时复用模块,它可以在...
M/-IO用于区分访问的是存储器还是I/O端口,DT/R表示数据的发送或接收,SSS00与M/-IO和DT/R共同定义总线操作周期,-WR用于写控制,DEN激活外部数据总线缓冲器,HOLD用于DMA请求,-INTA响应中断,ALE则在地址/数据总线...
总结来说,计算机内部总线系统是计算机内部电路集成和模块化设计的产物,它通过共享线路减少物理连接的数量,提高了CPU内部数据处理和传输的效率。它根据不同的需求有单向和双向的区分,并利用三态逻辑电路来实现...
7. CAN总线智能节点研究的参考文献:参考文献中列举了多篇与CAN总线技术、智能节点设计、嵌入式系统应用相关的文献,这些文献不仅为CAN总线智能节点的设计提供了理论基础,也为实际应用提供了参考案例。 8. 布线...
《CAN总线轻松入门与实践》书籍配套程序是一份宝贵的资源,它包含了一系列关于CAN总线规范的详细资料,以及与CAN控制器、收发器相关的说明和实际通讯示例,为学习和应用CAN总线提供了有力的支持。 首先,CAN总线...
3. **地址/数据复用**:PCI总线使用相同的信号线来传输地址和数据,通过时序来区分地址和数据阶段。 4. **中断**:PCI设备可以通过中断请求(IRQ)线向CPU发送中断信号,以便进行异步通信。 随着技术的发展,PCI...
- **地址分配**:每个连接到I2C总线上的设备都有一个唯一的7位地址,这使得多个设备可以在同一总线上工作,并且通过地址进行区分。 - **通信协议**:采用主从模式,一个主设备可以与一个或多个从设备通信。 - **高...
2. 节点会持续监听总线上的电平,如果检测到与自己发出的电平不一致,则自动停止发送,从而解决冲突。 ### 应用实例 CAN总线在车载网络中的构想示意图显示,CAN网络连接着车内各关键系统部件,如发动机控制单元、...
master与slave之间的连接可以是简单的点对点连接,也可以是复杂的交通矩阵,涉及到总线仲裁机制。无论连接多么复杂,总有master向slave传输数据的过程。 #### 2. 数据交换与信号组合 在某些情况下,数据需要在既是...
三、CAN总线物理层 1. 两线制:CAN总线采用差分信号传输,通过CAN_H和CAN_L两条线进行数据传输,可以有效抑制噪声。 2. 速率选择:CAN总线支持多种速率,如125kbps、250kbps、500kbps等,具体取决于应用需求和传输...
#### 四、CAN总线物理特性 - **电平信号**:CAN总线使用差分信号进行数据传输,当CAN_H电压高于CAN_L时表示逻辑“0”,反之表示逻辑“1”。隐性和显性状态之间的电压差异使得CAN总线能够在噪声环境中可靠地传输数据...
现场总线的工作基于开放系统互联(OSI)模型,这一模型分为7层,包括物理层、数据链路层、网络层、传输层、会话层、表达层和应用层。通过这7层结构,现场总线确保了不同设备间的有效通信和数据交换。在实际操作中,...
根据物理位置的不同还可进一步区分为片上总线、内存总线、系统总线和设备总线。各类型总线均对特定层面的硬件互联起关键作用。例如,内存总线主要负责内存条与内存控制器间的通信,而设备总线如PCI/PCIE,则主要用于...
- **安装要点**:确保所有设备都与总线相连;使用中继器进行分段扩展;合理配置总线终端电阻等。 ##### 2.3 PROFIBUS-DP的传输技术 - **RS-485技术**:PROFIBUS-DP主要采用RS-485作为物理层标准,具有较强的抗干扰...
学习CAN总线不仅需要理解基本的物理层和数据链路层,还要熟悉其在网络层和应用层的实现。通过周立功公司的"CAN_bus现场总线基础教程",你将能够系统地掌握CAN总线的各个方面,包括硬件接口、软件编程以及实际系统的...
2. **错误检测与恢复**:CAN总线具有强大的错误检测能力,如位错误、CRC校验等,一旦检测到错误,会通过错误标志进行通知,并尝试自动恢复。 3. **仲裁机制**:CAN总线采用非破坏性仲裁,即在多个节点同时发送数据...
4. **CAN消息发送与接收**:在源码中,你会看到如何构建CAN消息,包括设置ID、DLC和数据,并将消息发送到CAN总线上。同时,还会涉及到接收CAN消息的逻辑,解析接收到的数据并作出相应处理。 5. **错误处理与仲裁**...