gpt4 book ai didi

embedded - Poulsbo 系统 Controller 集线器 (US15W) 中 LPC 总线的配置寄存器

转载 作者:行者123 更新时间:2023-12-04 02:28:17 26 4
gpt4 key购买 nike

我们有一个基于 Atom Z510/Intel SCH US15W Q7 卡(运行 Debian Linux)的系统。我们需要从低引脚数总线上的设备传输数据块。据我所知,该芯片组不提供 DMA 功能,这意味着处理器必须在软件循环中一次读取一个字节的数据。 (设备驱动程序实际上是使用“rep insb”x86 指令实现的,所以如果我理解正确的话,循环实际上是由 CPU 实现的。)
这远非最佳,但应该可以达到 14Mb/​​s 的传输速率。相反,即使对从设备的每次读取都是在 560ns 内完成的,我们也几乎无法管理 4Mb/s 的总线事务,而总线上的事务相距不超过 2us。我不认为巴士上的其他交通是罪魁祸首,但仍在调查中。
我的问题是:

Does any one know if there are any configuration registers on the SCH that could affect the LPC bus timing?

I cannot find any useful information on the device on the Intel website, nor have I spotted anything in the Linux Kernel code that appears to be fiddling with any such registers (but I'm a noob when it come to Linux Kernel stuff.)


我不是 x86 专家,因此任何其他可能起作用的因素或与此设备相关的任何其他“ war 故事”也很值得了解。
编辑:我找到了 datasheet .我没有看到任何解释这种行为的内容,但我正在研究将我们的设备映射为固件设备的可能性,因为固件总线周期似乎没有遭受相同的延迟。

最佳答案

作为记录,解决方案是修改 FPGA 固件,将芯片的数据输入/输出寄存器映射到四个相邻的地址,并将驱动程序修改为执行 32 位输入/输出指令。尽管 SCH 没有实现 32 位 LPC 读/写操作,但结果是 4 个背靠背的 8 位操作,其后的死区时间与我之前获得的单个字节相同,这意味着它平均每字节大约 1us。不理想,但吞吐量仍然翻了一番。

它发现固件周期更快,因为 SCH 一次从固件闪存传输 64 个字节 - 在 64 个字节之后有相同的 1.4us 间隙,表明这是设备的每个事务延迟。利用这一点可能比上述解决方案略快,但权衡是它被限制为 64 字节块,并且由于执行固件读取所需的额外周期,每个字节需要更长的时间 (680ns IIRC)。

关于embedded - Poulsbo 系统 Controller 集线器 (US15W) 中 LPC 总线的配置寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com