Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Технический флейм » Как прочитать linear Flash карту в Win7 |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 8 9 * 10 | Печать |
ys05
Advanced Member
Откуда: spb Всего сообщений: 389 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 27 фев. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 2 сентября 2018 15:04 Сообщение отредактировано: 2 сентября 2018 15:04
Кай написал: Почему все пробы? Автор написал, что похоже на 2М по размеру и эксклюдится как раз все выше 2M. Возможно, что всё ниже уже подключилось. Может просто сделать ls /dev до подключения карточки и после подключения карточки и сравнить, вдруг какое-то устройство добавилось, а в dmesg не написалось? Не знаю, бывает ли такое... Там сообщения от какого-то cs, может это /dev/cs должен быть? Попробуйте поменять что нибудь: ноут или Linux. |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
ys05 cs - это Card Socket служба PCMCIA. В Линухе как было отмечено ранее, такие устройства долдны видится как mtd (memory technology device). http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html попробовать # pccardctl ls и # lspcmcia |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 ноября 2018 22:10 Сообщение отредактировано: 4 ноября 2018 22:13
Хочу поделиться простым способом чтения linear flash PCMCIA карт, наличие микросхемы памяти атрибутов внутри карты не требуется. Первоначально пробовалось с linux slackware, результат был примерно как у VAL123. Достаточно воспользоваться FreeBSD 4.11. Имеется команда pccardc, которая в том числе позволяет читать память атрибутов: pccardc rdattr slot length offset slot это номер PCMCIA слота (как правило 0 или 1), lenght и offset в комментариях не нуждаются. Достаточно в коде утилиты сбросить флаг MDF_ATTR, что заставит драйвер читать common memory, что нам и нужно (я на всякий случай взвел еще флаг 1WS и некоторые другие). После этого можно получать дампы главной памяти в hex виде. Чтобы получить нормальный дамп, я добавил в код создание файла flash.bin. Прилагаю измененный rdattr.c (/usr/src/usr.sbin/pccard/pccardc). Конечно правильнее (и без проблем!) добавить новый ключ, типа rdcommem, это было сделано на скорую руку, как быстрое решение проблемы чтения карты без атрибутного чипа. Проверялось только с одной картой. Надеюсь пригодится кому-нибудь. Вот измененный rdattr.c https://yadi.sk/d/Efl61XyjG5uU_w |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
Перепали и мне в лапы три карточки от сетевого оборудования Cisco, две на 12 Мб и одна на 20 Мб. Воткнул в ноут с линуксом, сдампил без проблем, ничего интересного в содержимом не увидел. Решил попробовать заставить её работать как обычный (почти) сменный (почти) диск. В результате это вылилось в целое исследование с элементами археологии и детектива, на которое я убил несколько дней. Начнём с теории. Флеш-память не может напрямую использоваться как блочное устройство, т.е. подобно дискете или жёсткому диску. Во-первых, на неё нельзя сразу писать новую информацию поверх старой - нужно сначала стереть нужный блок. Во-вторых, блоки для стирания довольно велики, гораздо больше типичного размера сектора. В-третьих, имеет место износ ячеек, для противостояния которому необходимы специальные файловые системы и учёт числа записей и стираний. В-четвёртых, запись во флеш-чип требует выдерживания временных диаграмм. FTL Чтобы работать с флеш-памятью как с традиционным диском, не задумываясь об особенностях носителя, нам необходим уровень абстракции FTL (Flash translation layer), который обслуживает эмуляцию секторов, запись, стирание, распределение свободных блоков, контроль и обход сбойных блоков, подробнее - тут: http://www.linux-mtd.infradead...raw_vs_ftl PCMCIA Flash - чуть ли не первый стандарт сменных флеш-накопителей для ПК, и соответственно стандарты на его организацию древние, как говно мамонта. Базируются они на разработках компании M-Systems 1993 года. Эта компания более известна по собственным устройствам DiskOnChip (даташит), о котором так или иначе придётся тоже рассказать. В нём использовалась TrueFFS - программа в начале флешки, сочетавшая в себе функции загрузчика и драйвера уровня BIOS, и обеспечивающая FTL. Поверх этого уровня использовались обычные ФС, например FAT. Доступ к флешке и обслуживание FTL в Linux осуществляется(-лся?) драйвером doc. Так вот, архитектура ихней FTL была стандартизирована PCMCIA Group. Краткую версию стандарта можно глянуть Understanding%20the%20flash%20...on.pdf]тут. Пример работы с картами Linear Flash в старом Linux можно глянуть тут: http://pcmcia-cs.sourceforge.n...html#ss3.7 Обслуживались карты драйвером ftl_cs. Усовершенствованием FTL для поддержки NAND Flash является NFTL. В Linear Flash, насколько мне известно, встречается только NOR Flash. MTD (Memory Technology Device) http://dmilvdv.narod.ru/Translate/ELSDD/elsdd_mtd_model.html http://www.linux-mtd.infradead.org/. Подсистема MTD была создана как часть основного ядра версии 2.4.) Решение MTD вышеуказанных проблем простое: рассматривать устройства памяти как устройства памяти, а не как диски. Поэтому вместо изменения низкоуровневых драйверов или введения уровня трансляции, измените приложение, чтобы использовать устройства памяти такими, как они есть. MTD очень привязано к приложениям; подсистема MTD состоит из двух частей: драйверы и приложения.Традиционным методом, используемым для доступа к флеш-памяти, является FTL, то есть Flash Translation Layer, Уровень Трансляции Флеш-памяти. Этот уровень эмулирует на флеш-памяти поведение блочного устройства, чтобы обеспечить на них работу обычных файловых систем. Однако, создание новой файловой системы или нового драйвера флеш-памяти, работающего с FTL, является сложной задачей и это является причиной изобретения подсистемы MTD. (Владельцем подсистемы MTD является Дэвид Вудхаус, а разработки, связанные с MTD, можно получить на веб-сайте http://dmilvdv.narod.ru/Transl...cture.html Во всех современных системах встроенная флеш-память поддерживается в Linux как раз как архитектура MTD. Аналогично была унифицирована и поддержка старых PCMCIA Linear Flash: http://www.linux-mtd.infradead.org/doc/general.html Вот фрагмент вывода dmesg при втыкании одной из моих карт: Additionally, MTD supports legacy FTL/NFTL "translation layers", M-Systems' DiskOnChip 2000 and Millennium chips, and PCMCIA flashes (pcmciamtd driver). But the corresponding drivers are very old and not maintained very much. [ 1638.316056] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0 Видно, что происходит регистрация устройства 0 на шине pcmcia 0 и вступает в действие драйвер pcmciamtd, который подключает его под именем mtd0, а также нам показывают имя устройства, тип и и число установленных чипов и их адреса в адресном пространстве. Кроме того, это ещё и PCMCIA устройство, а значит, оно оперируется стандартными утилитами для этой шины. Например, pccardctl user@host:~$ pccardctl ls Можно убедиться, что это не блочное, а символьное устройство: ls -l /dev/mtd0 ср. с жёстким диском: ls -l /dev/sda Символьное устройство обслуживается драйвероом mtdchar, он также предоставляет дополнительные ioctl команды, которые используются, например, утилитами из пакета mtd-utils (см. ниже). Ядро Linux содержит простейший драйвер эмуляции устройства MTD как блочного - mtdblock, но для использования "в лоб" он не подходит. А почему в быту компьютерщики с этими подробностями не сталкиваются? Дело в том, что на всех потребительских накопителях (карты памяти, USB флешки, SSD) уровень FTL обеспечивается аппаратным контроллером, детали работы которого пользователю и даже системному администратору недоступны (частично могут быть доступны сервисными утилитами, если кому интересно), а программная реализация встречается в таких закрытых устройствах, как в КПК, роутерах, телефонах, планшетах и т.п. Linear Flash - один из немногих примеров, когда всем этим нужно заниматься вручную на ПК, другие примеры - карточки Smart Media/xD и микросхемы DiskOnChip. Чтение Скопировать дамп нашей карточки в файл очень просто: sudo cp /dev/mtd0 путь/имя_файла Дальше можно карту вынуть и полученный файл спокойно анализировать. Я на своей карточке нашёл прошивку для роутера, в ней ничего интересного. Попробуем теперь эту карту задействовать как диск. Файловые системы Как видно из блок-схемы, уровень FTL в архитектуре MTD возлагается на файловую систему. Традиционные ФС, разработанные для магнитных дисков, работают с флеш-чипами неоптимально и приводят к быстрому износу ячеек. Поэтому были разработаны специальные ФС
Есть ещё файловые системы только для чтения, squashfs например. Подробнее о файловых системах для flash в Linux: https://www.ibm.com/developerw...index.html Форматирование Linear Flash по стандарту PCMCIA Для начала нам понадобится пакет mtd-utils (установку пакетов гуглите сами). Список команд устарел, смотрите https://packages.debian.org/sid/amd64/mtd-utils/filelist например. Документации к пакету НЕ ИДЁТ! (в Ubuntu, во всяком случае), и иногда она даже не гуглится. Попробуем почитать информацию об устройствах MTD mtdinfo Эта информация пригодится нам, если форматировать в UBIFS, да и просто из интереса глянуть можно. Обслуживанием старого PCMCIA FTL занимается драйвер ftl, переписанный для взаимодействия с подсистемой MTD. Загрузим его: sudo modprobe ftl Если карточка ранее уже была отформатирована в TrueFFS, можно посмотреть детали: ftl_check /dev/mtd0Memory region info: Форматируем карточку под старый FTL: sudo ftl_format -r 0 /dev/mtd0 Передёргиваем карточку (без передёргивания у меня не заработало). Появляется новое блочное устройство: brw------- 1 root root 44, 0 ноя 20 14:57 /dev/ftla Его размер 11.4 Мб. Это и есть наш FTL раздел. Дальше, по идее, на нём должны располагаться разделы. Вот как это выглядит на отформатированной под Win9x карточке: fdisk -l /dev/ftla fdisk в Linux не позволяет задать начальный сектор менее 2048 (в режиме dos compatibility - менее 8), так что мы воспользуемся sfdisk. Запускаем его (с правами root): sfdisk /dev/ftla и создаём новый раздел: >>> 2,,0x04,* Записываем его: write Появляется новое устройство /dev/ftla1. Теперь mkfs.fat /dev/ftla1 Всё, можно монтировать это устройство и писать на него файлы. Баги ...Вот только отформатированная нами карточка под виндой не откроется, скажет "Диск не отформатирован". И даже если на отформатированную под виндой карточку попытаться записать файлы под линуксом, на винде они не увидятся. В общем, поддержка FTL в линуксе так и осталась недопиленной, нормально работает только чтение. Кроме того, драйвер ftl зависал. Чтобы поставить все эти эксперименты, мне пришлось через более опытного товарища связываться с разработчиками драйверов mtd, чтобы те пофиксили причину зависания, для диагностики пересобирать ядро с включенной отладкой блокировок, патчить и пересобирать драйверы mtd. Конечный результат достигнут на патченых драйверах. Незаконченное И это я ещё с карточкой на 20 Мб не игрался. В линуксе она как типичное PCMCIA устройство не определяется. [ 1357.484062] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0 Я читал про это, за двумя другими руки до неё не дошли. Также не рассмотрено форматирование карточки в типично линуксовые JFFS и UBIFS. При подготовке использовались материалы: https://bootlin.com/blog/managing-flash-storage-with-linux/ http://dmilvdv.narod.ru/Translate/ELSDD/index.html http://www.linux-mtd.infradead.org/index.html http://pcmcia-cs.sourceforge.n....html#toc3 Эксперименты велись на Ubuntu 18.10, ядро 4.18.12 |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
KALDYH, поздно увидел Ваш комментарий, спасибо, интересно! Судя по выводам dmesg, Ваши Linear flash оснащены памятью атрибутов? |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
i8088, на 12 Мб - оснащена. На 20 Мб - по-видимому нет, но под Windows 98 тем не менее опознаётся корректно (ёмкость, тип микросхем и т.д.). Будут проведены дополнительные исследования на эту тему, заодно попытаемся с товарищем разобраться, почему записанное под Linux не открывается под Win9x. |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
KALDYH написал: Это интересно, перед тем как вышеупомянутую 1MB карту мне дали i8088, на 12 Мб - оснащена. На 20 Мб - по-видимому нет, но под Windows 98 тем не менее опознаётся корректно (ёмкость, тип микросхем и т.д.). Будут проведены дополнительные исследования на эту тему, заодно попытаемся с товарищем разобраться, почему записанное под Linux не открывается под Win9x. для чтения, мой товарищ пробовал прочитать ее под разными Win, но ничего путного не получилось. W98 определяет параметры Вашей карты сама или с сторонним софтом? А может быть так, что ATTR memory есть, просто не все поля заполнены? Хорошо бы дамп памяти атрибутов попробовать снять. Относительно читаемости под W98 - проблема в интерпретации FS или с доступом к носителю? |
KALDYH
Advanced Member
Технонекромант Откуда: Кемерово Всего сообщений: 2355 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 июня 2009 |
i8088 написал: С драйвером от M-Systems. Как видится без драйвера - не проверял, позже займусь. W98 определяет параметры i8088 написал: Проблема в интерпретации FTL. Мы сравнивали - разметка блоков не совпадает. Относительно читаемости под W98 - проблема в интерпретации |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 8 9 * 10 | Печать |
Полигон-2 » Технический флейм » Как прочитать linear Flash карту в Win7 |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |