На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (51) « Первая ... 17 18 [19] 20 21 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Цитата
    Пробовал в EHCI в регистре USBLEGSUP (EECP+0x00) снять бит 16 (HC BIOS Owned Semaphore) и выставить бит 24 (HC OS Owned Semaphore), либо вообще нулить весь регистр.


    этот бит - семафор. Поскольку контроллер EHCI всего 1 а при этом ОС или твой драйвер с одной стороны и BIOS c с другой хотят использовать данный контроллер вместе то необходим механизм синхронизации, чем в данном случае и является этот семафор. Если биос занял контроллер,то твой драйвер должен запросить у биоса контроллер и далеко не факт что биос тебе его отдаст. У меня например если включена Legacy то биос не хочет отдавать управления и я следовательно не могу работать с EHCI.
      Цитата uchtinka @
      У меня например если включена Legacy то биос не хочет отдавать управления и я следовательно не могу работать с EHCI.

      Ну это как-то врядли... Под Windows ведь всё работает?
      Если да, то должно управление забираться. Драйвера Windows его точно так же забирают.
        Управление конечно можно забирать принудительно но это некорректно вообще-то. Я посмотрю спецификацию и точно скажу.
          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. Если биос сбросил семафор -то все нормально.
          А потом можно
          - сбрасываем командный регистр (снимаем ресет)
          - запрещаем все прерывания
          - отдаем управление контроллерам-компаньонам
          - сбрасываем контроллер
          ну а дальше по порядку

          Вроде все мог конечно где-то ошибиться. Строго не судите ;)

          Добавлено
          Можно конечно этого и не делать <_< а сразу ресетить
            Ну так а у тебя на каком этапе неправильно выполняется?
            Вообще говоря после того как ты выполнил эту процедуру и BIOS не отвечает, можно смело сбрасывать контроллер и делать что хочеш...
              Цитата
              Ну так а у тебя на каком этапе неправильно выполняется?

              BIOS Не выставляет бит HC BIOS Owned Semaphore. Но это происходит только тогда, когда включена в биосе Legacy и мы когда перезагружаемся не вытаскиваем флешку! Т.е. биос выполняет свою инициализацию контроллера и все - не хочет его отдавать. А так если в порте нет устройства - то все нормально проходит.
              Цитата
              Вообще говоря после того как ты выполнил эту процедуру и BIOS не отвечает, можно смело сбрасывать контроллер и делать что хочеш...

              Вообщем я так теперь и делаю, но у меня ведь была задача не отрубать bios полностью, поскольку нужно было продолжить загрузку.
              Впрочем мне gerret подкинул неплохую идею на счет загрузки. Надо будет ее проверить.
                Доброго всем времени суток.

                К сожалению, сайт www.t10.org с недавнего времени стал предоставлять спецификации только своим членам... Может быть, кто-то знает, откуда ещё можно достать протокол SCSI (точнее, ту его версию, на которой хост общается с флешками)? Гугл от меня отвернулся...

                Если у кого-то она под рукой, слёзно прошу скинуть: reineke@bk.ru

                Заранее спасибо.
                  Там есть доступ и для гостей, просто к этому документу доступа нет.
                  Раньше это был черновик, и разрешали качать всем.
                  А теперь они его опубликовали как стандарт и денег хотят.
                  Вот та версия которую я скачал когда был доступ (5.8Мб, rar):
                  http://shareua.com/files/show/2337551/s2_r10l.rar.html
                  http://dump.ru/file/1479283
                  На почту не шлю - может ещё кому понадобится.
                    Огромное спасибо Сппазму и Геррету. *ушёл разбираться*
                      Здравствуйте программисты, скоро я стану одним из вас(3 курс Программное обеспечение автоматизированных систем), но вот столкнулся с такой проблемой, есть некий Кристалл машина плазменной резки металла, так вот очень хочу сделать возможность подключать к нему ЮСБ флешку, для занесения заказов в компьютер, рабочая программа запускается из под ДОС 6,22 (программу я успешно русифицировал) вот осталось только флешку прикрутить. Сам компьютер сделан на базе Одно платного модуля процессор на нем 300 МГЦ в биосе видел ЮСБ, так что сейчас полностью скопировал программу и играюсь с ней на обычном компьютере, на мамке 440 BX и камень 433 МГц, на борту скорее всего УСБ1.1, я пробовал играться с драйвером USBASPI.SYS и MSCDEX.EXE при загрузке в Волком пытался с подключенной флешкой запускать MSCDEX и вроде как на экране писало что определило ВИД и ПИД устройства ну я и подумал что все ок, а диск не присваивает, возможно я много чего упустил, и не могу разобраться, задача сейчас чтоб при подключении флешки (во время загруженной программы не вызывая никаких дополнительных процедур) ей автоматом присваивался диск и в любой момент можно было к нему обратиться - такое возможно?
                        MSCDEX нужен только для CD-ROM, у тебя же флэшка обычная?
                        Попробуй эти драйвера (во вложении).
                        В config.sys добавь:

                        ExpandedWrap disabled
                          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


                        Пути к драйверам поменяй на свои.
                        Сообщение отредактировано: cppasm -

                        Прикреплённый файлПрикреплённый файлdos_usb_drv.rar (25.69 Кбайт, скачиваний: 158)
                          Доброго всем времени суток.

                          Вот, в процессе изучения Mass Storage протокола наткнулся на шикарную книженцию:

                          Jan Axelson
                          USB Mass Storage: Designing and Programming Devices and Embedded Hosts
                          Lakeview Research, 2006

                          Там есть натурально ВСЁ - от ликбеза по USB до структуры FAT16 и FAT32. Ничего лишнего, объём сравнительно небольшой (300 стр крупным и разреженным шрифтом). Всё очень внятно и ясно. Смысл такой: человек, никогда в жизни не имевший дела ни с USB, ни с носителями данных, практически никуда больше не заглядывая, получает к концу прочтения книги исчерпывающую информацию о всех уровнях программирования флешки (от физического до файлового).

                          Может статься, большинство из вас её знает и считает ознакомление с ней само собой разумеющимся началом для USB-программера, но вдруг на этот пост наткнётся кто-то, кто об этой книжке не слышал.
                            Я думаю о ней большинство не слышало :)
                            Просто на FAT16/FAT32 есть официальная открытая спецификация, на USB и Mass Storage Class - тоже.
                            В основном этими документами и пользуются - как-никак первоисточник.
                            А книжку я гляну - если в электронном виде найду.
                            Интересно посмотреть ;)
                              cppasm спасибо большое за архивчик, я завтра обязательно попробую, у меня в наличии есть две флешки для экспериментов, одна из них SanDisk Cruzer 1CB USB2.0 так она имеет помимо флешки еще и сиди ром, у меня под win98 возникала проблема, и приходилось вообще выключать в системе этот сиди ром, чтоб флешка работала, а вторая просто флешка на 512мв, вот у меня какой вопрос: драйвер для доса имеет ограничение адресации пространства флешки? или можно использовать любую вплоть до 16GB?
                                Цитата -=Kasper=- @
                                вот у меня какой вопрос: драйвер для доса имеет ограничение адресации пространства флешки? или можно использовать любую вплоть до 16GB?

                                Можно использовать флэшки любого размера.
                                Ограничение ОС накладывает.
                                DOS 6.22 FAT32 не поддерживает если я не ошибаюсь.
                                А у FAT16 ограничение на размер раздела - 2Гб.
                                Я точно не помню - но по-моему этот драйвер не поддерживает несколько разделов на флэшке.
                                Для поддержки нескольких разделов был другой драйвер какой-то.
                                В общем чтоб работало - у тебя флэшка должна быть отформатирована в FAT16.
                                Или DOS поновее взять - у меня с MS-DOS 7.11 (от Win98SE) FAT32 нормально работает.
                                Проверялось вплоть до 4Гб.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 17 18 [19] 20 21 ...  50 51


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0630 ]   [ 15 queries used ]   [ Generated: 22.07.25, 18:03 GMT ]