linux下spi驅動分析

2021-06-18 23:03:38 字數 1322 閱讀 8957

核心版本:linux-2.6.29

主要的幾個結構platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_driver spidev_data s3c_spi_info第一步:註冊platform_device在arch/arm/mach-s3c2410/mach-qt2410.c 中註冊platform_device ,其中s3c2410_spi_info 作為platform_device.private_data. platform_device.name 為"s3c2410-spi".

同時在mach-qt2410.c 中註冊spi_board_info, 其中spi_board_info.bus_num=0, 與s2c2410_spi_info 中的bus_num 相同, 以後會通過bus_num 比對來匹配。

第二步:註冊platform_driver在driver/spi/spi_s3c24xx.c 中註冊platform_driver (s3c24xx_spi_driver) ,這個platform_driver 的名字為"s3c2410-spi" ,這樣名字與platform_device 的相同,在註冊的時候會匹配到一起。並呼叫s3c24xx_spi_driver.probe 函式s3c24xx_spi_probe .

第三步:註冊spi_device在。probe 函式中建立s3c24xx_spi ,該結構中包括了乙個spi_bitbang, 乙個spi_master ,配置了一些互相關聯的項以後( 將3c2410_spi_info.bus_num 作為spi_master.bus_num) ,即掃瞄註冊的spi_board_info 鍊錶,查詢所有spi_board_info.bus_num 與spi_master.bus_num 相等的項,並為每一項註冊spi_device ,其中spi_device 的名字為spi_board_info. modalias .

第四步:註冊字元裝置,註冊spi_driver在driver/spi/spidev.c 中,先註冊 了以spidev_major 為主裝置號,spidev_ops 為檔案操作集的字元裝置 .註冊spi_driver . 在driver/spi/spidev.c 中,其中spi_driver 的名字為「spidev」 ,這樣與剛才註冊的spi_device 相匹配,在spi_driver.probe 並為每個匹配的spi_device 建立了乙個spidev_data ,並在sys 系統中註冊乙個帶有以spidev_major 為主裝置號,以0開始的遞增的數字為副裝置號的裝置點,這樣如果有udev 執行的話會在/dev 下面節點。

好了,所有的工作準備就緒了,使用者可以通過訪問/dev/ 下的節點來使用這個驅動了。

Linux下SPI驅動分析 2

接上乙個繼續看spi.c。名詞解釋of openfirmware 呼叫層次spi match device of driver match device of match device of match node 用於驅動程式檢查platform device是否在其支援列表裡 80static i...

Linux下SPI驅動簡解

基礎知識 第一點 硬體四線 第二點 重要結構體和函式 struct spi device struct spi message struct spi transfer int spi async struct spi device spi,struct spi message message sta...

Linux裝置驅動 SPI驅動

spi驅動匯流排架構 spi核心層 x spi控制器驅動層 x spi裝置驅動層 spi函式介面 api 簡單介紹spi協議,硬體原理 4412datasheet sdi 資料輸入buf i2c scl6 sdo 資料輸出buf i2c sda6 sclk 時鐘buf gpc1 1 cs 片選bk ...