我直接采用的spi-omap2-mcspi驱动,然后按照例程里面spidev_test.c里面的例子做spi通信测试
在收发数据的数量比较少的时候,没问题
但是数据量较大的时候,就卡住了
后来不断的查,发现如下代码:
if (m->is_dma_mapped || t->len >= DMA_MIN_BYTES)
count = omap2_mcspi_txrx_dma(spi, t);
else
count = omap2_mcspi_txrx_pio(spi, t);
宏定义里面DMA_MIN_BYTES = 160,也就是说小于160个字节的时候,用 omap2_mcspi_txrx_pio(spi, t)传输数据是没有问题的,
但是当大于160字节的时候,用omap2_mcspi_txrx_dma(spi, t)就有问题了
继续追踪到omap2_mcspi_txrx_dma(spi, t)里面后发现,
程序卡在wait_for_completion(&mcspi_dma->dma_rx_completion)这里了
也就是一直处于等待状态,这个问题该如何解决呢?
另外,关于DMA的驱动,相关实现文件都在什么地方呢?找了好久都没有找到