На главную Наши проекты:
Журнал   ·   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) « Первая ... 8 9 [10] 11 12 ...  50 51  ( Перейти к последнему сообщению )  
> Желающим USB под ДОС , Welcome!!!
    Так она не вызывает STALL потому что у неё нет стадии передачи данных.
    Т.е. у READ_CAPACITY: CBW, BULK_IN (STALL), CSW(Error), а у TEST_UNIT_READY: CDW, CSW(Error).
    Что-то мне кажется тут всё дело в REQUEST_SENSE...
    Потому что у меня READ_CAPACITY не первая команда, первая INQUIRY...
    В общем интересный момент - надо поэкспериментировать :)

    А логи лучше в архиве (форум только zip вроди позволяет) к сообщению прикрепи или сотри просто, а то модераторы нервничать будут.
    Архивы в быстром ответе не цепляются, надо в шапке темы "Ответ" нажать.
      Цитата cppasm @
      Так она не вызывает STALL потому что у неё нет стадии передачи данных.
      Т.е. у READ_CAPACITY: CBW, BULK_IN (STALL), CSW(Error), а у TEST_UNIT_READY: CDW, CSW(Error).
      Что-то мне кажется тут всё дело в REQUEST_SENSE...
      Потому что у меня READ_CAPACITY не первая команда, первая INQUIRY...
      В общем интересный момент - надо поэкспериментировать

      у меня тоже первая inquiry, проходит нормально. потом request_sense, тоже нормально. потом если делать read capacity - stall, если test - error. два раза подряд делать read_capacity я еще не пробовал :)
        еще интересное наблюдение. у некоторых флешей boot sector смещен относительно 0-го адреса :( причем у разных по-разному. и что самое интересное, винда их понимает правильно. никто про такое нигде не слышал?
          На тех, что я видел, если boot_sector был смещен, то в нулевом секторе лежала MBR, от туда и доставал адрес boot_record'a
            Цитата Gerret @
            На тех, что я видел, если boot_sector был смещен, то в нулевом секторе лежала MBR, от туда и доставал адрес boot_record'a

            спасиб, надо посмотреть. хотя по-моему, там не было сигнатуры MBR (AA 55), а была сигнатура обычного boot сектора (55 AA)
              А с каких пор у них разные сигнатуры??? :blink: У них у обоих 0x55 0xAA вообще-то
                Цитата Gerret @
                А с каких пор у них разные сигнатуры??? У них у обоих 0x55 0xAA вообще-то

                гм. и правда. а почему я решил наоборот? странно. а как тогда их различать? проверять валидность значений в таблице разделов?
                  Я проверял наличие сигнатуры 0x29 у boot_record'a смещение 0x26. Если на этом месте нету 0x29 я считал, что это MBR, если есть, то boot_record.

                  Добавлено
                  Это провда только для FAT16, с FAT32 не сталкивался пока...
                    Цитата Gerret @
                    Я проверял наличие сигнатуры 0x29 у boot_record'a смещение 0x26. Если на этом месте нету 0x29 я считал, что это MBR, если есть, то boot_record.

                    логично. спасибо за совет
                      Win2k и WinXP по умолганию форматируют флэшки как дискеты, т.е. без разбиения на разделы.
                      А если форматировать в Win98 или сторонними программами, то создаётся раздел, т.е. форматируется как HDD.
                      Цитата Gerret @
                      Я проверял наличие сигнатуры 0x29 у boot_record'a смещение 0x26. Если на этом месте нету 0x29 я считал, что это MBR, если есть, то boot_record.

                      На самом деле не сильно универсальный способ, хотя для форматированных средствами системы накопителей подойдёт.
                      Просто 0х29 - это сигнатура расширенной загрузочной записи, а её может и не быть даже у нормального Boot Sector'a...
                      Можно проверять таблицу разделов - чтобы все значения были правильными и чтобы в конце нулевого сектора каждого раздела (BootSector) была сигнатура.
                      Хотя может это и черезчур параноидально :)
                      Сообщение отредактировано: cppasm -
                        Цитата cppasm @
                        На самом деле не сильно универсальный способ, хотя для форматированных средствами системы накопителей подойдёт.
                        Просто 0х29 - это сигнатура расширенной загрузочной записи, а её может и не быть даже у нормального Boot Sector'a...
                        Можно проверять таблицу разделов - чтобы все значения были правильными и чтобы в конце нулевого сектора каждого раздела (BootSector) была сигнатура.
                        Хотя может это и черезчур параноидально

                        ну в общем логика понятна, главное принцип ясен. насколько детально анализировать каждый сам решит :) кстати, а FS кто как определяет? меня в первую очередь FAT16 интересует
                          Цитата sergik_vrn @
                          кстати, а FS кто как определяет?

                          В каком смысле?
                          Т.е. какие FS интересуют - в общем случае универсально сделать не полчится...
                          Если только FAT - тогда FAT12, FAT16 и FAT12 различают исключительно по количеству кластеров в разделе.
                          Детальное описание алгоритма есть в официальной спецификации на FS FAT от Microsoft (по моему fatgen103.pdf).
                          Если интересует ещё NTFS - там в BootSector'е некоторые поля отличаются от FAT.
                          А вообще надо просто различия в FS искать и по ним определять...
                            Цитата cppasm @
                            В каком смысле?
                            Т.е. какие FS интересуют - в общем случае универсально сделать не полчится...

                            ну меня FAT16 интересует, я уже говорил. то есть достаточно будет отличить ее от любой другой. спасибо за наводку, почитаю документик
                              Не совсем в тему, но может кому интересно...
                              В открытом доступе появилась спецификация PIMA15740.
                              Спецификация для цифровых фотокамер (протоколы, команды), которые НЕ распознаются как флэш а имеют свой собственный класс USB устройств.
                              Лежит здесь http://www.broomscloset.com/closet/photo/exif/PIMA15740-2000.PDF
                              Как долго лежать будет не знаю.
                              Ещё год назад искал - хотели ~150 зелёных бумажек с американскими президентами :)
                              Это дополнение к http://www.usb.org/developers/devclass_docs/usb_still_img10.zip
                              В спецификации USB описана как бы обёртка, а какие команды в неё заворачивать описано в PIMA.
                              В общем принцип на Mass Storage похож.
                              Вот нашёл ссылку на саму страницу http://www.broomscloset.com/closet/photo/exif/index.html
                              Сообщение отредактировано: cppasm -
                                Всем добрый день! Помогите, пожалуйста, разобраться начинающему. Пытаюсь работать с USB Flash Drive. В компьтере используется Universal Host Controller. Порядок действий: SetAddress, GetConfigurationDescriptor, SetConfiguration. До сих пор все в порядке, пакеты успешно уходят и приходят. Потом пытаюсь послать в Data Out команду INQUIRY или GET_CAPACITY. В ответ получаю вроде бы правильный CSW со статусов GOOD, правильным тегом, но: собственно данных не наблюдаю. В случае с GET_CAPACITY поле dCSWDataResidue = 0. Структуру посылки с командой GET_CAPACITY заполняю так
                                ;Get Capacity Command
                                mov dword [edi], 43425355h
                                mov dword [edi+4], 11h
                                mov dword [edi+8], 8
                                mov byte [edi+12], 80h
                                mov byte [edi+13], 00h
                                mov byte [edi+14], 10
                                mov byte [edi+15], 25h
                                mov byte [edi+16], 00h
                                mov byte [edi+17], 00h
                                mov byte [edi+18], 00h
                                mov byte [edi+19], 00h
                                mov byte [edi+20], 00h
                                mov byte [edi+21], 00h
                                mov byte [edi+22], 00h
                                mov byte [edi+23], 00h
                                mov byte [edi+24], 00h
                                Итак, что мне не понятно:
                                1) Почему не текут данные, что я делаю не так?
                                2) В документации и в Кулакове используется понятие "Сброс порта". Что это такое и как это делается? Я произвожу только общий сброс контроллера. Может, из-за этого?
                                3) Windows в списке устройств USB показывает помимо универсального хост-контроллера еще "Корневой концентратор USB", причем все подключенные устройства можно увидеть, если залезть в его свойства. Значит ли это, что с устройствами надо работать, используя спецификации для хабов, в частности, при енумерации?
                                4) На некоторых компах (вполне современных) при попытке прочитать PCI BIOS (как по Кулакову) говорит, что PCI BIOS не обнаружен. Режим 16-разрядный. Как же тогда получить адреса контроллера?
                                Заранее спасибо!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (51) « Первая ... 8 9 [10] 11 12 ...  50 51


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