Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.80.122] |
|
Страницы: (51) « Первая ... 2 3 [4] 5 6 ... 50 51 ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
Очень приятная для меня информация. Я это не знал и это в книгах не написано. Статусы транзакций посмотрю поподробней. без 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 рублей. |
Сообщ.
#47
,
|
|
|
Цитата 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, который сообщает о том, что устройство не отвечает. |
Сообщ.
#48
,
|
|
|
Gerret cпасибо. Нашел в Кулакове и в USB Specification.
И что GET_DESCRIPTOR может быть только с DATA0 тоже не знал. Бит 18 тоже ценный. Еще подумал про SET_ADDRESS. Его действительно имеет смысл попробовать, потому что у него нет фазы с данными ни DATA IN ни DATA OUT, а значит от FT245 может быть придет HANDSHAKE. Сегодня буду всё пробовать. С пятницы ухожу в отпуск на 2 недели, дома интернета нет и в следующий раз войду на форум 15 января. |
Сообщ.
#49
,
|
|
|
Люди, что такое SCSI transparent command set.
На t10.org несколько десятков документов, какой из них нужен? |
Сообщ.
#50
,
|
|
|
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 что-то найти это убийство. Второй раз по просьбе ищу - второй раз удивляюсь. Кучей всё свалили, хоть бы поиск сделали |
Сообщ.
#51
,
|
|
|
Спасибо огромное, как я понимаю SCSI команды надо посылать в OUT endpoint, а ответ получать из IN endpoint?
|
Сообщ.
#52
,
|
|
|
Да, только с тригерами не намути
Т.е. когда ты посылаеш пакеты через Bulk Out, после резета Bulk Out или резета устройства (есть в спецификации на Bulk Only USB Mass Storage) - картина должна быть такая: DATA0, DATA1, DATA0, DATA1... Т.е. тригер надо менять и сохранять постоянно его значение для конечной точки. Скажем если ты послал 2Кб, потом шлёш ещё 2Кб. Если после первой транзакции у тебя тригер получился DATA1, то следующую надо начинать именно с него. Иначе пакеты не пройдут. Плюс SCSI команды шлются не в чистом виде, а в обёртке (протокол тоже описан в Bulk Only Transport). |
Сообщ.
#53
,
|
|
|
Спасибо за совет.
У меня не получается Bulk IN транзакция (команда INQUIRY). Контроллер OHCI отвечает STALL, а комп и вовсе виснет, может выравнивание данных надо делать или же какие нибудь биты надо поменять в ED и TD дискрипторах. Да, кстати адресс Bulk IN ендпоинта в ED дискрипторе с 0x80 должен быть? |
Сообщ.
#54
,
|
|
|
Цитата PRT @ Да, кстати адресс Bulk IN ендпоинта в ED дискрипторе с 0x80 должен быть? Нет, этот бит служит только для того, чтобы при инициализации можно было определить в какие конечные точки можно писать, а из каких читать. В пакете адрес указывается без этих битов, т.е. endpoint_addr AND 0Fh |
Сообщ.
#55
,
|
|
|
Насчет тригеров:
Для BULK OUT должен быть свой, а для BULK IN - свой? или один для оба endpoint-a? |
Сообщ.
#56
,
|
|
|
Для каждого свой.
|
Сообщ.
#57
,
|
|
|
А правильно ли в ToggleCarry всегда писать 0, а в DataToggle (2 | Toggle),
заранее спасибо, вы мне очень помогаете. |
Сообщ.
#58
,
|
|
|
А какой смысл выставлять TaggleCarry, если его значение все равно использоваться не будет (2 | Toggle)? ToggleCarry в таком случае можно вообще не трогать
|
Сообщ.
#59
,
|
|
|
Я так и думал. Я команду INQUIRY пытаюсь сделать следующим образом:
выполняю Reset, затем ClearFeature для обеих ендпоинтов, дальше посылаю CBW в BULKOUT (выполняется без ошибок), далее BULKIN отвечает STALL. уже третий день на месте топчусь |
Сообщ.
#60
,
|
|
|
INQUIRY получился, урааааааааа
|