您好!
我的客户写道:
对 AM335x SPI 接口有一点背景知识。
我们正在使用 SPI1接口的“主同步发送和接收模式”来连接 FPGA。 因此、MOSI 和 MISO 线路在 SPI 事务期间与 AM335x 输出时钟完全同时处于活动状态。 这当然会使 FPGA 读取变得有点困难、因为数据基本上必须在 SPI 事务开始时立即准备就绪、 因此,我一直在使用不同的 SPI 速度和 SPI 字位长度来将时间累积到周期中,以便能够实时返回读取的数据。 在过去的电路板开发过程中,我们在 SPI (硬件和 Linux)方面遇到了很多早期开发问题,但现在我们正在清理问题,并尝试提高性能,以便加快网络速度。
使用 Linux SPIDEV,我们已经尝试了 SPI 性能,并且能够使 SPI 块写入工作,以便通过 SPI 将数据包写入 FPGA,但无法使 SPI 块读取工作, 我认为这在考虑之后是合理的、因为通过 MISO 线路读回 AM335x 的数据必须通过 MOSI 线路同时驱动、因为这两条线路在主 TX/RX 模式下同时处于活动状态。 我们的 Linux 固件示例表明、存在某种可以解决此问题的同步块读取/写入功能;但是、我们尚未实现的内核版本4.1.18支持此功能。
因此、我认为固件在块读取期间会执行虚拟块写入、以便将读取的数据驱动回 AM335x、作为块读取。 这似乎会给同时在两个方向上运行块式事务的 SPI 控制器带来瓶颈、但可能会起作用。
问题是、我们在这里是否处于如何通过 SPI 从 FPGA 进行块读取的正确轨道? 如果有更好的方法来提高 SPI 在两个方向上的性能、我们不希望走得太远。 更新到较新版本的 Linux 是否可以为我们解决此问题?
是否有关于内核迁移或通过 SPI 进行块读取的最佳方法的建议?
谢谢! Blake

