最近给 V3S开发板 添加spi flash 芯片并从nor flash启动的时候出现了下面这种报错,
sun6i-spi 1c68000.spi: chipselect 0 already in use
spi_master spi0: spi_device register error /soc/spi@1c68000/xt25f128b@0
spi_master spi0: Failed to create SPI device for /soc/spi@1c68000/xt25f128b@0
如下图所示
sun8i-v3s-licheepi-zero.dts当中是配置了spi的设备树的
刚开始以为是linux 内核代码出了问题,里面有bug,后来换了一个版本的内核源码,发现没有这个问题,确定硬件没有问题,并且给旧的源码更换了正常运行的内核的sun8i-v3s-licheepi-zero.dts,结果还是出现设备树文件 chipselect 0 already in use这个错误,于是钻研了很久,以为chipselect 0 该设备已经被占用,肯定是设备树出了问题,内核在启用驱动设备的过程中已经占用了chipselect 0
找到打印一下这个的地方
spi_master spi0: spi_device register error /soc/spi@1c68000/xt25f128b
spi_master spi0: Failed to create SPI device for /soc/spi@1c68000/xt25f128b
如下图
于是琢磨在这加打印看一下到底是哪个设备占用了 spi chipselect 0
打印没有加成功,加上有别的事情这个问题就先挂着了 。
后来因为是加网卡设备的时候找到了sun8i-v3s.dtsi这个文件
打开这个文件发现里面别有洞天,里面也有spi0设备树,原来这是在头文件里配置设备树
发现里面有设备树小节点,将其注释
make clean 之后make 再烧录内核和设备树
chipselect 0 already in use这个打印已经消失,取而代之的是如下打印
成功挂载spi flash ,并进行了分区,折腾我三个星期多的问题得到了解决,总算可以进行下一步了。