概述
常见问题5.1【现象】:启动过程中 SPI 总线驱动有错误信息提示:sunxi_spi_request_gpio()1238 - SPI0 pinctrl_lookup_state() failed! return ffffffedsunxi_spi_hw_init()1336 - [spi-0] Request GPIO failed!【原因分析】:
1)首先确认 pinctrl 模块的初始化是否成功;
2)然后,再核对 sys_config.fex 中 SPI 控制器的 GPIO 配置是否正确,可以参考 SOC 的 pinmultiplex 文档。IO 口有复用的情况需要与硬件确认。
5.2【现象】:SPI 设备驱动的 probe 函数没有执行【原因分析】:确认下面几点:
1) SPI 总线驱动的初始化是否成功,在内核启动信息中搜索关键字“sunxi_ spi_init”;
2) SPI 设备驱动的 init 函数是否执行;
3) probe 函数是否注册到 spi_driver 结构中;
4) sys_config.fex 中的 SPI 控制器是否使能;
5) sys_config.fex 中的 spi_devices 是否正确配置,其中的 bus_num 很重要,需要和硬件核对后正确填写;chip_select 不能超过所属 SPI 控制器的片选总数;
6) sys_config.fex,sys_board 中的 modalias 是否和 SPI 设备驱动中的设备 ID 信息一致。
5.3【现象】:大数据量传输时出错【原因分析】:SPI 总线驱动中考虑 FIFO 的大小,如果一次传输数据大于 64 就会启用 DMA来搬运数据。可以调整数据的读写粒度,使其小于等于 64,查看是否能够成功读写,这样能够排除 DMA 的潜在原因。
5.4【现象】:只有少量数据量正常【原因分析】:有可能是模组与主控的时序要求不一致,可以尝试调整 CLK 频率进行通信。
调试方法SPI 总线驱动通过 sysfs 节点提供了几个在线调试接口:
6.1 /sys/module/spi_sunxi/parameters/debug_mask此节点文件的功能是打开调试信息。缺省值是 1,只会打印出错的提示信息(如果是 0,出错信息也不会打印 )。
打开调试信息的方法:echo 3 > /sys/module/spi_sunxi/parameters/gs_debug_mask关闭调试信息的方法:
echo 1 > /sys/module/spi_sunxi/parameters/gs_debug_mask
6.2 /sys/devices/platform/spi.0/info此节点文件可以打印出当前 SPI 通道的一些硬件资源信息。
6.3 /sys/devices/platform/spi.0/status此节点文件可以打印出当前 SPI 通道的一些运行状态信息,包括控制器的各寄存器值。
最后
以上就是小巧电灯胆为你收集整理的Allwinner SPI 驱动的使用和调试方法的全部内容,希望文章能够帮你解决Allwinner SPI 驱动的使用和调试方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复