一、PCI總線基礎知識
1、PCI總線的概念
PCI是Peripheral Component Interconnect(外設部件互聯)的縮寫,它是CPU和外圍設備通信的高速傳輸總線。PCI總線的工作頻率一般爲33MHz(有的PCI總線工作頻率爲64MHz和132MHz),是一種同步的獨立於處理器的32位或64位局部總線。
2、PCI總線結構
PCI總線是一種樹型結構,並且獨立於CPU總線,可以和CPU總線並行操作。PCI總線上可以掛接PCI設備和PCI橋片,PCI總線上只允許有一個PCI主設備,其他的均爲PCI 從設備,而且讀寫操作只能在主從設備之間進行,從設備之間的數據交換需要通過主設備中轉。PCI總線結構如下圖所示。
1、PCI總線的概念
PCI是Peripheral Component Interconnect(外設部件互聯)的縮寫,它是CPU和外圍設備通信的高速傳輸總線。PCI總線的工作頻率一般爲33MHz(有的PCI總線工作頻率爲64MHz和132MHz),是一種同步的獨立於處理器的32位或64位局部總線。
2、PCI總線結構
PCI總線是一種樹型結構,並且獨立於CPU總線,可以和CPU總線並行操作。PCI總線上可以掛接PCI設備和PCI橋片,PCI總線上只允許有一個PCI主設備,其他的均爲PCI 從設備,而且讀寫操作只能在主從設備之間進行,從設備之間的數據交換需要通過主設備中轉。PCI總線結構如下圖所示。
圖1-1 PCI總線結構圖
3、PCI總線和PCI總線樹
1個或者多個有血緣關係的PCI總線組成一顆PCi總線樹。PCI總線由Host主橋或者PCI橋管理,PCI通過PCI橋擴展PCI總線,與Host主橋直接相連的PCI總線通常被命名爲PCI總線0。一個處理器系統可能擁有多個Host主橋,有幾個Host主橋就有幾顆PCI總線樹。
4、PCI總線的特點
(1)傳輸速率高最大數據傳輸率爲132MB/s,當數據寬度升級到64位,數據傳輸率可達264MB/s。這是其他總線難以比擬的。它大大緩解了數據I/O瓶頸,使高性能CPU的功能得以充分發揮,適應高速設備數據傳輸的需要。
(2)多總線共存採用PCI總線可在一個系統中讓多種總線共存,容納不同速度的設備一起工作。
(3)獨立於CPU
PCI總線不依附於某一具體處理器,兼容性好。
(4)自動識別與配置外設,用戶使用方便。
(5)並行操作能力,可與CPU並行執行。
(6)PCI總線上所有時序的產生和控制均由主設備發起。
(7)PCI總線的地址總線和數據總線是分時複用的。(優點:1、節省插件的管腳數量;2、便於突發數據傳輸,即一個地址後面跟大量數據)
二、SylixOS下PCI設備驅動框架介紹
從本質上講PCI只是一種總線,具體的PCI設備可以是字符設備、網絡設備、USB主機控制器等,因此,一個通過PCI總線與系統連接的設備的驅動至少包含PCI驅動和設備本身驅動兩部分內容。PCI驅動只是爲了輔助設備本身的驅動,它不是目的,而是手段。例如 ,對於通過PCI總線與系統連接的字符設備,則驅動中除了要實現PCI驅動部分外,其主體仍然是設備作爲字符設備的本身驅動,即實現file_operations成員函數並將設備註冊進內核。
在SylixOS中,用PCI_DRV_CB結構體來定義PCI驅動,該結構體包含PCI設備的探測/移除、掛起/恢復等函數,其定義代碼如下代碼清單所示。PCI_DRV_CB結構體和I2C的LW_I2C_DEVICE結構體、SPI的LW_SPI_DEVICE結構體的非常相似,都是起到掛接總線的作用。
PCI_DRV_CB結構體的PCIDRV_pfuncDevProbe函數指針指向的probe函數,需要完成PCI設備的初始化及其設備本身自身(字符、TTY、網絡等)驅動的註冊。在SylixOS的probe函數中,首先會通過PCI總線獲得PCI設備的基本資源,如:設備的起始地址、資源大小、中斷等,獲得資源之後,剩下的就是利用獲得的資源編寫設備本身自身的驅動代碼(基本和編寫非PCI總線上的設備驅動沒啥區別)。當PCI設備驅動完成後,在PCI設備數據傳輸時,是經過PCI總線傳給CPU的,這和Nor
Flash掛接在SPI總線上,通過SPI和CPU通信的機制一樣。 以上就是我學習PCI總線的總結,若是有總結的不對的地方,煩請各位指正。