|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 28, 2004 21:35:51 Люди добрые, помогите Подскажите чем эти штуки отличаются, если ли разница в низкоуровневом программировании (на уровне ядра ОС) этих чудо спецификаций. И вообще как программно определить что за контроллер у меня (разумеется не используя всякие Device manager в Форточках, а например через Функции PCI BIOS....) Вобщем смысл такой - По книжке Кулакова - Программирование на аппаратном уровне, разбирался и писал программку работы с USB в DOS`е, но как и его пример мой тоже работать не захотел, вот и решил разобраться в чем дело, на пути столько документации попалось, спецификаций по этому USB - что даже не знаю что есть что, и для чего оно нужно. Начал читать одно, потом посмотрел в другую спецификацию - а они вроде отличается (немного другая структура дискрипторов...) - вот и возник вопрос - как определить что у меня за контроллер что бы программить его по нужной спецификации. Сочту за честь увидить не только ответы, но и ссылки на документацию по этому вопросу (определения "типа" контроллера) Заранее благодарю |
|
|
Дата: Авг 1, 2004 14:58:36 Видать очень нужно если на нескольких форумах абсалютно одинаковые темы Сначала определяеш хост котроллер - по класскоду - пом инецилизируеш - настраиваеш - буфер кадров - и готовиш дескрипторы - примеры кулакова работают - только там есть пара ошибок Вот тебе таблица клас кодов - маленькая правда, если перебарю лень то напишу о всём с чем я разобрался - удачи _1561871049__Class_Code_Tables.zip |
|
|
Дата: Авг 3, 2004 18:58:54 Спасибо тебе Same, хоть ты откликнулся Но дело в том что изучая Спецификации USB и PCI - я сам определил какие классы устройств надо искать, как организована работа с УСБ - смысл (просто оно никак не хочет работать) Но у меня ощущение такое что уже скоро заработает (Я нашел УСБ контроллер (у меня он Intel, значит UHCI), начинаю нумеровать, создавая TD на который указывает QH (для Setup-пакета) и на QH указывает FrameBufferAddr. Но здесь я пока точно не разобрался как отслеживать что мой ТД обработан, и что нумерация прошла.... Короче разбираюсь потехонечку, пока все молчали - смирился с мыслью что придется все самому делать, и делаю :)... PS: в спецификации pci22.pdf - больше классов описано :) (стр.257) (хотя по УСБ - всего лишь 6) Буду рад с тобой побеседовать на эту тему когда разберусь. Интересно всякие штуковины узнать которые пропустил.... |
|
|
Дата: Авг 10, 2004 18:11:13 Same Где же ты :*) не мог бы поделиться примерчиком (работающем) А то у меня что то не получается 1. Инициализировал FrameList, записал туда адрес QH (со сброшенным битом T) 2. Инициализировал QH установив бит T в заголовке указателя на следующий QH и указав адрес первого TD (и сброшенный бит T) (указатель по вертикали) 3. Инициализировал 4-е штуки TD -- указав TD1 адрес дискриптора SetAddress, размер передаваемых байт - 7 (8-1), PID=2Dh (Setup), Установленным битом 23 регистра состояния и управления (Active), и указав следующим дискриптор TD2 -- TD2 - буфер приема (ответа), размер 7FFh (ноль), PID=69 (IN), и указывает на буфер, указывает на следующий TD3 -- TD3 - конфигурирование, указывает на дискпритор SetConfigure, размер 7 (8-1), PID=2Dh (Setup), указывает на следующий TD4 -- TD4 - буфер (ждемс ответ), установлен бит T, размер 7FFh, PID=69h, указывает на буфер Так вот после включения RS (бит в регистре USBCMD), номер фрейма увеличивается, но в дискрипторах бит 23 регистра состояния не изменен (то есть он все еще Activate) Вот не знаю что я делаю не так, пробовал создавать Изохронную передачу, без QH, указывая только каждой записи в фрейм листе свой TD, тогда вроде бит 23 - Activate сбрасывался, но по спецификации я понял что для Нумерации устройств (то есть для Конфигурирования) использовать изохронную передачу нельзя. Поможите люди добрые. Время поджимает а с этой какой уже долго вожусь, хотябы намекните как надо правильно делать, или уж если в лом писать - поделитесь каким нибудь примерчиком который точно работает. (Кстате нашел в ядре Линуха исходники с описанием всех классов PCI, и хозяинов DeviceID и названиями - дохрена всего....) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.059 |