Подсобите вытащить данные с uSD

Ремонт портативной техники - телефоны, КПК, навигаторы и типа того.
Ответить
Аватара пользователя
Necromant
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб июн 12, 2010 16:14:09
Контактная информация:

Подсобите вытащить данные с uSD

Сообщение Necromant »

Собственно, накрылась uSD карта на 32 гига, бэкапа не было. Просто перестала определяться всеми возможными SDIO ридерами, в отладке на мелкой эмбеддед железяке видно что даже самая первая команда не проходит. А инфа была нужная.
В общем, поняв что SDIO интерфейс пациенте точно труп, как минимум, решил пнуть легаси SPI. Авось повезет. С матами собрал на STM32VL дискавери тестовый стенд, подцепил карту, наваял немного кода, который инициализирует карту, выводит инфу в консоль на уарт и дампит данные по StLink'у (StLink быстрее, чем 115200 xmodem'ом по уарту) Выглядит оно примерно так на болезной карте в отладочной консольке:

Код: Выделить всё

Necromant's SD rescue device
Powered by Antares 0.2-rc1, Insane Mushroom git commit 4b11d5c19e4037f3cca32fd522cf2b5b747b89ae
System running at 24000000
spi: initializing hardware
sd: initialising card
sd: Card ready. type: 2 version: 2 SHDC: yes
sd: manufacturer_id  0x4
sd: oem              A
sd: revision         4.4
sd: serial           0x3000000
sd: manufactured     6/2001
sd: capacity         31897681920 bytes (30420 MiBs)
sd: content          original
sd: write_prot       off
sd: tmp write_prot   off
stlink: Waiting for st-link terminal
stlink: terminal ready, initiating data dump
Dumping block 6692/62300160


На вид все хорошо, вот только... Смущает что год выпуска расшифровался как 6/2001 и серийник подозрительный. Но от раза к разу оно не меняется, объем вроде бы правильный из CSD выдергивается. В который раз кляну себя, что никак не присобачу к библиотеке SPI-SD поддержку CRC, ибо тут оно бы не повредило.
Ну что же, начинаем дампить данные. И вот тут я вижу лютый треш:

Код: Выделить всё

necromant@ilwyn:~/Dev/antares-playground/dump-o-matic/dumpmaker$ cat out.bin |hexdump -C
00000000  04 16 41 53 4d 49 2d 53  44 03 00 00 00 00 16 f1  |..ASMI-SD.......|
00000010  00 7f 00 32 1f 5b 80 00  36 db bf bf 96 c0 00 01  |...2.[..6.......|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  6f 00 00 10 00 00 02 2e  00 00 00 00 00 00 00 00  |o...............|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200  04 16 41 53 4d 49 2d 53  44 03 00 00 00 00 16 f1  |..ASMI-SD.......|
00000210  00 7f 00 32 1f 5b 80 00  36 db bf bf 96 c0 00 01  |...2.[..6.......|
00000220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000230  6f 00 00 10 00 00 02 2e  00 00 00 00 00 00 00 00  |o...............|
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*



Это совершенно не похоже на таблицу разделов. Уж ее-то я ночью разбуди узнаю. И этот кусок повторяется насколько хватило начальных 5ти минутных дампов. (Полный дамп делать придется порядка 20 дней как минимум, максимальная скорость которую получилось сделать моим костылем поверх StLink'а - 24 кбайта/сек, другой отладки под рукой сейчас нет)

Как думаете, что это может значить? И имеет ли смысл снимать полный дамп? Гугл по ASMI-SD не показал ничего вменяемого.

Если кому надо - вот код для моего устройства дампа SD карт: https://github.com/nekromant/dump-o-matic

ADD: Так, понял... Это почему-то содержимое CID, а затем CSDшки, причем с неправильным CRC, но что оно делает на месте блоков данных я что-то не понял.
Отворот и приворот. Потомственный мастер. Выезд со своей отверткой.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Подсобите вытащить данные с uSD

Сообщение coredumped »

Может дурацкий вопрос, но на исправной карточке свою программку испытывали?
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Necromant
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб июн 12, 2010 16:14:09
Контактная информация:

Re: Подсобите вытащить данные с uSD

Сообщение Necromant »

Разумеется. На десятке разных карт от 32 мегабайт до 8 гигабайт, как SD, так и SDHC.
Из багов только нашел, что из одной карты ни в какую CSD не читалось - карта отдавала 0х3 в виде ответа на запрос CSD. А уж блоки данных нормално лезли из всех карт кроме этой.
Отворот и приворот. Потомственный мастер. Выезд со своей отверткой.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Подсобите вытащить данные с uSD

Сообщение coredumped »

Если программка проверена на других карточках успешно, то сами понимаете - похоже ей (карточке) пц, и данным, похоже, то же. :(
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Necromant
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб июн 12, 2010 16:14:09
Контактная информация:

Re: Подсобите вытащить данные с uSD

Сообщение Necromant »

Ну, я не оставляю надежды, так как поведение немного меняется при наличии/отсутствии давления на карту, то подозреваю обрыв контакта. Ближайшее время буду пробовать стравливать компаунд, и смотреть не смогу ли починить. Хуже уже точно не будет.
Отворот и приворот. Потомственный мастер. Выезд со своей отверткой.
Ответить

Вернуться в «Дохлые потаскунчики»