
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.218] |
![]() |
|
Страницы: (51) « Первая ... 37 38 [39] 40 41 ... 50 51 ( Перейти к последнему сообщению ) |
Сообщ.
#571
,
|
|
|
Это так: получаешь физические адреса всех страниц и заполняешь ими соответствуюшие структуры контроллера. Именно так всегда и делается. |
Сообщ.
#572
,
|
|
|
Какие структуры, оооо как всё запущено. Ты о чём вообще?
|
Сообщ.
#573
,
|
|
|
Цитата StasNewOs @ Какие структуры, оооо как всё запущено Зарпущено, по видимому, все у тебя раз в процессе копипастинга примеров в свои сорцы ты так и не удосужился посмотреть как это работает. Конкретно у хост-контроллеров это ТД, у IDE это PRDT, у GPU вообще свой аналог виртуальной памяти есть, и так далее для всех девайсов... |
Сообщ.
#574
,
|
|
|
Какой копипастинг, я понимаю что ты имееш в виду(хотя с трудом), но проблема в том, что во первых я говорил это же, во вторых то, что ты пытался сказать ни кто бы ни понял.
Ты видимо думаеш одно, а пишеш другое, причём путая определения и забывая печатать несколько слов. Или у меня плохо с пониманием, не знаю. |
Сообщ.
#575
,
|
|
|
Цитата StasNewOs @ что во первых я говорил это же Я просил вообще-то в чем смысл этого? Цитата StasNewOs @ во вторых то, что ты пытался сказать ни кто бы ни понял. Что я сказал не так? |
Сообщ.
#576
,
|
|
|
Цитата shm @ Это так: получаешь физические адреса всех страниц и заполняешь ими соответствуюшие структуры контроллера. Структуры ты имел в виду список команд, в которых адрес кластера(грубо говоря), который копируется в страницу реальной памяти. Во первых это все понимают, во вторых с твоих слов этого не понять, в третьих зачем делать такие непонятные ситуации и писать о том, что уже разобрали да и ещё так не понятно. |
Сообщ.
#577
,
|
|
|
Цитата StasNewOs @ Структуры ты имел в виду список команд В общем случае - нет. Я имел ввиду именно управляющие структуры девайсов, где заполняются адреса физической памяти (иногда и размер) для передачи данных по DMA. Мне всегда казалось, что человек работавший с "железом" без проблем должен был понять смысл той фразы без лишнего разжевывания. Короче завязывем с фоффтопом, если будут личные вопросы, то пиши в ПМ. |
Сообщ.
#578
,
|
|
|
Устройств с DMA очень много разных и по твоим словам у них у всех есть какие то тайные структуры, в которые можно забить адреса на каталоги страниц и их размеры, но только иногда и для передачи данных или смс. Это всё, что я к сожалению понял, видимо я тупой, ты меня в этом почти убедил, а может и наоборот.
|
Сообщ.
#579
,
|
|
|
Цитата StasNewOs @ Устройств с DMA очень много разных Но все совместимы c paging'ом. Цитата StasNewOs @ у них у всех есть какие Да. Цитата StasNewOs @ в которые можно забить адреса на каталоги страниц Где я что-либо писал про адреса на каталог страниц? Цитата StasNewOs @ но только иногда и для передачи данных или смс. ![]() Цитата StasNewOs @ Это всё, что я к сожалению понял, видимо я тупой, ты меня в этом почти убедил, а может и наоборот. Надо уметь слушать критику, тем более сам ввязался в разговор. Также не надо считать себя самым умным в споре, совсем недавно ты непризнавал вообще значимость paging'а а теперь уже расскуждаешь тут как эксперт. |
Сообщ.
#580
,
|
|
|
Цитата shm @ Это понятно, меня итересуют контретные значения. А сколько я потеряю в скорости если для каждой конечной точки будут постоянно висеть в списке свои QH. У меня складывается впечатление, что разработчики EHCI предполагали именно такую архитектуру. Сейчас у меня скороть работы с флешкой примерно такая же как в винде. Насчет архитектуры - да, я тоже так думаю. По всей видимости, предполагается постоянно существующая очередь QH, которые по мере надобности становятся то активными, то неактивными. А неактивные QH не должны существенно влиять на скорость передачи данных - потери там только на чтение их из памяти и проверку битов активности. Но сам лично я это не проверял. |
Сообщ.
#581
,
|
|
|
Цитата zakharo @ А неактивные QH не должны существенно влиять на скорость передачи данных - потери там только на чтение их из памяти и проверку битов активности. Но сам лично я это не проверял. Эх.. Ну может быть в перспективе попробую сам протестировать, т.к. так работать значительно удобнее. До этого меня по мимо лени останавливало предположение, что конролллер будет тратить микрофреймы на обход неактивных QH. |
Сообщ.
#582
,
|
|
|
Про устройства DMA могу сказать, что в простейшем случае у них есть один адрес памяти, и тогда мы должны работать внутри одной страницы, если конечно, не собираемся этот адрес все время менять. А контроллеру EHCI можно задавать 5 адресов разных страниц в каждом QTD и читать сразу 20 Кб информации в одном QTD.
Макс. длину КТ контроллер учитывает сам (она же задается в QH), то есть совершенно не обязательно делать свой QTD на каждые 512 байт. |
Сообщ.
#583
,
|
|
|
Я думаю, самое разумное (если позволяет память конечно), передавать массывы данных блоками по 16Кб на TD, т.к. адрес может быть не выравнен по странице. По крайней мере в таком варианте я получил вполне приемлемую (т.е. такую же как в винде
![]() Добавлено Кстати, вот по поводу "автоматического" разбиения всех данных по размеру КТ передаваемых через TD, тут есть интересный нюанс с контролем триггера данных, я по привычке (UHCI) после каждого TD инвертировал его и, когда стал передавать нечто большее размера конечно точки сталкнулся игнорированием конроллемром некоторых моих DT (причем меня удивил тот факт, что контроллер в такой ситуации не выставлял STALL и не стимал бит активности). Тепрь при формировании TD я просчитываю сколько раз конроллер инвертирует триггер. полностью аппаратный конроль DT смоя нынешняя архитекрура не позвляет, зато если все таки сделаю отдельный QH для каждой КТ, то будет самый идеальный вариант на мой взгляд. |
Сообщ.
#584
,
|
|
|
Конечная точка создать ничего не может, но может програмист сделать такую модель, что для каждой команды - своя QH. Если покажешь пруфлинки буду благодарен. Из чтения оф. доков мы с zakharo пришли к обратному мнению. |
Сообщ.
#585
,
|
|
|
Ну не знаю, а если например при работающих QH добавить ещё QH, то куда её лучше ставить в перёд или назад, и если удалить QH а соседние в это время работают, ничего страшного не случится?
Добавлено Я кстати писал, что этот вариант не плох, если с QH сохранять задачу(т.е. одна задача - одна QH) и страницу сразу освобождать с ней по завершении. |