2012-06-24 92 views
1

我是一名初學者,我試圖理解設備驅動程序堆棧背後的概念?我知道設備驅動程序堆棧有三層,分別是低層驅動程序,總線管理器和高層驅動程序。 我的問題是,低級驅動程序和總線管理器是否存在單獨的代碼?如果存在,我可以在哪裏找到Linux文件系統中硬件控制器的低級驅動程序? 謝謝。設備驅動程序堆棧

回答

1

Linux內核有三個設備驅動程序層,它們適用於內核的大部分設備驅動程序系統。 總線驅動程序,協議驅動程序和設備驅動程序。 讓我們舉個例子來說明一個你想寫驅動的SPI設備(例如某種傳感器)。 通常情況下,您將使用設備的數據表編寫驅動程序,查看它是如何工作的以及哪些寄存器保存哪些信息。這是在設備驅動程序中完成的。

設備驅動程序將命令發送到協議驅動程序,該驅動程序基本上定義了SPI命令的外觀(如何填充數據結構以讀取/寫入設備的寄存器)。

通常,SOC與傳感器之間的SPI連接是通過SOC內部的一些特殊硬件來完成的,以發送接收SPI命令。 這是公交車司機。所以,你必須在軟件中是這樣的: 的device_driver < - > protocol_driver < - > bus_driver

在硬件

它看起來像這樣: SOC_SPI_module < - >傳感器

的想法是,封裝SOC SPI模塊從設備驅動程序開始,所以當您編寫設備驅動程序時,您不必關心用於訪問設備的SOC。

希望我能夠幫助你。

-1

在Linux設備驅動程序中一般是C語言中的面向對象編程。在此,我們正在對更廣闊的視野「宏module_init」構造 & 「宏module_exit」析構函數

根據我爲「INIT &退出」過程視圖與設備控制器硬件,從而可以稱爲「下部層驅動器」相互作用。後,它控制是通過「文件操作駕駛員的&工作流程」「總線管理器或流程管理器」到用戶通過「IOCTL過程」「高電平的驅動程序」控制。

如果用戶必須向設備進行交互,然後「IOCTL進程」 < - > 「文件操作」 < - > 「宏module_init &宏module_exit &部分文件操作。」