現在、i.MX8MM ECSPI SlaveをPIOモードで使用しています。
問題は、スレーブ モードでは、バースト長が 512 バイトに制限されているように見えることです。
PIOモードの代わりにDMAモードを使用すると送信データサイズの制限がなくなるかどうかは明らかではありませんが、カーネルパッチを適用してDMAモードを使用してみました。
スレーブモード(DMA使用)でSPIデータの送受信に関するサンプルコードや資料は入手できますか?
私はAN13633のドキュメントを参照していますが、他の役立つリソースがあればコメントをいただければ幸いです。
i.MX8MMでのECSPIのDMAモードの実装に関する特定のリソースやドキュメントを見つけるのを手伝ってほしい場合は、お知らせください。
迅速な対応ありがとうございました。
よい一日を。
もう一度確認し直して、この制限はHWの制限であり、ANがリリースされ、古いbspに基づいて、新しいbspはHWの制限のために512バイトの制限を追加するため、これを削除することはできませんでした、スレーブモードを使用したい場合は、imx8mm ecspiがこれをサポートできなかったようです(512バイトの制限はありません
ご返信ありがとうございます。
でも、君が何を言っているのかよくわからなかった。
カーネル コードで 512 バイトの制限に注釈を付けると、SPI スレーブ モードで 512 バイト以上を転送できるということですか。
if ((is_imx51_ecspi(spi_imx) || is_imx53_ecspi(spi_imx)) &&transfer->len > MX53_MAX_TRANSFER_BYTES & spi_imx->target_mode) {
dev_err(spi_imx->dev, "トランザクションが大きすぎます。最大サイズは %d バイトです\n",
MX53_MAX_TRANSFER_BYTES);
-EMSGSIZEを返します。
}
ドライバーを再度確認しましたが、制限は
https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/drivers/spi/spi-imx.c#L1492
これをテストしたい場合は、詳細なユーザーケースに基づいてテストする512制限をコメントできます
DMA / PIOモードには512の制限があり、DMAには4バイトのアライメント制限があることを確認しましたので、以前に送信したパッチを参照できます
迅速な返信ありがとうございます。
ええ、DMAにもこの制限があります
返信ありがとうございます。
DMAモードには転送サイズの制限がないと思って、DMAモードを有効にしようとしていました。
リンクされたドキュメントに基づいて、PIO モードと DMA モードの両方に転送データ サイズに 512 バイトの制限があるということですか?
AN13633、DMAサポートについては、ご要望に応じた非常に詳細なアプリケーションノートであり、以下のようにパッチを参照することもでき、また、 エラッタからのERR003775
LF-6680 spi: imx: ターゲットモードのdmaサポートを追加 ·nxp-imx/linux-imx@1aef8ed ·GitHubの