Smail522 0 6 октября, 2009 Опубликовано 6 октября, 2009 (изменено) · Жалоба Когда используется режим DMA, контроллер выступает мастером на обоих шинах: Локальной и PCIe. Если внешнее устройство на Локальной шине является мастером, то это устройство может записывать напрямую в память в cont. Burst перебирая адрес, без всяких "переинициализаций DMA" - хоть Block, хоть SGL. (Хотелось бы даже записывать в другое устройство на шине, например в RAID ). Т.е. попытаться сделать как вы говорили: "1 сплошной трансфер". При такой схеме надо будет отслеживать Ready. Это у меня такое мнение создалось :-) , поэтому на истину не претендую, даже скорее наоборот, прошу совета. Запустить в режиме DMA не составило труда. Даже запись конф. регистров с Локальной шины получилась :-) , а вот что то с настройкой Direct Master регистров для записи в память разобраться не могу. Как сопоставить Локальный адресс с адресом PCI? Т.е. Грубо говоря, выделил блок памяти, знаю его физический адрес, отобразил на логический. Что надо сделать, что бы Direct Master записал что-нибудь именно в этот участок? пусть даже хоть как-нибудь, хотя бы одно словечко. :-) Изменено 6 октября, 2009 пользователем NahaL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 6 октября, 2009 Опубликовано 6 октября, 2009 · Жалоба 2 NahaL - на счёт Как сопоставить Локальный адресс с адресом PCI? Вы скачали ДДК и всё прилагающееся к чипу со стороны ПК с сайта PLX ? Там пример есть у PLX - по нему легко научится. Я сам не программил серЙозно это чЮдо со стороны ПК, были программисты, я только самаую малость с ним возился со стороны ПК. На сколько я помню в наборе всякого кода от PLX функция была - записать/прочитать данные, и в нём один из параметров как раз адрес что я видел у себя на локальной шине. Вот как то так... На счёт скорости вообсче - вы видели что есть чип ? - это спайка 2-х уже имевшихся чипов , там взаимодействие между ними через фифошки организовано, то есть быстрей чем забирает PCIe часть вы ложить не сможете всё равно каким макаром ( на 150МГц он у вас уже будет при любой записи в него (в смысле был ли дма запрос вашей логики прочитать с неё данные или нет ) притормаживать - как раз за счёт перехода данных через эти фифошки - это как бы ответ самому себе на пост выше B) ). Мы использовали ДМА потому что сначала думали что это как бы забор данных сразу всего и без остановок на перекур :angry2: .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smail522 0 14 октября, 2009 Опубликовано 14 октября, 2009 (изменено) · Жалоба Если рассматривать чип как мост, коим он и является, то как раз и менее скоростным и является PCIe интерфейс( пиковая скорость 250 Мб/с, в то время как у локалбной шины скорость 264 Мб/с (Мб с смысле 10^6 :-) ). Так зачем в таком случае занимать шину PCIe всякими дескрипторами DMA(будь-то SGL или переиниц. Block). Можно завести дескрипторы в памяти со стороны Локальной шины. Так всё и собираюсь попробовать, только даст ли это прирост скорости, на этой недели хочу и узнать. Сомнения вызывает то, что происходит переинициализация DMA через каждые 4Мб данных: и запись пары регистров - капля в море(только вопрос времени... :-) ) И еще... Если на одну шину "повесить" две платы с мостом PEX8311, то между ними можно обмениваться без участия процессора и оперативной памяти. С этим всё понятно. Значит и можно обмениваться м/у мостом и другим устройством, например RAID, видеокарта и т.д. Только как узнать физический адреса буфера в памяти "стандартного" устройства, который используется в пользовательской программе? Изменено 14 октября, 2009 пользователем NahaL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба 2 NahaL - я вообсче то привязывался к конкрентой архитектуре - судя по всему на время отгрузки данных с фифо - чип взводит сигнал что он не готов.. и пока не отгрузит сколько нужно - не опустит его - я про эту задержку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smail522 0 15 октября, 2009 Опубликовано 15 октября, 2009 · Жалоба В том то и дело: получается если ФИФО на чтение из устройства занято(full), то чип производит "отгрузку" данных через шину PCIe. в это время Локальная шина свободна? и можно в это время через неё записывать регистры моста? или чип скажет что он занят? А кто что скажет по поводу записи из одного устройства в другое на шине? Какие есть мнения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ambrosix 0 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба Тоже работаю с PEX 8311. Необходимо через альтеру согласовать host port сигналника(BF) с PCIe. С программкой PLXMon все работает. Транзакции идут с большими промежутками. НО теперь требуется работать с аналогом этой программы,написанной другими товарищами. Так вот эта программка до 8ми слов подряд читает нормально. Но если запросить больше, то она слепляет транзакции в пачки, расстояние между ними можно регулировать только READY. И читает как то странно. То пропускает пару слов, то повторяет. А главное я не могу понять, в каком режиме PEX работает вообще(( Никто не поможет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться