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

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

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

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

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

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

Linux common spi driver

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

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

kernel-4.14/drivers/spi/spi-mt65xx.c  MTK SPI 控制器驅(qū)動(dòng)
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/...

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

圖片

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

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

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

SPI 通用接口封裝層

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

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

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

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

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

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

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

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

    關(guān)注

    112

    文章

    16376

    瀏覽量

    178224
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1840

    瀏覽量

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

    關(guān)注

    17

    文章

    1707

    瀏覽量

    91642
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    請(qǐng)問TI燒寫程序集中SPI燒寫程序時(shí)*.ais文件在哪個(gè)目錄下?

    TI燒寫程序集中,SPI flash燒寫程序是輸入燒寫文件名,燒寫失敗,請(qǐng)問這個(gè)文件默認(rèn)應(yīng)該放在哪個(gè)目錄下?
    發(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源文件和頭文件。在我指定的項(xiàng)目目錄中看不到那些.c和.h文件,這有點(diǎn)奇怪,因?yàn)樗鼈儧]有隱藏到我所能識(shí)別的程度。即使在使用命令行提
    發(fā)表于 04-02 08:55

    請(qǐng)問Multisim中的Electronics Workbench\EWB9 目錄在哪啊?

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

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

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

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

    用 Native C++ 進(jìn)行開發(fā),在CMakeLists.txt 中添加了包含目錄,但是編譯報(bào)錯(cuò)了。請(qǐng)問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-同目錄下多個(gè)源文件

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

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

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