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

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

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

SPI驅(qū)動源文件目錄在哪

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

SPI 驅(qū)動源文件目錄

Linux common spi driver

kernel-4.14/drivers/spi/spi.c  Linux 提供的通用接口封裝層驅(qū)動
kernel-4.14/drivers/spi/spidev.c  linux 提供的 SPI 通用設(shè)備驅(qū)動程序
kernel-4.14/include/linux/spi/spi.h  linux 提供的包含 SPI 的主要數(shù)據(jù)結(jié)構(gòu)和函數(shù)

spi 控制器驅(qū)動,IC 廠商提供,不同廠商命名不同

kernel-4.14/drivers/spi/spi-mt65xx.c  MTK SPI 控制器驅(qū)動
kernel-4.14/drivers/spi/spi-mt65xx-dev.c
kernel-4.14/include/linux/platform_data/spi-mt65xx.h

dts

kernel-4.14/arch/arm/boot/dts/...
kernel-4.14/arch/arm64/boot/dts/...

以上文件對應(yīng)如下 SPI 驅(qū)動軟件架構(gòu):

圖片

SPI 控制器驅(qū)動程序

SPI 控制器不用關(guān)心設(shè)備的具體功能,它只負(fù)責(zé)把上層協(xié)議驅(qū)動準(zhǔn)備好的數(shù)據(jù)按 SPI 總線的時序要求發(fā)送給 SPI 設(shè)備,同時把從設(shè)備收到的數(shù)據(jù)返回給上層的協(xié)議驅(qū)動,因此,內(nèi)核把 SPI 控制器的驅(qū)動程序獨立出來。

SPI 控制器驅(qū)動負(fù)責(zé)控制具體的控制器硬件,諸如 DMA 和中斷操作等等,因為多個上層的協(xié)議驅(qū)動可能會通過控制器請求數(shù)據(jù)傳輸操作,所以,SPI 控制器驅(qū)動同時也要負(fù)責(zé)對這些請求進(jìn)行隊列管理,保證先進(jìn)先出的原則。

SPI 通用接口封裝層

為了簡化 SPI 驅(qū)動程序的編程工作,同時也為了降低【協(xié)議驅(qū)動程序】和【控制器驅(qū)動程序】的耦合程度,內(nèi)核把控制器驅(qū)動和協(xié)議驅(qū)動的一些通用操作封裝成標(biāo)準(zhǔn)的接口,加上一些通用的邏輯處理操作,組成了 SPI 通用接口封裝層。

這樣的好處是,對于控制器驅(qū)動程序,只要實現(xiàn)標(biāo)準(zhǔn)的接口回調(diào) API,并把它注冊到通用接口層即可,無需直接和協(xié)議層驅(qū)動程序進(jìn)行交互。而對于協(xié)議層驅(qū)動來說,只需通過通用接口層提供的 API 即可完成設(shè)備和驅(qū)動的注冊,并通過通用接口層的 API 完成數(shù)據(jù)的傳輸,無需關(guān)注 SPI 控制器驅(qū)動的實現(xiàn)細(xì)節(jié)。

SPI 協(xié)議驅(qū)動程序

SPI 設(shè)備的具體功能是由 SPI 協(xié)議驅(qū)動程序完成的,SPI 協(xié)議驅(qū)動程序了解設(shè)備的功能和通信數(shù)據(jù)的協(xié)議格式。向下,協(xié)議驅(qū)動通過通用接口層和控制器交換數(shù)據(jù),向上,協(xié)議驅(qū)動通常會根據(jù)設(shè)備具體的功能和內(nèi)核的其它子系統(tǒng)進(jìn)行交互。

例如,和 MTD 層交互以便把 SPI 接口的存儲設(shè)備實現(xiàn)為某個文件系統(tǒng),和 TTY 子系統(tǒng)交互把 SPI 設(shè)備實現(xiàn)為一個 TTY 設(shè)備,和網(wǎng)絡(luò)子系統(tǒng)交互以便把一個 SPI 設(shè)備實現(xiàn)為一個網(wǎng)絡(luò)設(shè)備。如果是一個專有的 SPI 設(shè)備,我們也可以按設(shè)備的協(xié)議要求,實現(xiàn)自己的專有協(xié)議驅(qū)動。

SPI 通用設(shè)備驅(qū)動程序

考慮到連接在 SPI 控制器上的設(shè)備的可變性,在內(nèi)核沒有配備相應(yīng)的協(xié)議驅(qū)動程序,對于這種情況,內(nèi)核為我們準(zhǔn)備了通用的 SPI 設(shè)備驅(qū)動程序,該通用設(shè)備驅(qū)動程序向用戶空間提供了控制 SPI 控制的控制接口,具體的協(xié)議控制和數(shù)據(jù)傳輸工作交由用戶空間根據(jù)具體的設(shè)備來完成,在這種方式中,只能采用同步的方式和 SPI 設(shè)備進(jìn)行通信,所以通常用于一些數(shù)據(jù)量較少的簡單 SPI 設(shè)備。

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

    關(guān)注

    112

    文章

    15885

    瀏覽量

    175382
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1790

    瀏覽量

    84910
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1669

    瀏覽量

    90735
收藏 人收藏

    評論

    相關(guān)推薦

    Linux中CMake的使用3-不同目錄多個源文件

    上篇(Linux中CMake的使用2-同目錄下多個源文件)介紹了在同一目錄下有多個源文件時如何編寫CMakeLists.txt。
    的頭像 發(fā)表于 09-21 08:49 ?3805次閱讀
    Linux中CMake的使用3-不同<b class='flag-5'>目錄</b>多個<b class='flag-5'>源文件</b>

    matlab用戶目錄在哪里設(shè)置呀?

    求助各位大神,matlab用戶目錄在哪里設(shè)置呀?注意是用戶目錄,不是當(dāng)前目錄。
    發(fā)表于 10-27 10:44

    請問TI燒寫程序集中SPI燒寫程序時*.ais文件在哪目錄下?

    TI燒寫程序集中,SPI flash燒寫程序是輸入燒寫文件名,燒寫失敗,請問這個文件默認(rèn)應(yīng)該放在哪目錄下?
    發(fā)表于 05-17 17:08

    如何在PSoC Creator中設(shè)置和/或向目錄源文件添加搜索目錄

    你好,如何在PSoC Creator中設(shè)置和/或向目錄源文件添加搜索目錄?謝謝,云基 以上來自于百度翻譯 以下為原文Hello, How do I set and/or add a search
    發(fā)表于 06-20 15:25

    C源文件的完整目錄路徑是什么?

    我在Windows Explorer下找不到自己添加的C源文件和頭文件。在我指定的項目目錄中看不到那些.c和.h文件,這有點奇怪,因為它們沒有隱藏到我所能識別的程度。即使在使用命令行提
    發(fā)表于 04-02 08:55

    請問Multisim中的Electronics Workbench\EWB9 目錄在哪啊?

    請問Multisim中的Electronics Workbench\EWB9 目錄在哪啊?我想在Multisim中添加一個labview儀器,書上說要把生成的程序復(fù)制到這個文件中,找了很久都沒找到。還是說要安裝其他東西?
    發(fā)表于 04-21 16:34

    keil自帶的ST例程添加自己的源文件和頭文件應(yīng)該放到哪個目錄

    用keil里的例程,修改寫GPIO流水燈的例程。直接在main()函數(shù)配置,是可以實現(xiàn)了;可是我做液晶顯示用自己的源文件和頭文件,應(yīng)該放到哪個目錄下呢?比如說我的keil是裝在D盤的。我直接在D
    發(fā)表于 05-22 07:22

    請問DevEco目錄在哪里可以設(shè)置編譯包含?

    用 Native C++ 進(jìn)行開發(fā),在CMakeLists.txt 中添加了包含目錄,但是編譯報錯了。請問DevEco目錄在哪里可以設(shè)置編譯包含?
    發(fā)表于 04-15 11:50

    Labview寶典(程序?qū)毜?源文件

    Labview寶典(程序?qū)毜?源文件),有源文件。
    發(fā)表于 12-22 14:50 ?0次下載

    調(diào)音板--protel源文件

    調(diào)音板--protel源文件 原理圖 PCB圖 都是源文件
    發(fā)表于 03-10 17:06 ?0次下載

    音調(diào)板 protel格式源文件

    音調(diào)板 protel格式源文件 PCB源文件
    發(fā)表于 06-15 17:36 ?46次下載

    AN147的源文件

    AN147的源文件
    發(fā)表于 06-05 16:39 ?3次下載
    AN147的<b class='flag-5'>源文件</b>

    Linux中CMake的使用2-同目錄下多個源文件

    上篇文章(Linux中CMake的使用1-單個源文件)介紹了編寫CMakeLists.txt的最基礎(chǔ)用法——只有一個源文件的情況。
    的頭像 發(fā)表于 09-20 08:57 ?1622次閱讀
    Linux中CMake的使用2-同<b class='flag-5'>目錄</b>下多個<b class='flag-5'>源文件</b>

    MegaRAID PSoC目錄在自述文件看到重要提示

    電子發(fā)燒友網(wǎng)站提供《MegaRAID PSoC目錄在自述文件看到重要提示.zip》資料免費下載
    發(fā)表于 08-02 16:03 ?0次下載
    MegaRAID PSoC<b class='flag-5'>目錄在</b>自述<b class='flag-5'>文件</b>看到重要提示

    最新MegaRAID PSoC目錄在自述文件看到重要提示

    電子發(fā)燒友網(wǎng)站提供《最新MegaRAID PSoC目錄在自述文件看到重要提示.zip》資料免費下載
    發(fā)表于 08-23 14:10 ?0次下載
    最新MegaRAID PSoC<b class='flag-5'>目錄在</b>自述<b class='flag-5'>文件</b>看到重要提示