Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Технический флейм » Как прочитать linear Flash карту в Win7 |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 8 * 9 10 | Печать |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
-MiS- Склонен полагаь, что нормальный доступ к железу дает только Linux. |
-MiS-
Advanced Member
Откуда: Москва Всего сообщений: 682 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 9 мар. 2016 |
Вчера повозился. Ничем под win98 не получилось. Надо пробовать LiveCD. Может я зря морочусь и образ WWENG2 для DECServer700 доступен? {Network Access SW V2.3B BL49.02-62a} |
VAL123 |
Добрый день. Вижу в ветки ребята в теме и готовые помочь. Очень нужно считать карту формата PCMCIA и сделать дамп, но карта не содержит атрибутного чипа в самой карте стоит чип контроллер MB86187 для SRAM памяти (Вроде должен стаять такой чип в Industry Pretec PCMCIA SRAM Card ) Но в качестве память стоят Flash TMS29F040 4 -шт https://pdf.datasheet.live/ddd...C5FMLR.pdf 524288 by 8-bit (4194304-bit) итого 2M И тут бы сказать что это карт SRAM - НЕЛЬЗЯ, батарейки нет Так что походу это Linear Flash, поправите меня если я не прав Сразу скажу карта безымянная WindoЙ не распознается Запускаю Ubuntu 7.04 c CD на ACER Travelmate200 с большими матами без карты 1. $ sudo dmesg 2 вставляю карту 3.$ sudo dmesg pccard: PCMCIA card inserted into slot 1 cs: menory probe 0xc0200000-0xc02fffff: excluding 0xc0200000-0xc02fffff cs: menory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff cs: menory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff cs: menory probe 0x30000000-0x39ffffff: excluding 0x30000000-0x39ffffff cs warning: no high menory space available! 4. $ sudo -i и все мое понимание Unix закончилось тут как бы должно быть 5.# dd if=/dev/???????? of=dump.img bs=2M count=1 не понимаю как мое устройство описать |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
VAL123 Полагаю, что Linux карточку тоже не увидел. Попробуйте поменять что нибудь: ноут или Linux. |
Кай
Гость
Divine Assassin Откуда: извне (from beyond) Всего сообщений: 13709 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2010 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 31 августа 2018 22:55 Сообщение отредактировано: 31 августа 2018 22:56
Попробуйте поменять что нибудь: ноут или Linux. ...если под NT4 с установленным драйвером TrueFFS карточку не увидит, одно из двух. Я полагаю (по выдаче Линя), карта издохла. Она все пробы эксклюдит. |
alecv
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 5545 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 5 окт. 2004 |
Есть еще более экзотический вариант - вставить эту флешку в старенькую CISCO 3600 и сказать 'show flash'. Она даже марку чипов покажет. По моему 3600 была последняя, у котрой гнездо Linear Flash прямо на морде было. |
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 |
<<Назад Вперед>> | Страницы: 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 тем | |