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

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

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

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (14) « Первая ... 2 3 [4] 5 6 ...  13 14 все  ( Перейти к последнему сообщению )  
> OHCI USB
    cppasm, рекомендую тебе купить ohci-usb контроллер. Стоит всего 200-300руб, зато тестить драйвер будешь на своей машине...
      Да есть такие мысли :)
      А как насчёт результатов?
      Я сегодня у друга попробовал - вроди работает.
        Попробовал прогу! Вот результаты:

        ExpandedWrap disabled
          Detecting OHCI USB Controllers...
          1 OHCI USB Controller(s) detected
           
          OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h
                                 PCI BUS = 0, PCI DEV = 1, PCI FN = 2
                                 MM BASE = DFFFB000h, IRQ = 5
          OHCI 0: rev 1.0, no legacy support.
          Reset Host Controller
          Host controller state: UsbOperational
           
          Reset Host Controller 0.
          Return control to SMM.
          SMM did not responce.
          Host controller state: UsbReset


        Ты, к стати, не пробовал еще с прерываниями от него работать?
        Сообщение отредактировано: Gerret -
          Я тож попробывал :)
          ExpandedWrap disabled
            Detecting OHCI USB Controllers...
            3 OHCI USB Controller(s) detected
             
            OHCI USB Controller 0:  VENDOR ID = 1039h, DEVICE ID = 7001h
                        PCI BUS = 0, PCI DEV = 3, PCI FN = 0
                        MM BASE = EF001000h, IRQ = 11
             
            OHCI USB Controller 1:  VENDOR ID = 1039h, DEVICE ID = 7001h
                        PCI BUS = 0, PCI DEV = 3, PCI FN = 1
                        MM BASE = EF002000h, IRQ = 9
             
            OHCI USB Controller 2:  VENDOR ID = 1039h, DEVICE ID = 7001h
                        PCI BUS = 0, PCI DEV = 3, PCI FN = 2
                        MM BASE = EF003000h, IRQ = 5
             
            OHCI 0: rev 1.0, no legacy support.
            SMM active, request ownership change.
            Reset Host Controller.
            Host controller state: UsbOperational
            OHCI 1: rev 1.0, no legacy support.
            SMM active, request ownership change.
            Reset Host Controller.
            Host controller state: UsbOperational
            OHCI 2: rev 1.0, no legacy support.
            SMM active, request ownership change.
            Reset Host Controller.
            Host controller state: UsbOperational
            Reset Host Controller 0.
            Return control to SMM.
            SMM did not responce.
            Host controller state: UsbReset
            Reset Host Controller 1.
            Return control to SMM.
            SMM did not responce.
            Host controller state: UsbReset
            Reset Host Controller 2.
            Return control to SMM.
            SMM did not responce.
            Host controller state: UsbReset
            Всем спасибо - буду двигаться дальше.
            С прерываниями ещё не работал.
            Ещё блин одна проблемма объявилась - при запуске проги я управление контроллером у SMM забираю,
            а при выходе пытаюсь вернуть. А обработчик SMM (чмо) назад управление брать
            не хочет - что ему не нравится блин >:(
            Так что у кого USB клавиатура или мышь лучше не запускать, возможно она повиснет просто до перезагрузки.
            Ну клавиатура так точно повиснет :)
            Управление то программой с клавиатуры происходит, а эмуляция отключается (USB драйвера ясен пень нет пока).
            Единственное можно запустить на создание лога - там от клавиатуры ничего не требуется.
            Сообщение отредактировано: cppasm -
              Прикольно - у вас обоих материнка SiS, ну или по крайней мере USB контроллер :)
              Такс, ну типа апдейт. Должен подключённые устройства детектить (только детектить).
              Вроди исправил баг с SMM.
              В общем просьба ещё раз потестировать.
              Сообщение отредактировано: cppasm -

              Прикреплённый файлПрикреплённый файлohci.rar (7.51 Кбайт, скачиваний: 206)
                Держи

                ExpandedWrap disabled
                  Detecting OHCI USB Controllers...
                  1 OHCI USB Controller(s) detected
                   
                  OHCI USB Controller 0:  VENDOR ID = 1039h, DEVICE ID = 7001h
                              PCI BUS = 0, PCI DEV = 1, PCI FN = 2
                              MM BASE = DFFFB000h, IRQ = 5
                   
                  OHCI 0: rev 1.0, legacy support.
                  Reset Host Controller.
                  Host controller state: UsbOperational
                  Detecting USB Devices...
                  OHCI HC 0, NumberDownstreamPorts=3.
                  Port 0, PortStatus=00000100h
                  Device not connected.
                  Port 1, PortStatus=00010101h
                  Device connected.
                  Port 2, PortStatus=00000100h
                  Device not connected.
                  1 USB Device(s) detected
                  Reset Host Controller 0.
                  Return control to SMM.
                  SMM did not responce.
                  Host controller state: UsbReset


                А ты как возврщаешь управление SMM? просто еще раз Owenership change делаешь повторно?

                Добавлено
                О! я нашел возможную ошибку с передачей управления обратно SMM: ты делаешь ресет перед сменой владельца.
                Как я понял из описания:
                Цитата
                The OS driver should deconfigure all the devices on the USB, clear all interrupt masks, and disable all list processing. The OS driver should then write a one to the OwnershipChangeRequest bit in the HcCommandStatus register...

                ресет делать не надо.
                Сообщение отредактировано: Gerret -
                  Да, делаю ещё раз OwnershipChange.
                  Может и не надо ресетить :)
                  Там ещё ко всему надо чтоб прерывание по OwnershipChange было разрешено - это я поправил.
                  Как видно не помогло.
                  А не ресетить стрёмно как-то - вдруг BIOS SMM нет вообще, а хостконтроллер и дальше будет в рабочем состоянии и в HCCA писать будет. Конфликты возможны с himem например.
                  PS: а это правда хоть что одно устройство подключено? ;)
                  Сообщение отредактировано: cppasm -
                    Цитата cppasm @
                    а это правда хоть что одно устройство подключено?

                    А как же :) конечно правда

                    Цитата cppasm @
                    А не ресетить стрёмно как-то - вдруг BIOS SMM нет вообще, а хостконтроллер и дальше будет в рабочем состоянии и в HCCA писать будет.

                    Так ты сбрасывай все адреса, в том числе HCCA. Если адрес 0, то туда ничего не пишется...
                      Так-с. Ещё одна попытка.
                      Там в архиве 2 ехе-шника.
                      Больше надежда на второй :)
                      Может какой будет всё-таки работать.
                      Я во втором сделал так - вернуть управление, подождать 10мс, если SMM не отвечает - тогда ресет.
                      Вроди должно быть всё ок.
                      Если не будет работать, тогда наверно ну его, этот SMM вместе с эмуляцией :)
                      Прикреплённый файлПрикреплённый файлohci.rar (8.35 Кбайт, скачиваний: 192)
                        LOG 1
                        ExpandedWrap disabled
                          Detecting OHCI USB Controllers...
                          1 OHCI USB Controller(s) detected
                           
                          OHCI USB Controller 0:  VENDOR ID = 1039h, DEVICE ID = 7001h
                                      PCI BUS = 0, PCI DEV = 1, PCI FN = 2
                                      MM BASE = DFFFB000h, IRQ = 5
                           
                          OHCI 0: rev 1.0, legacy support.
                          Reset Host Controller.
                          Host controller state: UsbOperational
                          Detecting USB Devices...
                          OHCI HC 0, NumberDownstreamPorts=3.
                          Port 0, PortStatus=00000100h
                          Device not connected.
                          Port 1, PortStatus=00010101h
                          Device connected.
                          Port 2, PortStatus=00000100h
                          Device not connected.
                          1 USB Device(s) detected
                          Reset Host Controller 0.
                          Return control to SMM.
                          SMM did not responce.
                          Host controller state: UsbReset


                        LOG 2

                        ExpandedWrap disabled
                          Detecting OHCI USB Controllers...
                          1 OHCI USB Controller(s) detected
                           
                          OHCI USB Controller 0:  VENDOR ID = 1039h, DEVICE ID = 7001h
                                      PCI BUS = 0, PCI DEV = 1, PCI FN = 2
                                      MM BASE = DFFFB000h, IRQ = 5
                           
                          OHCI 0: rev 1.0, legacy support.
                          Reset Host Controller.
                          Host controller state: UsbOperational
                          Detecting USB Devices...
                          OHCI HC 0, NumberDownstreamPorts=3.
                          Port 0, PortStatus=00000100h
                          Device not connected.
                          Port 1, PortStatus=00010101h
                          Device connected.
                          Port 2, PortStatus=00000100h
                          Device not connected.
                          1 USB Device(s) detected
                          Return control to SMM.
                          SMM did not responce, resetting.
                          Host controller state: UsbReset
                          Ну и фиг с ним :)
                          Попробуй ещё это - тут уже должны транзакции проходить.
                          Если всё ок - должна выводиться информация о подключённых устройствах.
                          Надеюсь работает.
                          Завтра сам попробую.
                          Спасибо за содействие.
                          Прикреплённый файлПрикреплённый файлohci.rar (8.96 Кбайт, скачиваний: 178)
                            Странная тема получается... Если я запускаю программу из под ДОС-Навигатора, то я вижу:
                            ExpandedWrap disabled
                              ============================================================================
                              ENDPOINT DESCRIPTOR
                              ============================================================================
                               EndpointAddress               : E8h (08h IN)
                               Attributes                    : 62h (Bulk pipe)
                               MaxPacketSize                 : EB05h
                               Interval                      : 246ms

                            причем это я вижу 2-а раза... И как ты сам видишь, значения не коректные!

                            А вот если я выхожу из навигатора и запускаю ее просто из командной строки, то кроме информации о контроллере и о том, что есть подключенное устройство, больше ничего не показывается... лог создавать пробовал, но в нем тоже только про контроллер...

                            Я посмотрел ту область памяти, куда указывают HcHCCA и HcControlHeadED, там у меня что-то лежит... но ни как не дескрипторы передачи!

                            Да, к стати, не очищай после своей программы регистры контроллера (ресет не делай), а то сложно понять, была ли вообще транзакция.

                            И еще, я тут ставлю експерименты по поводу полноценного драйвера (даже нечто получается) и вот если мой драйвер загружен, то при запуске твоей программы комп ребутится... с предыдущими версиями такого не было!

                            P.S.
                            Я тут чисто случайно наткнулся на странную возможность программно защитить флешку от записи :blink: у меня уже 2-е такие (LG 512MB и Transcend 1GB). На LG вообще отсутствует джампер защиты от записи, а на Transcend'е он выставлен как открытый!!! На любых компах с любыми виндами на флешки ничего не пишется (винда пишет, что диск защищен от записи). Как это побороть, и уж тем более, как это получилось, я пока не нашел :wall:
                              Насчёт защиты от записи - ничего такого не знаю...
                              У меня блин уже голова кругом идёт :wacko:
                              У тебя на машине случайно EHCI нет, или только OHCI?
                              Сегодня попробовал на машине с EHCI - полный капец.
                              Короче система такая - думаю как EHCI работает знаешь.
                              Ну вкратце - он всегда стоит с компаньёном - OHCI или UHCI.
                              EHCI обрабатывает только Highspeed устройства, остальные отдаёт компаньёнам.
                              После ресета все порты отданы компаньёнам, безразлично какое устройство подключено.
                              Точнее наоборот - он не отдаёт, а забирает себе только Highspeed устройства, но для этого его надо сконфигурировать.
                              Это типа круто - если в системе нет дров EHCI, но есть дрова для компаньёна всё работать будет - только скорость ниже.
                              Так вот втыкаю я сегодня флэшку, запускаю прогу - нет устройства...
                              Все порты перепробовал.
                              Грешил на BIOS, что вмешивается - но эмуляция отключена. Чё за нафиг???
                              По поводу программы - убрал ресет в конце, добавил дамп дескрипторов после транзакции.
                              Надеюсь что-то прояснится.
                              Если можешь скинь мне на мыло процедуру транзакции, например control_read.
                              Сообщение отредактировано: cppasm -

                              Прикреплённый файлПрикреплённый файлohci.rar (9.13 Кбайт, скачиваний: 188)
                                Цитата cppasm @
                                У тебя на машине случайно EHCI нет, или только OHCI?

                                Нет, на той машине, где я эксперименты ставлю, только OHC.

                                Цитата cppasm @
                                Сегодня попробовал на машине с EHCI - полный капец.

                                Ага, у меня была похожая история. Я начинал разбираться с USB с контроллера UHC... так вот мне удалось заставить его получать дескриптор устройства с мого MP3 плеера (USB 1.1), а когда я к нему подключал любую флешку с USB 2.0, то все транзакции заканчивались, типа, устройство не отвечает, хотя на порте определялось наличие устройства. Ух долго я с этим бился... пока не прочитал про EHC и не отключил его в биосе.

                                Я до понедельника не смогу проверить твою прогу, машина с OHC на работе. Да и с процедурой транзакции тоже самое, все исходники на той же машине :) Единственное что, я никак не могу придумать приличного способа определения окончания транзакции. Пока я определяю его как равенство указателей EPDescriptor.HeadPointer == EPDescriptor.TailPointer или, если была ошибка, по выставленому биту Halted. А на всякий случай еще считаю кадры и если их больше определенного числа, просто выхожу из процедуры. А в конце смотрю последний выполненый дескриптор передачи и из него получаю код ошибки. Но мне безумно не нравится такой подход! А без прерывания от контроллера, других способов, что-то не видится :unsure:
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (14) « Первая ... 2 3 [4] 5 6 ...  13 14 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0434 ]   [ 14 queries used ]   [ Generated: 16.09.25, 02:53 GMT ]