PriBoris 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба сообщение об ошибке - the format did not complete successfully в приборе стоит atmel dataflash 8192 блоков по 512 байт, итого 4мбайт вся флэш прямо отображается в usb mass storage контроллер lpc2368 софт - самописный на основе стандартов и примеров все нужные команды реализованы в hex редакторе все блоки корректно читаются и пишутся как по одному так и по несколько а вот при попытке форматирования ошибка где искать причину ? где-то в windows xp есть логи , по которым можно понять что ей не понравилось ? после попытки форматирования во флэш : что-то невнятное записывается в нулевом блоке - не похожее ни на MBR ни на boot sector с восьмого блока сидит нечто похожее на настоящий FAT длиной 16384 байт (начинается с F8 FF FF FF,остальное нули) в самом последнем локе все нули Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба При форматировании винды проверяют, что написалось в mass storage. Если не совпадает - идет отлуп. Поставьте сниффер и смотрите логи, или, если есть такая возможность, смотрите логи изнутри устройства, нет ли там неотработанных команд или ошибки в данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diz 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту. Я тоже с невозможностью форматирования своего девайса по виндой столкнулся. Оказывается винда перед форматированием ещё нулевой сектор читает. А флешка чистая и CRC, естественно, не совпадает. Ну я так и отвечал. Так винда циклиласть на чтении 0-го сектора. Вот только не помню, на READ(10) или VERIFY(10) к нему. Пришлось сделать исключение. Для 0-го сектора в CSW всегда говорить, что ошибок не было. После этого начала форматировать. А заглушки лучше на все неиспользуемые команды поставить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PriBoris 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту. VERIFY(10) реализована была, и корректно работала. При форматировании винды проверяют, что написалось в mass storage. Если не совпадает - идет отлуп. Поставьте сниффер и смотрите логи, или, если есть такая возможность, смотрите логи изнутри устройства, нет ли там неотработанных команд или ошибки в данных. Да, так и оказалось. После долгого и вдумчивого изучения логов от сниффера и из уарта прибора обнаружил, что некоторые блоки флэш неправильно пишутся. Я кое-что недоглядел когда тестировал функции работы с флэш. Исправил ошибку, форматирование заработало. Большое спасибо всем откликнувшимся. PS Пока сниффил встретил непонятную вещь. USBtrace почему-то не показывает большие (в данном случае 512 и т.д.) OUT пакеты. Короткие (типа CSW,CBW) показывает. IN показывает все нормально. Фильтр был отключен. Пришлось достать из закромов sniffusb - он показывает все нормально. Это и помогло понять причину. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 9 июня, 2014 Опубликовано 9 июня, 2014 · Жалоба Привет всем. Решил поднять тему, т.к. столкнулся с похожей проблемой при написаниии собственного варианта USB MSD. Смотрю сниффером и сверяю с логами стандартной флэшки - вроде все так же мой девайс отвечает. ОС Win7 32-бит. Мое устройство видит. При чем, при подключении девайса, очень долго читает сектор 0 (512 байт), попутно с выдачей других команд, потом сообщает, что устройство не отформатировано и предлагает выполнить форматирование. Нажимаю ОК, но ни одной команды WRITE ОС не посылает. Все по прежнему сводится к чтению нулевого сектора... Через некоторое время выдается сообщение о неудачной попытке форматирования... В качестве памяти использую AT45DB161, которая командами READ/WRIE читается напрямую. В чем может быть проблема? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 9 июня, 2014 Опубликовано 9 июня, 2014 · Жалоба В чем может быть проблема? SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки. ---- По поводу VERIFY мне тоже любопытно, какая-нибудь ОС использует эту команду по-настоящему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 10 июня, 2014 Опубликовано 10 июня, 2014 · Жалоба SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки. Да. Инфа в этом запросе отдается нормальная. SK = 0, ASK = 0, ASKQ = 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 13 июня, 2014 Опубликовано 13 июня, 2014 · Жалоба SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки. Этот запрос (код 0x03) Windows, в мое устройство, никогда не посылает. А должна ли быть память отформатирована? Я думаю, что нет, т.к. ОС может сама это сделать, но все же... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 14 июня, 2014 Опубликовано 14 июня, 2014 · Жалоба Добил я свой USB MSD :rolleyes: Ошибки были в структуре программы. :cranky: Все переделал - все заработало. Скорость записи - 33 кБ/с, скрость чтения 220 кБ/с. Рад как младенец :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться