Перейти к содержанию
    

По ходу дела возник такой вопрос: какую файловую систему лучше использовать для флэшены? Гворят что ФАТ32 не очень хороша для нее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый kernel32ddl!

Большое спасибо за подробный ответ, по-больше бы таких постов :)

 

Пользуетесь ли Вы каким-нибудь тулкитом или все приходится делать руками? Слышал и частично видел USBIO, что нашлось даже в наших сусеках, но к сожалению не нашел там раздела Firmware, только Drivers.

 

Интересно мнение спецов на счет этой тулсы, знающих толк в этом деле, уже реализовавших на своих машинках Mass Storage USB Disk

 

И еще чайниковский вопрос.

У меня машинка на х86, на борту CompactFlash, USB организован через последовательный порт машинки на FTDI FT232BM. Сейчас пользуюсь на РС виртуальным СОМ-портом, в машинке реализован FAT16 и протокол файлового обмена. Чтобы это чудо обслужить на РС, пришлось делать свою прогу под тот реализованный протокол. Хочется услышать от знатоков следующее. Если использовать USB Firmware Library от Thesycon (или его подобие), то какие грабли или непреодолимые препятствия ожидают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

one_man_show, спасибо за столь лесную похвалу :) .

 

Что такое USBIO к сожалению понятия не имею :( , лично я делаю своё детище на TMS5509a, в Code Composer Studio от Texas Instrument. Очень помог пример реализации USB устройства на сайте c5000.spectrumdigital.com. Практически 70% всего кода, необходимого для реалиции устройства уже есть в этом примере, оставалось только надстроить его до необходимого класса (добавить нужные команды и т.п.). Вообще разработчики TI сделали хорошую абстракцию от аппаратной части (CSL библиотека USB), никаких портов программировать не надо, берешь функцию, указаваешь ей буфер с данными, номер конечной точки и вперед - данные передаются! Все очень просто.

Для снятия протоколов обмена пользуюсь USB Monitor и SnoopyPro.

На последний ваш вопрос, ответить не могу - ничего в этом не смыслю :smile3046:.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забыл добавить еще одну важную ссылку, при описании документации www.rs232.ru. Там есть спецификация на USB по русски.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как для флешей, но для обычных жестких дисков самый первый сектор на диске - MBR. В нем содержится таблица разделов диска. Далее в начале каждого раздела находится BOOT. Так как MBR в вашем случае имеет неправильную структуру, поскольку он BOOT по формату, то винда и не хочет с ним корректно работать и пытается найти MBR на следующей дорожке. Для проверки данного утверждения необходимо все снести с флешки (забить ее нулями) и попытаться выполнить все операции по разметке средствами самой винды. Если запись/чтение реализованы корректно, то проблем быть не должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На флэшках, структуру которых мне удалось посмотреть MBR и таблицы нет. Идет сразу раздел со своей загрузочной областью. Объясняется это наверно тем, что в ней просто нет неоходимости - раздел-то на флэшке только один.

Наконец-то удалось раздобыть флэшину на 128 мб :cheers: , обнаружил много несоответствий. Как только исправлю все, сообщу о результатах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак... Первым делом пришлось фарматировать флэш средствами винды под ФАТ16. Винда создала там таблицу разделов, мбр и собственно сам раздел. Но тут меня ожидал БАЛЬШОООЙ облом. После полного копирования всего вышеописанного на флэшь.... НИЧЕГО НЕ ИЗМЕНИЛОСЬ!!! Как не работало, так и не стало работать. И тут я обратил внимание на одну проблему, значение которой я поначалу не придал. Ответ винде от моего устройства приходол только тогда, когда винда повторно отправляла команду! А все из-за того, что после передачи ей данных я не отправлят пустые пакеты (SEND_ACK и GET_ACK). Но на этом проблемы не закончились... Некоторые ответы на команды иногда все равно отправлялись только со второго раза. И возникла некая несогласованность.

Объясняю(пример):

Приходит команда(25), в ответ на команду должны передаться данные (data25), затем ответ на команду. Данные сразу не передаются и команда принимается еще раз и данные со второго раза передаются. Затем приходит другая команда и data25 опять передаются.

Вобщем бардак.

ЗНАЮЩИЕ ЛЮДИ БОЛЬШАЯ ПРОСЬБА! ОБЪЯНИТЕ МНЕ ДУРАКУ В КАКИХ СЛУЧАЯХ НАДО ОТПРЯВЛЯТЬ SEND_AKC и GET_ACK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое пустые пакеты SEND_ACK и GET_ACK? Просто usb пакеты нулевой длины (ZLP)?

Какая стоит win? Для первых экспериментов лучше отключить кеширование. Правильно ли контролируешь отработку этапов CBW-DATAIN-CSW? Даже если предположить что размер данных совпадает с размером bulkin, то это не согласуется с командой RBC_READ_CAPACITY_10=0x25, для которой формат данных READ_CAPACITY_DATA равен 8 байт, а размер CSW 13 байт.

 

Лучше отлаживать все команды по отдельности, например через usbio.

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

Тогда сразу видно будет кто виноват.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше отлаживать все команды по отдельности, например через usbio.

уважаемый jhoo не подскажите что это за программа и где ее можно взять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На флэшках, структуру которых мне удалось посмотреть MBR и таблицы нет. Идет сразу раздел со своей загрузочной областью. Объясняется это наверно тем, что в ней просто нет неоходимости - раздел-то на флэшке только один.

Наконец-то удалось раздобыть флэшину на 128 мб :cheers: , обнаружил много несоответствий. Как только исправлю все, сообщу о результатах.

 

Voobsheto nikto ne zapreshaet sdelat' neskol'ko razdelov, po krayney mere na CF ya delal bez problem.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

one_man_show, спасибо за столь лесную похвалу :) .

 

Что такое USBIO к сожалению понятия не имею :( , лично я делаю своё детище на TMS5509a, в Code Composer Studio от Texas Instrument. Очень помог пример реализации USB устройства на сайте c5000.spectrumdigital.com. Практически 70% всего кода, необходимого для реалиции устройства уже есть в этом примере, оставалось только надстроить его до необходимого класса (добавить нужные команды и т.п.). Вообще разработчики TI сделали хорошую абстракцию от аппаратной части (CSL библиотека USB), никаких портов программировать не надо, берешь функцию, указаваешь ей буфер с данными, номер конечной точки и вперед - данные передаются! Все очень просто.

Для снятия протоколов обмена пользуюсь USB Monitor и SnoopyPro.

На последний ваш вопрос, ответить не могу - ничего в этом не смыслю :smile3046:.

 

Еще парочку USB аналайзеров (Виндовые, хотя и USBmon тоже виндовый, использовал его ранее, хорошая прога, но лично мне понравились эти благодаря удобному интерфейсу) - USB Data Logger (http://www.eltima.com/products/usb-data-logger/) и USB Port Sniffer (http://www.eltima.com/products/usb-port-monitor/)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ФАТ тут ни при чем, как уже объяснили, устройство должно только отвечать на команды, выдавать данные по емкости, кол-ву секторов и работать с блоками непосредственно данных, и ей должно быть без разницы, какой кто сектор запрашивает, запрашивает 64й, значит системе виднее, зачем ей это, флешка должна просто предоставить данные из этого сектора.

Если не идет форматирование, значит какая-то служебная инфа не получена.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...