На главную Наши проекты:
Журнал   ·   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) « Первая ... 12 13 [14] 15 16 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Цитата Melas @
    После назначения адреса устройство по этому самому адресу не отвечает, хотя ошибок при установке адреса нет. Что здесь может быть?

    Может быть что ты на самом деле устанавливаеш не тот адрес, который думаеш :)
    В смысле ошибка где-то в установке - адрес то устанавливается, но другой.
    Хотя так трудно сказать...

    Может немного оффтоп, но всё-же :) Что-то вроди опроса.
    Есть мысли написать софтину для закачки фоток с цифровых USB камер под DOS.
    Для камер которые определяются не как Mass Storage, а как Still Imaging Class.
    Что-то вроди Volkov Commander, только одна панель выбор подключённых камер, а вторая - локальных дисков. Ну и копирование там, удаление и всё такое...
    Так вот вопрос - оно кому-нибудь надо?
    Я в том смысле что мне интересно и я писать всё равно буду, но имеет ли смысл его где-нибудь выкладывать...
    Кто что скажет?
      Melas Вот мой код установки адреса устройства... может чем поможет. Помню у меня была похожая проблема, но уже не помню как решилась :)
      ExpandedWrap disabled
        ;Инициализация USB Mass Storage устройства
        ;Вход
        ; CurDevice - указатель на структуру устройства
        ;Выход
        ; USB_TansErr - статус инициализации
        UHC_MSDeviceInit                PROC
        ... ;код открытия порта
          DEV_ENABLED:
            ;порт включен, устройство готово к приему пакетов
            ;установим адрес устройства
            mov             lpUSB_MSD.MSD_Adr, 0 ;после ресета у уст-ва адрес 0
         
            ;Установим адрес
            call            UHC_SetAddress
            cmp             USB_TransErr, 0
            jne             DEV_INIT_ERR
         
         
            mov             AX, RequestBuf.ReqValue
            mov             lpUSB_MSD.MSD_Adr, AL ;запишем новый адрес в структуру устройства
        ... ;код дльнейшей инициализации
        UHC_MSDeviceInit                ENDP
         
        ;Установка адреса устройства
        ;Вход
        ; CurDevice - указатель на структуру устройства
        ;Выход
        ; USB_TansErr - статус инициализации
        UHC_SetAddress                  PROC
            push            EAX
            push            EDX
            push            ECX
         
            mov             RequestBuf.RequestType, SET_ADDRESS
            mov             AX, offset USB_Devices
            mov             DX, CurDevice
            sub             DX, AX
            shr             DX, 4
            inc             DX
            mov             RequestBuf.ReqValue, DX
            mov             RequestBuf.ReqIndex, 0
            mov             RequestBuf.ReqLength, 0
            mov             CX, 3
          SET_DEV_ADR:
            call            UHC_CTRL_IO
            cmp             USB_TransErr, 0           ;если адрес установился
            je              DEV_ADR_SET     ;продолжим инициализацию
            loop            SET_DEV_ADR     ;если нет, повторим попытку
          DEV_ADR_SET:
            pop             ECX
            pop             EDX
            pop             EAX
            ret
        UHC_SetAddress                  ENDP


      cppasm
      Сложный вопрос, по поводу, нужна ли сама софтина, а вот как опыт, это да!
      Интереснее было бы соорудить драйвер, что бы любой Commander мог сливать фотки, и чтобы каждая камера подключалась как стандартный диск DOS... НА ЛЕТУ! Единственная проблема с драйвером, это отсутствие в UHCI аппаратного прерывания на подключение устройства.
      Сообщение отредактировано: Gerret -
        Ну с UHCI это не проблема - вешаемся на таймер и мониторим.
        Там проблема с созданием драйвера в другом.
        Он не подходит ни под символьные, ни под блочные устройства.
        Организация по принципу БД.
        Получить список объектов, получить превьюшку объекта, получить объект, удалить объект.
        Т.е. это как бы более высокий уровень получается...
        Разве что перехватывать int 21h, но там кучу функций перехватывать прийдётся.
        Да и всё равно чтение как из файла из фотки сделать не получится - произвольный участок читать нельзя, только фотку целиком (от начала до конца).
          Для этого там есть понятие как драйвер файловой системы. Так MSCDEX работает. К нему оращения идут не как к обычному драйверу блочного устройства на чтение секторов. К нему обращаются за структурой каталогов и файлов. А уж как драйвер читает файл, систему не колышет.
            Ну так а драйвер ФС это просто название - по сути он 21 прерывание перехватывает.
            Я же пишу - там проблема с произвольным доступом к содержимому файла.
            В DOS SEEK сделать можно и читать со средины файла, а здесь нельзя.
            Разве что кешировать весь файл во временной папке какой-нибудь.
            В общем посмотрим.
              Цитата cppasm @
              В DOS SEEK сделать можно и читать со средины файла, а здесь нельзя.

              Оказалось можно :)

              Есть тестовая версия программы для скачивания фото с цифровых камер под DOS.
              Пока максимальная скорость 12 Мб/с (USB 1.1).
              С моей камерой отлично работает.
              Нет желающих попробовать?
                Привет всем!
                Кто-нибудь общался с HID? Там у него есть дескриптор репорта. Что с ним делать? :huh:
                  Цитата Melas @
                  Кто-нибудь общался с HID? Там у него есть дескриптор репорта. Что с ним делать?
                  Варианта 2.

                  Вариант 1:
                  ExpandedWrap disabled
                    Забить. Ставим BootReport и всё.
                    Но тогда максимум 2 кнопки, X и Y; для некоторых мышек 2 кнопки, скролл, X и Y.

                  Вариант 2:
                  ExpandedWrap disabled
                    Парсить этот дескриптор. В нём описан формат возвращяемых устройством данных.
                    Тут тебе у мышек хоть по 10 кнопок может быть и т.д.

                  Но только всё там сложно сильно, точнее слишком абстрактно.
                  Лично я для мыши делал пока по первому варианту.
                  Сообщение отредактировано: cppasm -
                    Как от HID получить данные? На мой запрос GET_REPORT мышь отвечает STALL. Передача по нулевому каналу. В спецификации сказано, что можно использовать Report_ID. Как его можно найти?
                      Цитата Melas @
                      Как от HID получить данные?

                      Сделать InterruptRead транзакцию с адресом InterruptIn конечной точки.
                      В спецификации нормально всё расписано.
                      Сейчас правда под рукой нет - по-позже может быть посмотрю все детали и напишу.
                        Сделал. Ответ пришел "устройство не найдено" :( Когда светодиод загорается, при установке конфигурации? Или еще надо что-то сделать? Запрос SetConfiguration ушел, ошибок нет, но светодиод не горит.
                          Я включение светодиода видел только на некоторых флешках.
                          Включается он там при посылке SetConfiguration.

                          Цитата Melas @
                          Запрос SetConfiguration ушел, ошибок нет, но светодиод не горит.

                          А что за устройство?
                          Может он и не должен гореть, а горит только когда обмен данными идёт.

                          Цитата Melas @
                          Сделал. Ответ пришел "устройство не найдено"

                          Что сделал? Чтение с Interrupt конечной точки?
                          При получении "устройство не найдено" 99% что ты указал неправильный адрес.

                          При обнаружении устройства надо сделать:
                          1. сброс порта, устройство получает адрес 0
                          2. SetAddress
                          3. SetConfiguration
                          Всё.

                          Кстати, устройство может ещё не отвечать если ты не забрал управление у BIOS SMM.
                          Смотри в спецификации Request Ownership.
                          Просто тогда ты с SMM конфликтуеш и чаще всего проигрываеш.
                          Сообщение отредактировано: cppasm -
                            Устройство - мышь. Порядок действий такой:
                            Инициализация - проверяю SMI (Interrupt routing), бит не выставлен. Дальше инициализация контроллера.
                            Появляется устройство, делаю резет порта, устанавливаю адрес, получаю дескрипторы устройства уже по установленному адресу. Затем далаю SetConfiguration с конфигурацией 0. Пакет уходит, ошибок нет. Светодиод на мыше не горит. В Interrupt дереве формирую конечную точку (тоже Interrupt, адрес 1) - указываю дескриптор передачи: устройство 1, конечная точка 1, транзакция IN, указываю максимальный размер пакета. При передаче этого дескриптора и возникает ошибка "устройство не найдено". Может ей надо еще что-нибудь пошептать? :) Или я чего еще не сделал? Так мышь работает, подключаю к винде, все нормально.
                              Цитата Melas @
                              Может ей надо еще что-нибудь пошептать?

                              Вроди ничего не надо.
                              Скорее всего ошибка в InterruptRead тогда.
                              А контроллер какой - OHCI??
                                Да, контроллер OHCI.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 12 13 [14] 15 16 ...  50 51


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