Linux核心spi子系統架構分析

來源:互聯網
上載者:User
Linux核心SPI子系統架構分析(清晰)

SPI匯流排上有兩類裝置:一類是主控端,通常作為SOC系統的一個子模組出現,比如很多嵌入式MPU中都常常包含SPI模組。一類是受控端,例如一些SPI介面的Flash、感應器等等。主控端是SPI匯流排的控制者,通過使用SPI協議主動發起SPI匯流排上的會話。而受控端則被動接受 SPI主控端的指令,並作出響應的響應。

Linux目前只支援SPI主控端,不能支援SPI受控端裝置。

Linux中的SPI是依靠SPI子系統實現的。這個子系統向下直接和SPI主控裝置硬體互動,讀取SPI匯流排上的資料。向上則和FS子系統、MTD子系統、字元裝置子系統等等互動,給使用者空間提供提供者。

在SPI子系統中,包含兩類裝置驅動。一類稱之為Controller driver,用於驅動SPI主控裝置,以和SPI匯流排互動,讀寫通訊資料。另一類稱之為Protocol driver,用於解析Controller driver讀取的資料,形成有意義的協議資料。舉例來說,將AT25晶片通過SPI匯流排和LPC3250的SPI控制器聯結在一起,構成一個SPI匯流排通訊系統。Protocol driver的作用,就是根據使用者空間或者上層子系統的請求,(比如讀寫Flash指定地址出的資料),找到對應的SPI指令,並產生一個SPI會話幀(指令+地址+資料)資料。Controller
driver的作用,就是將這個會話幀的資料通過SPI控制器的硬體,發到SPI匯流排上去。

由此可見,SPI子系統中有兩種裝置,一種是Controller driver驅動的,稱之為spi_master。另一種是由Protocol driver驅動的,稱之為spi_device(個人覺得這種稱法不太準確,這個裝置只是協議解析裝置,而非真正的spi裝置)。

核心之所以把SPI子系統這麼劃分,是因為SPI主控器功能單一,只負責和SPI匯流排互動,讀寫資料。但資料的具體含義,根據SPI匯流排上的裝置不同,而千差萬別。

核心一方面把SPI通訊系統分成上面兩個部分,另一方面建立了一個spi核心系統,用於聯結這兩部分。

根據上面的分析我們知道,SPI通訊的資料流大致是:
1、使用者請求=>Protocol driver分析請求,產生SPI通訊幀=>Controller driver將通訊幀發送到SPI匯流排上;
2、SPI裝置傳回資料=>Controller driver從SPI匯流排上讀回=>Protocol解析通訊資料並上報;

其中Protocol和Controller之間的互動中,SPI幀是一個比較關鍵的資料結構。Protocol通過分析上層請求產生這種幀,並且解析這種幀得到SPI裝置的響應的結果。Controller通過和SPI匯流排互動,收發這樣的幀。在Linux核心中,這個幀通過一個叫做 spi_message的結構來實現。

在有資料請求時,Protocol解析請求產生這個幀,並發送到SPI核心子系統。SPI核心子系統通過Protocol裝置的資訊,找到對應的 Controller裝置,並將這個幀發送給Controller。Controller接受到這個幀後發送到SPI匯流排上。返程類似。

關於SPI Controller和Protocol這兩種裝置以及SPI核心子系統相互之間是如何工作的,請參考下一篇《Linux核心SPI子系統實現分析》。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.