按照官方说明在编译选项中添加
CONFIG_SPI=y
CONFIG_SPI_SUN4I=y
CONFIG_SPI_SUN6I=y
# add spidev
CONFIG_SPI_SPIDEV=y
CONFIG_SPI_MASTER=y
CONFIG_EXPERIMENTAL=y
修改dts文件
&spi0 {
status = "okay";
cs-gpios = <&pio 2 3 GPIO_ACTIVE_HIGH>;
spidev0: spidev@0 {
compatible = "spidev";
reg = <0>;
spi-max-frequency = <800000>;
};
};
编译之后在/proc/device-tree/soc/spi@1c68000中找不到spidev
spiroot@machine:/proc/device-tree/soc/spi@1c68000# ls
'#address-cells' clocks dmas pinctrl-0 resets
'#size-cells' compatible interrupts pinctrl-names status
clock-names dma-names name reg
在/sys/bus/spi/devices/中也没有设备,但是在/sys/bus/spi/drivers/中有spidev出现。
root@machine:/sys/bus/spi/devices# ls
root@machine:/sys/bus/spi/devices# cd ../drivers
root@machine:/sys/bus/spi/drivers# ls
spidev
root@machine:/sys/bus/spi/drivers# cd spidev/
root@machine:/sys/bus/spi/drivers/spidev# ls
bind uevent unbind
请问是我的dts设备树文件或者编译选项有什么错误或者缺少的地方吗?
嗯 问题好像解决了 我把spidev作为一个模块编译了一遍"CONFIG_SPI_SPIDEV=m", 然后手动"insmod spidev.ko",现在“spidev0.0”设备出现了,还没有测试。
为什么将“spidev"编译进内核,"spidev"不会自动加载呢?不太懂。
最近编辑记录 Arkanee (2021-07-21 18:05:57)
离线