На главную Наши проекты:
Журнал   ·   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) « Первая ... 32 33 [34] 35 36 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Понятно теперь, нужно 3 QH делать в которой 1 qTD. Я прочитал у своих трёх флешек конечные точки, и у двух было 1(out = 1) 130(in = 2), у одной 2(out = 2) 129(in = 1), ни какого единообразия, в примерах я встречал ваш случай, но там была не флешка а флопик или сдром, и я подумал, что это может быть связанно с сообщениями о открытии дверцы(хотя тоже врядли).
    Сообщение отредактировано: StasNewOs -
      Сообщения о состоянии устройство выдает по команде REQUEST_SENSE. Например, я даю команду TEST_UNIT_READY, устройство мне в CSW возвращает статус 1 (не готово), я даю REQUEST_SENSE. Оно выдает длинный код, из которого имеют смысл три байта, и эти три байта я расшифровываю по таблице. В документации на SCSI (SCSI-2) есть эта таблица, там перечислена тьма возможных причин, в т.ч и открытые дверцы.

      Добавлено
      Кстати, флопики работают не по Bulk-Only, а по Control-Bulk-Interrupt. Им положено иметь три точки.

      Добавлено
      Номера конечных точек удобнее сразу представлять в 16-ричной системе. Ты вот пишешь, например, 130, но тут зрительно легче вопринять 82h - сразу видно - точка IN, номер 2.
      Сообщение отредактировано: zakharo -
        Всё понял, главное прочитать теперь сектор с флешки. Вообще странный метод, на каждый qTD QH делать, я уже привык, что один QH и несколько qTD.
          Мне так удобнее - каждая транзакция выполняется отдельно. Надо послать команду SCSI - вызываю функцию BulkOut, независимую от контроллера (ветвление по типу контроллера уже идет внутри, структура-описатель устройства указывает на контроллер, к которому это устройство подключено). Функция выполняется, возвращает код завершения транзакции все такое.. Потом - данные, потом - BulkIn Для приема CSW. Все как отдельные функции. Конечно, в серьезных системах все делается в виде очередей к контроллеру, с обработкой завершений по прерываниям, но мне очень важно было уложиться в минимум памяти.
            Inquiry сработала хорошо, а read10 сделал по аналогии но пока не работает.
              Проверь DT. Там же нельзя полностью повторять qTD - для bulkout DT уже д.б. 1.
                read10 прошла после изменения DT, зачем их вообще придумали? Правдо данных с сектора я пока не увидел.
                Сообщение отредактировано: StasNewOs -
                  Для защиты от помех на шине. Могут исказиться как сами пакеты, так и подтверждения. Чтобы из-за ошибок на шине не принять дважды один и тот же пакет, все пакеты снабжаются битом DT - получаются пакеты четные и нечетные. Чередование DT проходит строго через весь поток пакетов, адресованных одной конечной точке, независимо от того, что там передается.
                    Я понял, что DT setup всегда =0, а дальше in и out чередуются(yfxbyfz c 1) и в конце in или out с DT=1, а у bulk in и out отдельно друг от друга.
                    Функция read10 проходит но данных с сектора нету.
                    Сообщение отредактировано: StasNewOs -
                      Обе транзакции in проходят? Посмотри CSW.
                        Да, если бы хоть одна не прошла, то повисло бы у меня. CSW возвращает 0 но данных нету с сектора(это единственная теперь моя проблемма, так бы уже листал файлы с флешки).
                        Инверсию бита DT я настроил командой btc, эта команда проверяет у устройства состояние прошлого бита для in out отдельно и инвертирует, если прошлый 0 то поставит 1 в DT, после этого я действительно смог вызывать read10 уже несколько раз.

                        Добавлено
                        Хотя всё остальное работает нормально, со всех портов настраивает флешки, читает дискрипторы, строки, инквири
                          сделаю функции GetMaxLun, ReadCapacity, ModeSense, RequestSense может поможет
                          ReadCapacity выдаёт только размер блока, чтото маловато инфы.
                          Сообщение отредактировано: StasNewOs -
                            ReadCapacity дает 8 байт - 4 байта размер блока и 4 - MaxLBA. Все в big-endian.

                            Добавлено
                            ModeSense мне ни разу не потребовалась.
                              У меня в Ellisys USB Analysis software примеры старые и мало их, где ещё посмотреть примеры не знаю или как свои устройства подключить.
                              Вот я попал с сектором, просмотрел всё, всё правильно, а данных всё нету.
                              Сообщение отредактировано: StasNewOs -
                                Смотри адрес памяти, куда ты его принимаешь. Соответствует ли физический адрес тому, куда ты смотришь? Не пересекает ли буфер границу 4 кб? Не записано ли что-нибудь в старших 32 битах адреса в qTD?
                                Вообще дай распечатку своих QH и qTD до и после транзакций.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 32 33 [34] 35 36 ...  50 51


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