2

我有一个在 NXP 的 Imx6 SoC 上运行的嵌入式 linux 项目,我正在尝试使用它的 SPI。由于没有同时支持主从模式的驱动程序,我首先尝试从用户空间自己处理。我使用 mmap 访问 SPI 的寄存器,但是当我尝试使用 mmap 读/写它们时,系统挂起,我必须重新启动。然后我在自定义 spi-imx 驱动程序中做了同样的事情,但我必须等待驱动程序到达函数 spi_imx_transfer 才能被允许访问寄存器。

我对 linux 设备管理很陌生,所以想知道为什么用同样的方法我可以访问其他设备的寄存器,但不能访问 SPI 的寄存器。 当我尝试读取这些寄存器时,为什么 linux 会挂起? 是否可以从用户空间或更早的设备驱动程序中读取或写入它们?

有没有一种方法可以允许(或解锁?)访问寄存器?

任何的建议都受欢迎。

4

1 回答 1

0

这不是 linux 问题:ECSPI 时钟被禁用。因此,我只需在访问 SPI 的寄存器之前将正确的寄存器设置为 1(使用 mmap)。

于 2017-02-17T08:41:13.973 回答