На главную Наши проекты:
Журнал   ·   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) « Первая ... 34 35 [36] 37 38 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Контроллер USB определенного типа, видимо, тоже можно рассматривать как объект?
      Контроллер это устройство, находя которое создаётся объект устройство со своим типом, если этот тип EHCI то в объект устройство добавляется функционал и данные для работы именно с этим устройством, а потом он сам создаёт объекты устройства которые сам владеет, у меня так. Попутно мои объекты выводятся на экран со своим текстом шрифтом цветом размером картинкой имеют обработчик событий и много чего. На самом деле система очень не плоха, там много интересного получается.
      Кстати после создании нормального объекта отвечающего за прерывания стало легко работать с прерываниями, в нём есть функционал APICa
      Сообщение отредактировано: StasNewOs -
        Коды ошибок Additional Sense Code в Request Sense = Not Ready To Ready Transition – Media Changed 28h,
        В примерах был такой код, но после него у них всё рыботало.
          После такого кода надо просто еще раз переспросить. Только я еще делаю небольшие паузы перед перезапросами.
            Я ставил 5 раз
            TEST UNIT READY
            REQUEST SENSE
            и непомогло, попробую купить разные флешки.
              И что, каждый раз отвечает одно и то же?
                Цитата StasNewOs @
                О таких вещах у меня с табой разговоров небыло.


                Цитата shm @
                StasNewOs, с точки зрения архитектуры ядра ОС работу с устройствами USB лучше абстрагировать от конкретного хост-контроллера, а именно путь будет функция наподобие SendBulkPacket(DEVICE_INFO *Info, const void *Data, size_t Size), которая дальше сама переправит вызов в нужный драйвер и он уже будет заниматься qTD и прочими вещами. В противном случае, если возникнет желание сделать поддержку другого контроллера, то возникнет огромный геморрой с переписывание драйверов всех устройств USB.

                Цитата StasNewOs @
                Цитата
                делать многоуровневую систему

                Это не самый удачный вариант, у меня поудачнее, почитайте о нём в прошлой ссылке, там инфа о моей ОС, ваше мнение о ней будет интересно.


                Цитата StasNewOs @
                Ещё раз тебе говорю, у меня объектная система на которыю я нарабатываю функционал и объекты

                Я посмотрел ее, в ней есть некое рациональное зерно, но... (потом в аське расскажу, чтобы не флудить)
                Цитата StasNewOs @
                Про 3 уровня я полностью согласен и это собственно и реализовываю.

                Я надеюсь, что в ближайшем будущем ты поменяешь свое отношение и к другим вещам.

                Добавлено
                zakharo, а с какой целью разрабатывал драйвер, если не секрет? Чисто для себя? Я вот 3 года назад сделал поддержку UHCI, USB HDD, USB мыши и забросил т.к. USB не было моей основной целью, вот не так давно тут тоже драйвер ehci начал дописывать, но времени мало стало... Ты намного глубже меня копанул, читаю твои посты и узнаю много новых моментов.
                Сообщение отредактировано: shm -
                  Не, не для себя. У нас на фирме есть девайс, который работает в ДОСе. По условиям. Строго. Ни Линукс, ни тем более Винда не допускается. MS-DOS, конечно, давно не поддерживается, мы сейчас берем PTS-DOS и freeDOS. ДИОНИС называется - это универсальный интернет-хост с функцией криптомаршрутизатора. Может, слышал краем уха? Вот для него и делал подсистему. ДОС же внешних носителей кроме флоппиков не знает, а дискеты уже почти никто не производит. Так что вообще практически стоял вопрос жизни и смерти устройства. Вот и пришлось почти всю поддержку делать, включая флешки, картридеры, CDROM, и даже клавиатуру. Но это не драйвер, а просто подсистема работы с USB. Поэтому и файловая система тоже там внутри - ДОСовую не удалось использовать..
                  Сообщение отредактировано: zakharo -
                    Цитата zakharo @
                    слышал краем уха?

                    Вроде бы где-то слышал, но в руках точно не держал.
                    Цитата zakharo @
                    поэтому и файловая система тоже там внутри - ДОСовую не удалось использовать..

                    Где-то читал, что какими-то шаманствами люди прикручивали, но в любом случае DOS работает с современными носителями очень неэффективно.
                      Цитата zakharo @
                      Не, не для себя. У нас на фирме есть девайс, который работает в ДОСе. По условиям. Строго. Ни Линукс, ни тем более Винда не допускается. MS-DOS, конечно, давно не поддерживается, мы сейчас берем PTS-DOS и freeDOS. ДИОНИС называется - это универсальный интернет-хост с функцией криптомаршрутизатора. Может, слышал краем уха? Вот для него и делал подсистему. ДОС же внешних носителей кроме флоппиков не знает, а дискеты уже почти никто не производит. Так что вообще практически стоял вопрос жизни и смерти устройства. Вот и пришлось почти всю поддержку делать, включая флешки, картридеры, CDROM, и даже клавиатуру. Но это не драйвер, а просто подсистема работы с USB. Поэтому и файловая система тоже там внутри - ДОСовую не удалось использовать..

                      Вы хоть понимаете, что вы полностью написаль свою систему и вам оставалось только убрать дос и сделать свой загрузчик, т.к. в ДОСе кроме системы ввода вывода ничего больше нету. А если бы убрали дос, то ваша система бы выиграла только.
                      Вообще можно сделать драйвер ЮСБ устройствам, драйвер дисков, звука, сети, кодеки, протоколы, многопроцессорность, у меня уже большая часть сделана и есть ГУИ и шикарная объектная система с помощью которой управлять системой легко и писать её.

                      Добавлено
                      У меня у Status Transport 13байт для TEST UNIT READY со второго раза 0, а у READ(10) вообще 80h или просто данные не пришли
                      Сообщение отредактировано: StasNewOs -
                        Цитата StasNewOs @
                        т.к. в ДОСе кроме системы ввода вывода ничего больше нету.

                        Это только на первый взгляд... Я пытался эмулировать DOS посредством V86 - таки не получилось должным образом. На самом деле там много всего помимо прерываний (отнюдь не только работа с диском), есть специальные области памяти, тот же командный интерпретатор... В DOS множество абстракций, т.е. работу с COM или даже консолью можно производить через файл. И этим всем активно пользуются компиляторы ЯВУ, так что переписывания много получится и вытекающих багов тоже.
                        Цитата StasNewOs @
                        Вообще можно сделать драйвер ЮСБ устройствам, драйвер дисков, звука, сети, кодеки, протоколы, многопроцессорность, у меня уже большая часть сделана и есть ГУИ и шикарная объектная система с помощью которой управлять системой легко и писать её.

                        Для девайса zakharo необходимость в доброй половине элементов этого списка весьма сомнительна.

                        Добавлено
                        Цитата StasNewOs @
                        У меня у Status Transport 13байт для TEST UNIT READY со второго раза 0, а у READ(10) вообще 80h или просто данные не пришли

                        Про триггер данных не забыл? Очень похожие симптомы.
                        Сообщение отредактировано: shm -
                          Цитата StasNewOs @
                          а у READ(10) вообще 80h или просто данные не пришли

                          Что такое 80h? Где это?
                            у READ(10) вообще 80h или просто данные не пришли, всмысле не пришёл Status Transport (80h - 13 байт Status Transport)

                            Добавлено
                            shm Что такое тригер?
                              Не бывает 80h. Скорее всего, транзакции просто не было. Попробуй перед транзакцией обнулить это поле и посмотреть, что будет.
                              А если данные не приходят - смотри причину в qTD, там контроллер выставляет биты.
                              Если стоит бит 6 (Halted), значит, скорее всего, устройство выставило STALL, т.е. была неправильная команда. В CBW есть поле для количества ожидаемых байт. В блоке команды SCSI (CBWCB) есть поле для номера сектора - оно заполняется старшими байтами вперед, т.е. big-endian. Проверь, все ли правильно заполнено.
                              Фишка в том, что состояние STALL для bulk-endpoint не снимается само, его надо снимать доп.командой, как написано в спецификации Bulk-Only Mass-Storage.
                              Пора уже ее сделать. Это необходимая и часто употребляемая операция. Причем делается просто - пакет SETUP с реквестом типа CLEAR_FEATURE, только не забудь, что номер enpoint туда пишется полный, 8-битный, т.е. для точки типа IN старший разряд будет 1. При этом надо у себя обнулить текущее значение DT для этой точки - последующие транзакции начнутся с DT=0. После этого конечная точка снова становится работоспособной, и тогда уже можно нормально принять CSW, а потом и выяснить причину ошибки через REQUEST SENSE.
                              Сообщение отредактировано: zakharo -
                                Да стоит бит 6 (Halted), но почему? Номер сектора был 0(как не забивай), может простая какаянить ошибка, а я не вижу. Вообще упаковка в QH таже, что и все другие вызывают, а данные
                                ExpandedWrap disabled
                                  Read10: mov edx,edi
                                      mov ebx,def44   ;В команды заполним пакет из 31 байт
                                    mov dword[ebx],'USBC'     ;Signature
                                    mov dword[ebx+4],ebp      ;Tag
                                    mov eax,ecx
                                    shl eax,9
                                    mov dword[ebx+8],eax      ;
                                    mov byte[ebx+12],128      ;bmRequestType  Device-to-host
                                    mov byte[ebx+13],0        ;Logical Unit Number
                                    mov byte[ebx+14],10       ;Command Block Length
                                   
                                    mov byte[ebx+15],28h      ;Operation Code READ(10)
                                    mov byte[ebx+16],0
                                    mov dword[ebx+17],esi
                                    mov byte[ebx+21],0
                                    mov word[ebx+22],cx
                                   
                                    mov dword[ebx+24],0
                                    mov dword[ebx+28],0
                                   
                                    ;mov dword[ebx],'USBS'    ;Signature
                                    ;mov dword[ebx+4],ebp     ;Tag
                                    ;mov dword[ebx+8],0       ;
                                    ;mov byte[ebx+12],0
                                  call CTq
                                  call DTq
                                  jmp STq

                                Хотя здесь негде ошибиться
                                Сообщение отредактировано: StasNewOs -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 34 35 [36] 37 38 ...  50 51


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0604 ]   [ 15 queries used ]   [ Generated: 20.07.25, 19:06 GMT ]