我有一个在恩智浦的Imx6 SoC上运行嵌入式Linux的项目,我正在尝试使用它的SPI。由于没有支持主模式和从模式的驱动程序,我首先尝试从用户空间自己处理它。我使用mmap访问SPI的寄存器但是当我尝试用mmap读/写时,系统挂起,我必须重新启动。然后我在自定义spi-imx驱动程序中做了同样的事情但是我必须等待驱动程序到达函数spi_imx_transfer以允许访问寄存器。
我对linux设备管理很新,所以想知道为什么用同样的方法我可以访问其他设备的寄存器而不是SPI的寄存器。 当我尝试读取这些寄存器时,为什么linux会挂起? 是否可以从用户空间或设备驱动程序中更早地读取或写入它们?
是否有方法允许(或解锁?)访问寄存器?
欢迎任何建议。
答案 0 :(得分:0)
这不是linux问题:ECSPI时钟被禁用。因此,我必须在访问SPI寄存器之前将正确的寄存器设置为1(使用mmap)。