У нас есть система, основанная на плате US15W Q7 от Atom Z510/Intel SCH (под управлением Debian Linux). Нам нужно передать блоки данных с устройства на шине подсчета Low Pin Count. Насколько я знаю, этот чипсет не предоставляет возможности DMA, то есть процессор должен считывать данные из байта за раз в программном цикле. (Драйвер устройства на самом деле реализует это с помощью инструкций x86 "rep insb", поэтому цикл действительно реализуется CPU, если я правильно понимаю.)
Это далеко не оптимально, но должно быть возможно достичь скорости передачи 14 Мбит/с. Вместо этого мы с трудом можем управлять 4 Мбит/с с транзакциями на шине не ближе, чем на 2 раза друг от друга, хотя каждое чтение на подчиненное устройство выполняется в 560 нс. Я не считаю, что другой трафик на автобусе виноват, но я все еще расследую.
Мой вопрос:
Кто-нибудь знает, есть ли какие-либо регистры конфигурации в SCH, которые могут повлиять на синхронизацию шины LPC?
Я не могу найти какую-либо полезную информацию на устройстве на веб-сайте Intel, и я не заметил ничего в коде ядра Linux, который, кажется, возится с любыми такими реестрами (но я - noob, когда он попадает в материал Linux Kernel.)
Я не эксперт x86, поэтому любые другие факторы, которые могли бы вступить в игру, или любые другие "военные истории", относящиеся к этому устройству, было бы полезно узнать и о них.
Изменить: Я нашел datasheet. Я ничего не видел в этом, что объясняет это поведение, но я изучаю возможность сопоставления нашего устройства в качестве прошивки, поскольку циклы микропрограммного обеспечения, похоже, не те же задержки.