本文以Beaglebone版子為例,linux 4.19.142
系統移植請參閱 beaglebone black wireless開發板系統移植
進入beaglebone版子kernal目錄
cd bb-kernal/KERNAL
選擇spidev驅動
make menuconfig
目前beaglebone使用的spi driver是選用module方式,為了節省時間而選擇不重新編譯
進入bb-kernal/KERNAL
修改arch/arm/boot/dts/am335x-boneblack-wireless.dts文件
在&am33xx_pinmux裡增加SPI腳位定義
注意:底下四個SPI使用的PIN必須設定為INPUT,否則SPI不會正常動作!!!
以及定義spi相關設定,並引用上面定義的spi0_pins_default腳位定義
compatible需設定為"spidev",與spidev.c裡定義的相同
建立新的設備樹
make dtbs
將新建立好的設備樹am335x-boneblack-wireless.dts複製到beaglebone上
將前面製作好的am335x-boneblack-wireless.dts複製到beaglebone開機會載入設備樹的位置,例如:/boot/dtbs/4.19.142-bone56/
因選用module(M)模式,故若要使用每次開機皆須安裝
insmod /lib/modules/4.19.142-bone56/kernel/drivers/spi/spidev.ko
反之,若有選用y則不必安裝module
檢查是否成功載入spidev driver
ls /dev/spidev*.* =>若有此目錄表示驅動與設備配對成功
Spidev驅動說明可以參見Kernal裡的Documentation\spi\spidev
而關於spi子系統完整說明請參考Kernal裡的Documentation\spi\spi-summary
可以參考linux內核裡tools/spi/spidev_test.c提供的範例,調用open/ioctrl/read/write/close等API函數進行SPI測試驗證
這裡簡單描述一下各個API的主要功能