Armadilloフォーラム

SPIのDMA転送について

sudohayato

2017年6月22日 18時07分

お世話になっております。須藤と申します。

Armadillo-420を用いて下記条件で通信を行っているのですが、
データ取得に220us程度かかっております。
 通信方式:SPI
 通信速度:10Mbps(対抗側の都合)
 取得データサイズ:7byte

想定ではもっと高速でデータ取得できると思っていましたが、
高速化と平行して取得側のスレッド化を検討しておりDMA転送を使用したいと考えております。
IMX25のSPIはDMAが有効のようですが、Armadillo のSPIドライバ(spi-imx)の
コードを見る限りでは、DMAのコードが盛り込まれていません。

以下のSPIドライバ(spi-imx)の最新ではDMAをサポートしています。
http://lxr.linux.no/linux+v4.10.1/drivers/spi/spi-imx.c
・パッチ
 http://lists.infradead.org/pipermail/linux-arm-kernel/2014-January/2255…

以下、教えてください。
・Armadillo-420のSPIでDMAは使用可能でしょうか?
 使用可能であればパッチなどはありますでしょうか?

・ArmadilloのSPIドライバはアットマークテクノで独自に
 改良を加えているのでしょうか?
 上記URLのSPIドライバに置き換えても問題ないのでしょうか?

以上、よろしくお願いいたします。

コメント

お世話になっております。須藤です。

調査状況を補足いたします。

ArmadilloのSPIドライバにDMAの処理を追加したコードで動作確認をしてみました。
SPIドライバ(spi-imx.c)がDMAをサポートしたのはv3.18のようですが、そのコミット文を見るとi.mx6向けのようです。
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/comm…

i.mx6では、Device Tree(DTS)でDMAのEnable/Disableが出来るようですが、
armadillo-420 で同様なことをするにはどのファイルを修正すれば良いでしょうか?
そもそも、armadillo-400はDTSは使用していないのでしょうか?
DTSを使用していない場合の代替手法はありますでしょうか?

以上、よろしくお願いいたします。