
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Страницы: (51) « Первая ... 17 18 [19] 20 21 ... 50 51 ( Перейти к последнему сообщению ) |
Сообщ.
#271
,
|
|
|
Цитата Пробовал в EHCI в регистре USBLEGSUP (EECP+0x00) снять бит 16 (HC BIOS Owned Semaphore) и выставить бит 24 (HC OS Owned Semaphore), либо вообще нулить весь регистр. этот бит - семафор. Поскольку контроллер EHCI всего 1 а при этом ОС или твой драйвер с одной стороны и BIOS c с другой хотят использовать данный контроллер вместе то необходим механизм синхронизации, чем в данном случае и является этот семафор. Если биос занял контроллер,то твой драйвер должен запросить у биоса контроллер и далеко не факт что биос тебе его отдаст. У меня например если включена Legacy то биос не хочет отдавать управления и я следовательно не могу работать с EHCI. |
Сообщ.
#272
,
|
|
|
Цитата uchtinka @ У меня например если включена Legacy то биос не хочет отдавать управления и я следовательно не могу работать с EHCI. Ну это как-то врядли... Под Windows ведь всё работает? Если да, то должно управление забираться. Драйвера Windows его точно так же забирают. |
Сообщ.
#273
,
|
|
|
Управление конечно можно забирать принудительно но это некорректно вообще-то. Я посмотрю спецификацию и точно скажу.
|
Сообщ.
#274
,
|
|
|
USB Legacy Support EHCI Extended Capability Register -используется для согласования работы драйвера и BIOS через контроллер EHCI.(из спецификации)
Вот как нужно правильно перехатывать управление у BIOS ![]() 1. читаем EHCI Extended Capabilities Pointer (EECP). если EECP не 0 то нужно перехватить управление контроллером у BIOS, поскольку он его занял. 2. читаем USB Legacy Support EHCI Extended Capability Register. 3. смотрим Capability ID если там не 1(A value of 01h identifies the capability as Legacy Support.) то нужно сместится на следующую запись для чего используем поле Next EHCI Extended Capability Pointer. 4. Итак нашли. Здесь Capability ID = 1. 5. Читаем регистр USBLEGCTLSTS - USB Legacy Support Control/Status для данной записи 6. Устанавливаем 13-й бит SMI on OS Ownership Enable в этом регистре и 7. Устанавливаем 24-й бит HC OS Owned Semaphore в USBLEGSUP, посылая тем самым запрос на захват управления. 8. Читаем в цикле 16-й бит HC BIOS Owned Semaphore и ждем пока запрос выполнится и BIOS освободит контроллер сбросив свой семафор. (100-500 попыток через 10 мс) 9. Если биос сбросил семафор -то все нормально. А потом можно - сбрасываем командный регистр (снимаем ресет) - запрещаем все прерывания - отдаем управление контроллерам-компаньонам - сбрасываем контроллер ну а дальше по порядку Вроде все мог конечно где-то ошибиться. Строго не судите ![]() Добавлено Можно конечно этого и не делать ![]() |
Сообщ.
#275
,
|
|
|
Ну так а у тебя на каком этапе неправильно выполняется?
Вообще говоря после того как ты выполнил эту процедуру и BIOS не отвечает, можно смело сбрасывать контроллер и делать что хочеш... |
Сообщ.
#276
,
|
|
|
Цитата Ну так а у тебя на каком этапе неправильно выполняется? BIOS Не выставляет бит HC BIOS Owned Semaphore. Но это происходит только тогда, когда включена в биосе Legacy и мы когда перезагружаемся не вытаскиваем флешку! Т.е. биос выполняет свою инициализацию контроллера и все - не хочет его отдавать. А так если в порте нет устройства - то все нормально проходит. Цитата Вообще говоря после того как ты выполнил эту процедуру и BIOS не отвечает, можно смело сбрасывать контроллер и делать что хочеш... Вообщем я так теперь и делаю, но у меня ведь была задача не отрубать bios полностью, поскольку нужно было продолжить загрузку. Впрочем мне gerret подкинул неплохую идею на счет загрузки. Надо будет ее проверить. |
Сообщ.
#277
,
|
|
|
Доброго всем времени суток.
К сожалению, сайт www.t10.org с недавнего времени стал предоставлять спецификации только своим членам... Может быть, кто-то знает, откуда ещё можно достать протокол SCSI (точнее, ту его версию, на которой хост общается с флешками)? Гугл от меня отвернулся... Если у кого-то она под рукой, слёзно прошу скинуть: reineke@bk.ru Заранее спасибо. |
Сообщ.
#278
,
|
|
|
Там есть доступ и для гостей, просто к этому документу доступа нет.
Раньше это был черновик, и разрешали качать всем. А теперь они его опубликовали как стандарт и денег хотят. Вот та версия которую я скачал когда был доступ (5.8Мб, rar): http://shareua.com/files/show/2337551/s2_r10l.rar.html http://dump.ru/file/1479283 На почту не шлю - может ещё кому понадобится. |
Сообщ.
#279
,
|
|
|
Огромное спасибо Сппазму и Геррету. *ушёл разбираться*
|
Сообщ.
#280
,
|
|
|
Здравствуйте программисты, скоро я стану одним из вас(3 курс Программное обеспечение автоматизированных систем), но вот столкнулся с такой проблемой, есть некий Кристалл машина плазменной резки металла, так вот очень хочу сделать возможность подключать к нему ЮСБ флешку, для занесения заказов в компьютер, рабочая программа запускается из под ДОС 6,22 (программу я успешно русифицировал) вот осталось только флешку прикрутить. Сам компьютер сделан на базе Одно платного модуля процессор на нем 300 МГЦ в биосе видел ЮСБ, так что сейчас полностью скопировал программу и играюсь с ней на обычном компьютере, на мамке 440 BX и камень 433 МГц, на борту скорее всего УСБ1.1, я пробовал играться с драйвером USBASPI.SYS и MSCDEX.EXE при загрузке в Волком пытался с подключенной флешкой запускать MSCDEX и вроде как на экране писало что определило ВИД и ПИД устройства ну я и подумал что все ок, а диск не присваивает, возможно я много чего упустил, и не могу разобраться, задача сейчас чтоб при подключении флешки (во время загруженной программы не вызывая никаких дополнительных процедур) ей автоматом присваивался диск и в любой момент можно было к нему обратиться - такое возможно?
|
Сообщ.
#281
,
|
|
|
MSCDEX нужен только для CD-ROM, у тебя же флэшка обычная?
Попробуй эти драйвера (во вложении). В config.sys добавь: ![]() ![]() devicehigh=a:\sys.drv\aspiohci.sys /int /all /reset devicehigh=a:\sys.drv\aspiohci.sys /int /all /reset /d1 devicehigh=a:\sys.drv\aspiohci.sys /int /all /reset /d2 devicehigh=a:\sys.drv\aspiohci.sys /int /all /reset /d3 devicehigh=a:\sys.drv\aspiuhci.sys /int /all /reset devicehigh=a:\sys.drv\aspiuhci.sys /int /all /reset /d1 devicehigh=a:\sys.drv\aspiuhci.sys /int /all /reset /d2 devicehigh=a:\sys.drv\aspiuhci.sys /int /all /reset /d3 devicehigh=a:\sys.drv\aspidisk.sys Пути к драйверам поменяй на свои. Прикреплённый файл ![]() |
Сообщ.
#282
,
|
|
|
Доброго всем времени суток.
Вот, в процессе изучения Mass Storage протокола наткнулся на шикарную книженцию: Jan Axelson USB Mass Storage: Designing and Programming Devices and Embedded Hosts Lakeview Research, 2006 Там есть натурально ВСЁ - от ликбеза по USB до структуры FAT16 и FAT32. Ничего лишнего, объём сравнительно небольшой (300 стр крупным и разреженным шрифтом). Всё очень внятно и ясно. Смысл такой: человек, никогда в жизни не имевший дела ни с USB, ни с носителями данных, практически никуда больше не заглядывая, получает к концу прочтения книги исчерпывающую информацию о всех уровнях программирования флешки (от физического до файлового). Может статься, большинство из вас её знает и считает ознакомление с ней само собой разумеющимся началом для USB-программера, но вдруг на этот пост наткнётся кто-то, кто об этой книжке не слышал. |
Сообщ.
#283
,
|
|
|
Я думаю о ней большинство не слышало
![]() Просто на FAT16/FAT32 есть официальная открытая спецификация, на USB и Mass Storage Class - тоже. В основном этими документами и пользуются - как-никак первоисточник. А книжку я гляну - если в электронном виде найду. Интересно посмотреть ![]() |
Сообщ.
#284
,
|
|
|
cppasm спасибо большое за архивчик, я завтра обязательно попробую, у меня в наличии есть две флешки для экспериментов, одна из них SanDisk Cruzer 1CB USB2.0 так она имеет помимо флешки еще и сиди ром, у меня под win98 возникала проблема, и приходилось вообще выключать в системе этот сиди ром, чтоб флешка работала, а вторая просто флешка на 512мв, вот у меня какой вопрос: драйвер для доса имеет ограничение адресации пространства флешки? или можно использовать любую вплоть до 16GB?
|
Сообщ.
#285
,
|
|
|
Цитата -=Kasper=- @ вот у меня какой вопрос: драйвер для доса имеет ограничение адресации пространства флешки? или можно использовать любую вплоть до 16GB? Можно использовать флэшки любого размера. Ограничение ОС накладывает. DOS 6.22 FAT32 не поддерживает если я не ошибаюсь. А у FAT16 ограничение на размер раздела - 2Гб. Я точно не помню - но по-моему этот драйвер не поддерживает несколько разделов на флэшке. Для поддержки нескольких разделов был другой драйвер какой-то. В общем чтоб работало - у тебя флэшка должна быть отформатирована в FAT16. Или DOS поновее взять - у меня с MS-DOS 7.11 (от Win98SE) FAT32 нормально работает. Проверялось вплоть до 4Гб. |