日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mpu 配置内存空间_PCIE的内存地址空间、I/O地址空间和配置地址空间

發布時間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mpu 配置内存空间_PCIE的内存地址空间、I/O地址空间和配置地址空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pci設備與其它接口的設備(如i2c設備)最大的不同是存在內存地址空間和配置地址空間

首先區分一下IO空間和內存空間

cpu會訪問的設備一般有內存和外設寄存器,如下圖所示。x86架構采用獨立編址將內存操作與外設IO操作分開了才有了內存空間和IO空間的區分,x86平臺cpu內部對內存和外設寄存器訪問的指令也是不同的。arm等其他平臺都采用統一編址,不區分內存和外設的訪問。

IO空間:訪問外部設備寄存器的地址區域,x86平臺為64k

內存空間:訪問內存的地址空間,32位平臺為4G

pci設備的內存空間是怎么回事呢?

常見的設備都只提供寄存器供cpu訪問,對于低速外設這樣的模式是足夠的。但是對于需要大量、高速數據交互的外設就需要引入外設內存空間了。在網卡、顯卡這樣的pci高速外設中不僅有寄存器還有了一塊內存。

配置空間和IO空間不都是外設的寄存器嗎,它們有什么區別呢?

IO空間就和i2c設備的寄存器空間一樣,用來獲取外設狀態、配置外設。

配置空間是一段特殊的IO空間,它的作用是為外設內存空間、IO空間分配物理地址基地址,即配置BAR(Base Address Registers)。這里類似linux對虛擬地址的映射了,但現在分配的卻是物理地址。因為外設內部的內存地址都是從0開始編址的,當pci控制器接入多個pci設備時如何確保pci上的內存地址不混亂呢,這就是配置空間的一個作用,配置空間有固定的結構,在pci總線掃描設備時配置好BAR,這樣各個pci設備的內存空間和IO空間才可訪問,而不至于和其他設備物理地址沖突。

在pci總線之前的ISA總線是使用跳線帽來分配外設的物理地址的,每插入一個新設備都要改變跳線帽以分配物理地址,這是十分麻煩且易錯的,但這樣的方式似乎我們更容易理解。能夠分配自己總線上掛載設備的物理地址這也是PCI總線相較于I2C、SPI等低速總線一個最大的特色。

為什么只有pci設備可以有外設內存空間,i2c、usb等設備沒有?

說起外設上可以有設備專屬的內存時,指的都是pci設備。我們更為常用的i2c、usb、spi、uart設備怎么都沒有這樣的說法呢?

這是因為在cpu內部架構中會有系統總線和外設總線。系統總線一般是連接cpu與主存的,外設總線是cpu連接外部設備的。在有pci控制器的cpu架構中pci總線就取代了cpu內部的外設總線的位置,所有外設都是掛在不同層級的pci橋上的,再由pci轉成了usb、i2c、uart等接口。因此pci設備相當于直接連在cpu總線上了,這樣pci設備中就可以擁有cpu總線上的物理地址,和主存共享cpu的物理地址空間,當然就可以存在外設內存(相當于pci設備與其他外設的控制器在一個層級上)。i2c等外設只能通過i2c控制器間接的與cpu通信,pci設備擁有cpu的物理地址,可以直接與cpu對話。

可簡要理解為pci總線類似cpu內部總線的延伸,i2c、usb等都僅僅是純粹的外設總線,社會層級不同。

總結

以上是生活随笔為你收集整理的mpu 配置内存空间_PCIE的内存地址空间、I/O地址空间和配置地址空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。