0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

訪問PCI/PCIe設(shè)備的流程

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 09:44 ? 次閱讀

訪問 PCI/PCIe 設(shè)備的流程

PCI/PCIe 設(shè)備的配置信息

PCI/PCIe 設(shè)備上有配置空間(配置寄存器),用來表明自己"需要多大的地址空間"。

注意,這是 PCI/PCIe 地址空間。

主機(jī)讀取設(shè)備配置信息、分配空間

主機(jī)上的程序訪問 PCI/PCIe 設(shè)備,讀出配置信息。

分配地址空間:注意,分配的是 PCI/PCIe 地址空間。

把地址空間首地址寫入設(shè)備。

CPU 地址空間和 PCI/PCIe 地址空間怎么轉(zhuǎn)換?

假設(shè) CPU 發(fā)出的 addr_cpu,是用來訪問 PCI 設(shè)備的,轉(zhuǎn)換關(guān)系為:

addr_pci  = addr_cpu + offset

在 PCI/PCIe 控制器中,有某個(gè)寄存器,有來保存 offset 值。

主機(jī)像讀寫內(nèi)存一樣訪問設(shè)備

示例代碼如下:

volatile unsigned int *p = addr_cpu;
unsigned int val;
*p = val;  /* 寫, 硬件會(huì)把a(bǔ)ddr_cpu轉(zhuǎn)換為addr_pci去寫PCI/PCIe設(shè)備 */
val = *p;  /* 讀, 硬件會(huì)把a(bǔ)ddr_cpu轉(zhuǎn)換為addr_pci去讀PCI/PCIe設(shè)備 */

| 本文參考 百問網(wǎng)-韋東山驅(qū)動(dòng)大全 |

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • PCI
    PCI
    +關(guān)注

    關(guān)注

    4

    文章

    666

    瀏覽量

    130277
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4509

    瀏覽量

    70645
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1239

    瀏覽量

    82665
收藏 人收藏

    評論

    相關(guān)推薦

    windows xp無法正常掃描和安裝驅(qū)動(dòng)PCIE設(shè)備

    (version 10.20)掃描設(shè)備,發(fā)現(xiàn)設(shè)備地址0x4(對應(yīng)PCI control register)為0x0,意味著總線訪問未使能。無法正常
    發(fā)表于 12-13 11:30

    關(guān)于dm8168的PRCM使能pcie寄存器區(qū)域,需要PRCM配置打開pcie,為什么配置之后還是不能訪問pcie的寄存器?

    的配置方式如下:1、RM_DEFAULT_RSTCTRL:0x7f2、CM_DEFAULT_PCI_CLKSTCTRL: 0x23、CM_DEFAULT_PCI_CLKCTRL: 0x2按照以上配置之后還是不能訪問
    發(fā)表于 05-25 08:39

    能分享PCI轉(zhuǎn)PCIe的PCB原理圖嗎

    有大佬能分享一下PCI總線轉(zhuǎn)PCIePCIe轉(zhuǎn)PCI)的PCB原理圖嗎?
    發(fā)表于 01-25 11:38

    怎么實(shí)現(xiàn)PC機(jī)的軟件對PCI設(shè)備訪問?

    在設(shè)計(jì)和使用PCI設(shè)備時(shí),經(jīng)常要在PC機(jī)的軟件中訪問和控制硬件設(shè)備,但Windows操作系統(tǒng)(包括Windows 95/98、Windows NT、Windows 2000)為了保證系
    發(fā)表于 09-17 08:12

    無法訪問s32v234板中的PCIe是怎么回事?

    嘗試訪問兩塊 s32v234 板上的 PCIe 設(shè)備,但未成功。在 U-Boot 中,pci 命令(例如枚舉)會(huì)收到“pci_bus_to_
    發(fā)表于 03-31 06:40

    LX2160A訪問64位PCIe BAR時(shí)出現(xiàn)異步SError怎么解決?

    我在訪問 PCIe BAR 空間時(shí)遇到 Async Serror。很奇怪。能幫忙看看是什么原因嗎?謝謝。 ?#dmesg | grep pcie [0.000000] 內(nèi)核命令行:console
    發(fā)表于 04-03 06:06

    Arm PCI配置空間訪問固件接口1.0BET1平臺(tái)設(shè)計(jì)文檔

    本文檔為調(diào)用方(如操作系統(tǒng)或系統(tǒng)管理程序)定義了訪問PCI配置空間的標(biāo)準(zhǔn)固件接口。 該接口可用作增強(qiáng)配置訪問機(jī)制(ECAM)硬件機(jī)制的替代方案,該機(jī)制在PCIe規(guī)范[1]中進(jìn)行了定義。
    發(fā)表于 08-11 07:55

    PCI設(shè)備配置空間研究

    在開發(fā)PCI設(shè)備驅(qū)動(dòng)程序時(shí),需要訪問配置空間來控制設(shè)備。研究了PC平臺(tái)和Windows系統(tǒng)下訪問PCI
    發(fā)表于 11-24 18:22 ?0次下載
    <b class='flag-5'>PCI</b><b class='flag-5'>設(shè)備</b>配置空間研究

    PCIe的技術(shù)原理詳細(xì)說明

    硬盤是大家都很熟悉的設(shè)備,一路走來,從HDD到SSD,從SATA到NVMe,作為NVMe SSD的前端接口,PCIe再次進(jìn)入我們的視野。作為x86體系關(guān)鍵的一環(huán),PCIe標(biāo)準(zhǔn)歷經(jīng)PCI
    發(fā)表于 01-09 10:41 ?3.9w次閱讀
    <b class='flag-5'>PCIe</b>的技術(shù)原理詳細(xì)說明

    PCIePCI之間的區(qū)別

    PCIe(Peripheral Component Interconnect Express)是繼ISA和PCI總線之后的第三代I/O總線。一般翻譯為周邊設(shè)備高速連接標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 07-03 16:20 ?2.1w次閱讀

    聊聊PCIe設(shè)備在系統(tǒng)如何發(fā)現(xiàn)與訪問?

    硬盤是大家都很熟悉的設(shè)備,一路走來,從HDD到SSD,從SATA到NVMe,作為NVMe SSD的前端接口,PCIe再次進(jìn)入我們的視野。作為x86體系關(guān)鍵的一環(huán),PCIe標(biāo)準(zhǔn)歷經(jīng)PCI
    的頭像 發(fā)表于 12-09 10:04 ?4625次閱讀

    PCI/PCIe最容易訪問設(shè)備是什么

    最容易訪問設(shè)備是什么 是內(nèi)存! 要讀寫內(nèi)存,知道它的地址就可以: volatile unsigned int *p = 某個(gè)地址; unsigned int val;*p = val; /* 寫
    的頭像 發(fā)表于 07-30 09:35 ?595次閱讀
    <b class='flag-5'>PCI</b>/<b class='flag-5'>PCIe</b>最容易<b class='flag-5'>訪問</b>的<b class='flag-5'>設(shè)備</b>是什么

    理解PCIPCIE的關(guān)鍵

    理解 PCIPCIE 的關(guān)鍵 地址空間轉(zhuǎn)換 PCI 接口速覽 PCI 是并行口,引腳多。其中 Address 和 Data 復(fù)用 PIN 腳,因此引腳命名為 AD。 隨著速率的提
    的頭像 發(fā)表于 07-30 09:44 ?1365次閱讀
    理解<b class='flag-5'>PCI</b>和<b class='flag-5'>PCIE</b>的關(guān)鍵

    PCIe相關(guān)問題解答

    CPU 發(fā)起的,訪問PCIe設(shè)備配置空間的數(shù)據(jù)流。這種數(shù)據(jù)流主要是BIOS/Linux PCIe driver 對設(shè)備進(jìn)行初始化、資源分配時(shí)
    的頭像 發(fā)表于 09-15 09:39 ?1727次閱讀
    <b class='flag-5'>PCIe</b>相關(guān)問題解答

    PCIe接口的工作原理 PCIePCI的區(qū)別

    PCI Express(PCIe)是一種高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn),主要用于計(jì)算機(jī)內(nèi)部硬件設(shè)備之間的連接。以下是PCIe接口的工作原理的簡要概述: 串行通信 :與傳統(tǒng)的并行
    的頭像 發(fā)表于 11-06 09:19 ?1378次閱讀