реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> windows не желает форматировать, мой usb mass storage
PriBoris
сообщение Oct 27 2009, 17:37
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352



сообщение об ошибке - 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,остальное нули)
в самом последнем локе все нули
Go to the top of the page
 
+Quote Post
Alex11
сообщение Oct 27 2009, 22:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



При форматировании винды проверяют, что написалось в mass storage. Если не совпадает - идет отлуп. Поставьте сниффер и смотрите логи, или, если есть такая возможность, смотрите логи изнутри устройства, нет ли там неотработанных команд или ошибки в данных.
Go to the top of the page
 
+Quote Post
Diz
сообщение Oct 27 2009, 22:26
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Oct 28 2009, 09:31
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Diz @ Oct 28 2009, 01:26) *
На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту.

Я тоже с невозможностью форматирования своего девайса по виндой столкнулся. Оказывается винда перед форматированием ещё нулевой сектор читает. А флешка чистая и CRC, естественно, не совпадает. Ну я так и отвечал. Так винда циклиласть на чтении 0-го сектора. Вот только не помню, на READ(10) или VERIFY(10) к нему. Пришлось сделать исключение. Для 0-го сектора в CSW всегда говорить, что ошибок не было. После этого начала форматировать.

А заглушки лучше на все неиспользуемые команды поставить.
Go to the top of the page
 
+Quote Post
PriBoris
сообщение Oct 28 2009, 22:01
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352



Цитата(Diz)
На всякий случай - SCSI-команда VERIFY(10) реализована (хотя бы в виде заглушки) ? Винда ее хочет при форматировании, хоть она и не обязательна по стандарту.

VERIFY(10) реализована была, и корректно работала.
Цитата(Alex11)
При форматировании винды проверяют, что написалось в mass storage. Если не совпадает - идет отлуп. Поставьте сниффер и смотрите логи, или, если есть такая возможность, смотрите логи изнутри устройства, нет ли там неотработанных команд или ошибки в данных.

Да, так и оказалось. После долгого и вдумчивого изучения логов от сниффера и из уарта прибора обнаружил, что некоторые блоки флэш неправильно пишутся. Я кое-что недоглядел когда тестировал функции работы с флэш. Исправил ошибку, форматирование заработало.
Большое спасибо всем откликнувшимся.

PS
Пока сниффил встретил непонятную вещь. USBtrace почему-то не показывает большие (в данном случае 512 и т.д.) OUT пакеты. Короткие (типа CSW,CBW) показывает. IN показывает все нормально. Фильтр был отключен.
Пришлось достать из закромов sniffusb - он показывает все нормально. Это и помогло понять причину.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 9 2014, 18:03
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Привет всем. Решил поднять тему, т.к. столкнулся с похожей проблемой при написаниии собственного варианта USB MSD.
Смотрю сниффером и сверяю с логами стандартной флэшки - вроде все так же мой девайс отвечает.

ОС Win7 32-бит. Мое устройство видит. При чем, при подключении девайса, очень долго читает сектор 0 (512 байт), попутно с выдачей других команд, потом сообщает, что устройство не отформатировано и предлагает выполнить форматирование. Нажимаю ОК, но ни одной команды WRITE ОС не посылает. Все по прежнему сводится к чтению нулевого сектора... Через некоторое время выдается сообщение о неудачной попытке форматирования...

В качестве памяти использую AT45DB161, которая командами READ/WRIE читается напрямую.

В чем может быть проблема?
Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 9 2014, 21:54
Сообщение #7


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(prottoss @ Jun 10 2014, 02:13) *
В чем может быть проблема?

SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки.

----

По поводу VERIFY мне тоже любопытно, какая-нибудь ОС использует эту команду по-настоящему?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 10 2014, 00:26
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(GetSmart @ Jun 10 2014, 08:04) *
SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки.

Да. Инфа в этом запросе отдается нормальная. SK = 0, ASK = 0, ASKQ = 0.



--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 13 2014, 06:39
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(GetSmart @ Jun 10 2014, 08:04) *
SCSI_REQUEST_SENSE девайса возвращает корректную информацию? В ней нах-ся готовности и прочие ошибки.

Этот запрос (код 0x03) Windows, в мое устройство, никогда не посылает.
А должна ли быть память отформатирована? Я думаю, что нет, т.к. ОС может сама это сделать, но все же...


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 14 2014, 05:12
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Добил я свой USB MSD rolleyes.gif Ошибки были в структуре программы. cranky.gif Все переделал - все заработало.
Скорость записи - 33 кБ/с, скрость чтения 220 кБ/с. Рад как младенец sm.gif


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 06:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01657 секунд с 7
ELECTRONIX ©2004-2016