我们有一个基于Atom Z510 / Intel SCH US15W Q7卡的系统(运行Debian Linux)。我们需要从Low Pin Count总线上的设备传输数据块。据我所知,这个芯片组不提供DMA功能,这意味着处理器必须通过软件循环逐字节读取数据。(如果我理解正确,设备驱动程序实际上使用“rep insb” x86指令来实现这一点,因此循环实际上是由CPU实现的。)
尽管每次对从设备的读取在560ns内完成,但我们只能以低于14Mb/s的速率进行传输,而且总线上的事务之间距离不得少于2us。我不认为总线上的其他流量有问题,但仍在调查。
我的问题是:
编辑:我已经找到了datasheet。我没有在其中发现任何解释这种行为的东西,但我正在调查将我们的设备映射为固件设备的可能性,因为固件总线周期似乎没有遇到同样的延迟问题。
尽管每次对从设备的读取在560ns内完成,但我们只能以低于14Mb/s的速率进行传输,而且总线上的事务之间距离不得少于2us。我不认为总线上的其他流量有问题,但仍在调查。
我的问题是:
我不是x86专家,因此任何可能影响或与该设备相关的其他因素或“战斗故事”也很重要。是否有人知道SCH上是否有任何配置寄存器可以影响LPC总线定时?
我在Intel网站上找不到有用的信息,也没有发现Linux Kernel代码中有任何调整这些寄存器的东西(但我在Linux Kernel方面还是个新手)。
编辑:我已经找到了datasheet。我没有在其中发现任何解释这种行为的东西,但我正在调查将我们的设备映射为固件设备的可能性,因为固件总线周期似乎没有遇到同样的延迟问题。