На главную Наши проекты:
Журнал   ·   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) « Первая ... 2 3 [4] 5 6 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Цитата Gerret @
    Контроллер пишет реальное количество принятых байт без единицы, т.е. 000-001=7FFh

    Очень приятная для меня информация. Я это не знал и это в книгах не написано.

    Статусы транзакций посмотрю поподробней.

    без GET_DESCRIPTOR нельзя делать SET_ADDRESS. Вероятно действительно можно, но в USB 2.0 и
    во всех книгах процедура enumeration описывается в последовательности
    GET_DESCRIPTOR, SET_ADDRESS, ... Хотя последовательность действительно видимо не важна.
    Попробую конечно. Но вот в чем феня заключается.
    Транзакция SETUP состоит из трёх составляющих:
    1) Cам SETUP с адресом и номером конечной точки
    2) Пакет DATA0 или DATA1 c восемью байтами для GET_DESCRIPTOR
    3) HANDSHAKE

    На пакет SETUP должен быть ответ ACK, а его нету, на пакет DATA0 или DATA1 должен быть
    ответ ACK, а его нету, а значит микруха даже не приняла
    запрос на GET_DESCRIPTOR, а значит будет ли она отвечать на следующую транзакцию DATA IN.
    А в этих условиях имеет ли смысл слать SET_ADDRESS вместо GET_DESCRIPTOR или что-то иное.

    23-16 биты второго dword'а Transfer Descriptor'a я их смотрю, но пока не придавал им значения,
    т.к. считал, что микруха мне не отвечает. Попозже напишу, что именно есть в этих битах. То что там
    записан код ошибки я понял из книг.

    FT245 запускаю с устройства DLP-USB245M www.dlpdesign.com Продается в Москве в Чипе и Дипе
    на Гиляровского во втором подъезде на витрине справа 960 рублей.
      Цитата gorin @
      Очень приятная для меня информация. Я это не знал и это в книгах не написано.

      Все написано, просто внимательно читать надо:
      Цитата Кулаков Программирование на аппаратном уровне стр 711

      биты 0-10 (ActLen) - объем данных, переданый в результате транзакции (значение данного поля на единицу меньше количества переданных байтов)

      Да и в спецификации на UHCI это есть.

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

      Цитата gorin @
      Транзакция SETUP состоит из трёх составляющих:
      1) Cам SETUP с адресом и номером конечной точки
      2) Пакет DATA0 или DATA1 c восемью байтами для GET_DESCRIPTOR
      3) HANDSHAKE

      Все правильно, кроме того, что пакет с GET_DESCRIPTOR может быть только с DATA0.
      HANDSHAKE это и есть ACK, NAK или STALL. По этому после SETUP пакета и не было ACK, он идет только после пакета DATA0.
      |Token (SETUP)|DATA0 OUT (Request)|Handshake(ACK/NAK/STALL)| Эти три пакета называются транзакцией.


      Цитата gorin @
      23-16 биты второго dword'а Transfer Descriptor'a я их смотрю, но пока не придавал им значения,
      т.к. считал, что микруха мне не отвечает

      А микруха тут не причем, это контроллер выставляет эти биты, и там есть бит 18, который сообщает о том, что устройство не отвечает.
        Gerret cпасибо. Нашел в Кулакове и в USB Specification.
        И что GET_DESCRIPTOR может быть только с DATA0 тоже не знал. Бит 18 тоже ценный.
        Еще подумал про SET_ADDRESS. Его действительно имеет смысл попробовать, потому что у него
        нет фазы с данными ни DATA IN ни DATA OUT, а значит от FT245 может быть придет HANDSHAKE.
        Сегодня буду всё пробовать.
        С пятницы ухожу в отпуск на 2 недели, дома интернета нет и в следующий раз
        войду на форум 15 января.
          Люди, что такое SCSI transparent command set.
          На t10.org несколько десятков документов, какой из них нужен?
            USB Mass Storage?
            http://www.t10.org/ftp/t10/drafts/s2/
            А конкретно документ: http://www.t10.org/ftp/t10/drafts/s2/s2-r10l.pdf (6.1Мб)
            Остальное там дополнения всякие...

            Да, на t10 что-то найти это убийство.
            Второй раз по просьбе ищу - второй раз удивляюсь.
            Кучей всё свалили, хоть бы поиск сделали :(
              Спасибо огромное, как я понимаю SCSI команды надо посылать в OUT endpoint, а ответ получать из IN endpoint?
                Да, только с тригерами не намути :)
                Т.е. когда ты посылаеш пакеты через Bulk Out, после резета Bulk Out или резета устройства (есть в спецификации на Bulk Only USB Mass Storage) - картина должна быть такая: DATA0, DATA1, DATA0, DATA1...
                Т.е. тригер надо менять и сохранять постоянно его значение для конечной точки.
                Скажем если ты послал 2Кб, потом шлёш ещё 2Кб.
                Если после первой транзакции у тебя тригер получился DATA1, то следующую надо начинать именно с него.
                Иначе пакеты не пройдут.
                Плюс SCSI команды шлются не в чистом виде, а в обёртке (протокол тоже описан в Bulk Only Transport).
                  Спасибо за совет.
                  У меня не получается Bulk IN транзакция (команда INQUIRY).
                  Контроллер OHCI отвечает STALL, а комп и вовсе виснет, может выравнивание данных надо делать или же
                  какие нибудь биты надо поменять в ED и TD дискрипторах.
                  Да, кстати адресс Bulk IN ендпоинта в ED дискрипторе с 0x80 должен быть?
                    Цитата PRT @
                    Да, кстати адресс Bulk IN ендпоинта в ED дискрипторе с 0x80 должен быть?

                    Нет, этот бит служит только для того, чтобы при инициализации можно было определить в какие конечные точки можно писать, а из каких читать.
                    В пакете адрес указывается без этих битов, т.е. endpoint_addr AND 0Fh
                      Насчет тригеров:
                      Для BULK OUT должен быть свой, а для BULK IN - свой? или один для оба endpoint-a?
                        Для каждого свой.
                          А правильно ли в ToggleCarry всегда писать 0, а в DataToggle (2 | Toggle),
                          заранее спасибо, вы мне очень помогаете.
                            А какой смысл выставлять TaggleCarry, если его значение все равно использоваться не будет (2 | Toggle)? ToggleCarry в таком случае можно вообще не трогать
                              Я так и думал. Я команду INQUIRY пытаюсь сделать следующим образом:
                              выполняю Reset, затем ClearFeature для обеих ендпоинтов, дальше
                              посылаю CBW в BULKOUT (выполняется без ошибок), далее BULKIN отвечает STALL.
                              уже третий день на месте топчусь :wall:
                                INQUIRY получился, урааааааааа
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 2 3 [4] 5 6 ...  50 51


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