Когда используется режим DMA, контроллер выступает мастером на обоих шинах: Локальной и PCIe. Если внешнее устройство на Локальной шине является мастером, то это устройство может записывать напрямую в память в cont. Burst перебирая адрес, без всяких "переинициализаций DMA" - хоть Block, хоть SGL. (Хотелось бы даже записывать в другое устройство на шине, например в RAID ). Т.е. попытаться сделать как вы говорили: "1 сплошной трансфер". При такой схеме надо будет отслеживать Ready. Это у меня такое мнение создалось :-) , поэтому на истину не претендую, даже скорее наоборот, прошу совета.
Запустить в режиме DMA не составило труда. Даже запись конф. регистров с Локальной шины получилась :-) , а вот что то с настройкой Direct Master регистров для записи в память разобраться не могу. Как сопоставить Локальный адресс с адресом PCI? Т.е. Грубо говоря, выделил блок памяти, знаю его физический адрес, отобразил на логический. Что надо сделать, что бы Direct Master записал что-нибудь именно в этот участок? пусть даже хоть как-нибудь, хотя бы одно словечко. :-)
Сообщение отредактировал NahaL - Oct 6 2009, 02:51
|