На главную Наши проекты:
Журнал   ·   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) « Первая ... 16 17 [18] 19 20 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Большое спасибо, Gerret. :yes: Действительно все как в описании! Я сам долго уже ковыряюсь. Но вот непонятно что это за буфер, который передается. Еще никак не найду таких производителей 95Bh и 4DAh. И еще вот какой запрос мне непонятен:

    Direction = IN (чтение)
    RequestFlag = 0A1h => (USB_TARGET_INTERF or USB_TYPE_SPC_CLASS or USB_DIR_IN)
    RequestCod = 0EEh
    RequestParam = 00h
    Index = 0
    Данные - передается указатель на буфер размером 16 байт
    конечная точка - нулевая
    потом по смещению +9 из него берется какое-то непонятное число: 0EB14h

    РS похоже на запрос какого-то дескриптора
    Сообщение отредактировано: uchtinka -
      А откуда ты берешь все эти данные???
        Драйвер мото харя (usbaspi) посылает такие запросы
          Хм... ты его дизасмишь что ли?

          По поводу ограниченноси Mass Storage Reset, это может быть заточка драйвера под конкретные устройства, т.к. как показала практика далеко не все флешки нормально реагируют на этот запрос. Про GetMaxLun такого сказать нельзя, но может когда-то были всякие ограничения... Что такое за буфер после ресета и что такое EEh - фиг знает...
            Цитата Gerret @
            Хм... ты его дизасмишь что ли?

            По поводу ограниченноси Mass Storage Reset, это может быть заточка драйвера под конкретные устройства, т.к. как показала практика далеко не все флешки нормально реагируют на этот запрос. Про GetMaxLun такого сказать нельзя, но может когда-то были всякие ограничения... Что такое за буфер после ресета и что такое EEh - фиг знает...

            Цитата
            Хм... ты его дизасмишь что ли?


            Да пытаюсь

            Добавлено
            Цитата
            заточка драйвера под конкретные устройства, т.к. как показала практика далеко не все флешки нормально реагируют на этот запрос

            Именно так и есть
              Цитата uchtinka @
              Да пытаюсь

              Неблагодарное это занятие :)
              Проще взять спецификацию на хост контроллер и на нужное устройство (Mass Storage Class) и разобравшись в спецификации самому написать.
              Поверь - разобраться в документации будет куда легче чем дизассемблировать готовый драйвер и пытаться понять а что же оно там делает...
                Кому-как.. Мне например проще дизассемблировать. Есть опыт. А мне в спецификации разбираться сложнее.

                Добавлено
                Есть конечно сложности. Драйвер на 90% написан на С. Это затрудняет дизассемблирование. Если на assemblere то вообще нет проблем

                Добавлено
                Дизассемблирование сродни решению головоломки. Сам процесс может доставлять удовольствие.
                К тому же пока разбираешься в коде спецификацию приходится изучить досконально
                  Цитата
                  Direction = IN (чтение)
                  RequestFlag = 0A1h => (USB_TARGET_INTERF or USB_TYPE_SPC_CLASS or USB_DIR_IN)
                  RequestCod = 0EEh
                  RequestParam = 00h
                  Index = 0
                  Данные - передается указатель на буфер размером 16 байт
                  конечная точка - нулевая
                  потом по смещению +9 из него берется какое-то непонятное число: 0EB14h

                  РS похоже на запрос какого-то дескриптора

                  0A1h (10100001b) - специфический запрос к интерфейсу для данного класса
                  Надо смотреть спецификацию на интерфейс либо спецификацию изготовителя
                    Gerret, а ты своим драйвером не поделишься? на благо человечества)
                      Всем добрый день!
                      Есть такая проблема. Программирую UHCI под ДОС. Все работает, если в BIOS отключена Legacy Support. Если включить, то reset контроллеров UHCI проходит, но порты не реагируют на подключение устройств. Не хочется запрещать в BIOSe Legacy Support, т.к. это делает невозможным загрузку с внешних устройтств.
                      Как бы отключить Legacy динамически? Может, при сбросе контроллера что-то надо добавить? Пробовал в конфигурационном прострастве PCI нулить регистр Legacy (смещение 0xC0) - не помогло.
                      Заранее спасибо!
                        Скорее всего ещё надо Legacy в EHCI отключить.
                          Скорее всего надо отключить EHCI контроллер! Он перехватывает твои флешки т.к. они USB2.0 все.

                          cppasm синхронность и синфазнось :)
                          Сообщение отредактировано: Gerret -
                            Цитата Gerret @
                            Скорее всего надо отключить EHCI контроллер! Он перехватывает твои флешки т.к. они USB2.0 все.

                            Точняк! Только это зависит от реализации BIOS. У меня на некоторых компах драйвер сам определяет, что устройство USB2.0, а на некоторых как по спецификации EHCI отдаёт UHCI и не настраивает.
                              Цитата cppasm @
                              Скорее всего ещё надо Legacy в EHCI отключить.

                              Пробовал в EHCI в регистре USBLEGSUP (EECP+0x00) снять бит 16 (HC BIOS Owned Semaphore) и выставить бит 24 (HC OS Owned Semaphore), либо вообще нулить весь регистр. Также нулил регистр USBLEGCTLSTS(EECP+0x04).Не помогает: UHCI не реагирует на поключение портов.

                              Цитата Gerret @
                              Скорее всего надо отключить EHCI контроллер! Он перехватывает твои флешки т.к. они USB2.0 все.

                              Совсем отключать EHCI не интересно. Во первых, я работаю не только с Flash и у меня полно устройств 1.1. Во вторых, не любой BIOS Setup это может сделать. Windows же как-то разруливает эту ситуацию :(

                              Цитата lsvmo @
                              Точняк! Только это зависит от реализации BIOS. У меня на некоторых компах драйвер сам определяет, что устройство USB2.0, а на некоторых как по спецификации EHCI отдаёт UHCI и не настраивает.
                              Пардон, не понял, так BIOS или драйвер?
                                Alex, посмотри 13й бит PORTSC (EHCI контроллера) - port owner. Если я правильно понял, то запись 1 в него передает управление компаньону.
                                Сообщение отредактировано: whoIS -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 16 17 [18] 19 20 ...  50 51


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