一、硬件spi
1)基于自家芯片各厂商已在内核编写相关spi控制器驱动,kconfig中打开对应芯片spi控制器驱动使内核编译时编译相关驱动,设备树中在外设根节点添加对应spi控制器驱动的compatible值
2)基于模块开发设备驱动:设备树对应spi根节点下添加spi设备子节点信息,compatible与spi设备模块的compatible相同,加载模块时,匹配运行probe函数即成功
3)在用户态调spidev接口ioctl与spi设备通信:使能内核spidev用户mode,设备节点compatible与drivers/spi/spidev.c中compatible值相同即可在/dev下生成spidevx.x节点,打开/dev/spidevx.x与spi设备在用户态通信
二、软件spi
1)基于spi bitbang框架使用内核提供的模拟spi,编译时打开spi-gpio.c spi-bitbang.c ,主要关注spi-gpio.c,据Documentation/devicetree/bindings/spi/spi-gpio.txt在设备树添加设备根节点,添加子节点、加载对应模块后使用模拟spi通信(problem to be solved)
2)直接在模块中模拟spi通信时序与spi设备通信(well done)
资料:
https://blog.csdn.net/blog_xu/article/details/90644987
https://blog.csdn.net/kunkliu/article/details/104986007
https://blog.csdn.net/qq_16054639/article/details/106733956
https://blog.csdn.net/weixin_42377196/article/details/116736794
http://doc.qlqcetc.cn/docs/x2000/x2000-spi