Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Технический флейм »   Как прочитать linear Flash карту в Win7
RSS

Как прочитать linear Flash карту в Win7

Нужно прочитать/извлечь данные с linear Flash карты в Win7.

<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 8 * 9 10
Печать
 
-MiS-
Advanced Member


Откуда: Москва
Всего сообщений: 682
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
9 мар. 2016
Вчера повозился. Ничем под win98 не получилось. Надо пробовать LiveCD.
Может я зря морочусь и образ WWENG2 для DECServer700 доступен? {Network Access SW V2.3B BL49.02-62a}
VAL123
Newbie


Всего сообщений: 1
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 авг. 2018
Добрый день. Вижу в ветки ребята в теме и готовые помочь.

Очень нужно считать карту формата 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
Попробуйте поменять что нибудь: ноут или 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
Кай написал:
[q]
Попробуйте поменять что нибудь: ноут или Linux.

...если под NT4 с установленным драйвером TrueFFS карточку не увидит, одно из двух. Я полагаю (по выдаче Линя), карта издохла. Она все пробы эксклюдит.
[/q]
Почему все пробы? Автор написал, что похоже на 2М по размеру и эксклюдится как раз все выше 2M. Возможно, что всё ниже уже подключилось. Может просто сделать ls /dev до подключения карточки и после подключения карточки и сравнить, вдруг какое-то устройство добавилось, а в dmesg не написалось? Не знаю, бывает ли такое... Там сообщения от какого-то cs, может это /dev/cs должен быть?
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
Хочу поделиться простым способом чтения 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
[q]
Традиционным методом, используемым для доступа к флеш-памяти, является FTL, то есть Flash Translation Layer, Уровень Трансляции Флеш-памяти. Этот уровень эмулирует на флеш-памяти поведение блочного устройства, чтобы обеспечить на них работу обычных файловых систем. Однако, создание новой файловой системы или нового драйвера флеш-памяти, работающего с FTL, является сложной задачей и это является причиной изобретения подсистемы MTD. (Владельцем подсистемы MTD является Дэвид Вудхаус, а разработки, связанные с MTD, можно получить на веб-сайте http://www.linux-mtd.infradead.org/. Подсистема MTD была создана как часть основного ядра версии 2.4.) Решение MTD вышеуказанных проблем простое: рассматривать устройства памяти как устройства памяти, а не как диски. Поэтому вместо изменения низкоуровневых драйверов или введения уровня трансляции, измените приложение, чтобы использовать устройства памяти такими, как они есть. MTD очень привязано к приложениям; подсистема MTD состоит из двух частей: драйверы и приложения.

Подсистема MTD не реализует новый вид драйвера, но скорее она связывает любое устройство с драйверами символьных и блочных устройств. Когда драйвер зарегистрирован в подсистеме MTD, она экспортирует такое устройство в оба этих вида драйверов. Почему это делается именно так? Символьное устройство может позволить непосредственный доступ к устройству памяти с использованием стандартных вызовов open/read/write/ioctl. Но в случае, если вы захотите смонтировать обычную файловую систему на такое устройство памяти с помощью традиционного метода, вы сможете также смонтировать её используя блочный драйвер.
[/q]
http://dmilvdv.narod.ru/Transl...cture.html

Во всех современных системах встроенная флеш-память поддерживается в Linux как раз как архитектура MTD. Аналогично была унифицирована и поддержка старых PCMCIA Linear Flash: http://www.linux-mtd.infradead.org/doc/general.html
[q]
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.
[/q]
Вот фрагмент вывода dmesg при втыкании одной из моих карт:

[ 1638.316056] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0
[ 1638.316331] pcmcia 0.0: pcmcia: registering new device pcmcia0.0 (IRQ: 21)
[ 1638.320064] pcmciamtd 0.0: pcmcia: could not parse base and rmask0 of CIS
[ 1638.320471] Found: AMD AM29F080
[ 1638.320477] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0x0 in 16-bit bank
[ 1638.320493] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0x200000 in 16-bit bank
[ 1638.320510] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0x400000 in 16-bit bank
[ 1638.320529] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0x600000 in 16-bit bank
[ 1638.320583] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0x800000 in 16-bit bank
[ 1638.320627] SMART Modular Technologies 12MB FLASH Card  : Found 2 x8 devices at 0xa00000 in 16-bit bank
[ 1638.320646] number of JEDEC chips: 6
[ 1638.326266] pcmciamtd 0.0: mtd0: SMART Modular Technologies 12MB FLASH Card  

Видно, что происходит регистрация устройства 0 на шине pcmcia 0 и вступает в действие драйвер pcmciamtd, который подключает его под именем mtd0, а также нам показывают имя устройства, тип и и число установленных чипов и их адреса в адресном пространстве.

Кроме того, это ещё и PCMCIA устройство, а значит, оно оперируется стандартными утилитами для этой шины. Например, pccardctl
user@host:~$ pccardctl ls
Socket 0 Bridge:     [yenta_cardbus]   (bus ID: 0000<img src="smiles/jeer.gif" align=absmiddle alt=":06:">0b.0)
Socket 0 Device 0:  [pcmciamtd]    (bus ID: 0.0)

user@host:~$ pccardctl ident
Socket 0:
  product info: "SMART Modular Technologies
", "12MB FLASH Card
", "", ""
  function: 1 (memory)


Можно убедиться, что это не блочное, а символьное устройство:
ls -l /dev/mtd0
crw------- 1 root root 90, 0 ноя 19 21:53 /dev/mtd0

ср. с жёстким диском:
ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 ноя 19 21:26 /dev/sda

Символьное устройство обслуживается драйвероом mtdchar, он также предоставляет дополнительные ioctl команды, которые используются, например, утилитами из пакета mtd-utils (см. ниже). Ядро Linux содержит простейший драйвер эмуляции устройства MTD как блочного - mtdblock, но для использования "в лоб" он не подходит.

А почему в быту компьютерщики с этими подробностями не сталкиваются? Дело в том, что на всех потребительских накопителях (карты памяти, USB флешки, SSD) уровень FTL обеспечивается аппаратным контроллером, детали работы которого пользователю и даже системному администратору недоступны (частично могут быть доступны сервисными утилитами, если кому интересно), а программная реализация встречается в таких закрытых устройствах, как в КПК, роутерах, телефонах, планшетах и т.п. Linear Flash - один из немногих примеров, когда всем этим нужно заниматься вручную на ПК, другие примеры - карточки Smart Media/xD и микросхемы DiskOnChip.

Чтение
Скопировать дамп нашей карточки в файл очень просто:

sudo cp /dev/mtd0 путь/имя_файла

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

Файловые системы
Как видно из блок-схемы, уровень FTL в архитектуре MTD возлагается на файловую систему. Традиционные ФС, разработанные для магнитных дисков, работают с флеш-чипами неоптимально и приводят к быстрому износу ячеек. Поэтому были разработаны специальные ФС
  • JFFS - первая файловая система в Linux для Flash памяти (только NOR типа)
  • JFFS2 - добавлена поддержка NAND, сжатие, улучшена производительность
  • YAFFS.
    Эти три работают поверх mtdblock.
  • UBI (Unsorted Block Images) - скорее ближе к диспетчеру разделов. Работает на более низком уровне, обеспечивая несколько логических дисков и производя общее для них выравнивание износа и обработку бэд-блоков, а стиранием блоков и минимизацией износа занимается файловая системе UBIFS. Разработано компанией Nokia и Сегедским университетом (Венгрия) в 2007 году. Наилучшая производительность. Обслуживается отдельным драйвером.
  • LogFS, F2FS - пока в статусе экспериментальных, углубляться в них не буду.

Есть ещё файловые системы только для чтения, 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
Count of MTD devices:           1
Present MTD devices:            mtd0
Sysfs interface supported:      yes

sudo mtdinfo /dev/mtd0
mtd0
Name:                           SMART Modular Technologies 12MB FLASH Card  
Type:                           nor
Eraseblock size:                131072 bytes, 128.0 KiB
Amount of eraseblocks:          96 (12582912 bytes, 12.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Additional erase regions:       0
Character device major/minor:   90:0
Bad blocks are allowed:         false
Device is writable:             true
Eraseblock region 0:  offset: 0 size: 0x20000 numblocks: 0x10
Eraseblock region 1:  offset: 0x200000 size: 0x20000 numblocks: 0x10
Eraseblock region 2:  offset: 0x400000 size: 0x20000 numblocks: 0x10
Eraseblock region 3:  offset: 0x600000 size: 0x20000 numblocks: 0x10
Eraseblock region 4:  offset: 0x800000 size: 0x20000 numblocks: 0x10
Eraseblock region 5:  offset: 0xa00000 size: 0x20000 numblocks: 0x10

Эта информация пригодится нам, если форматировать в UBIFS, да и просто из интереса глянуть можно.

Обслуживанием старого PCMCIA FTL занимается драйвер ftl, переписанный для взаимодействия с подсистемой MTD. Загрузим его: sudo modprobe ftl

Если карточка ранее уже была отформатирована в TrueFFS, можно посмотреть детали:
ftl_check /dev/mtd0Memory region info:
  Region size = 12 mb  Erase block size = 128 kb

Partition header:
  Formatted size = 11640 kb, erase units = 96, transfer units = 1
  Erase unit size = 128 kb, virtual block size = 512 bytes

Erase unit 0:
  Logical unit 0, erase count = -1
  Block allocation: 3 control, 187 data, 47 free, 18 deleted

и т.д.



Форматируем карточку под старый FTL:
sudo ftl_format -r 0 /dev/mtd0
Partition size = 12 mb, erase unit size = 128 kb, 1 transfer units
Reserved 0%, formatted size = 12305920 bytes
Erasing all blocks...
+++++++*++++
Writing erase unit headers...
format successful.

Передёргиваем карточку (без передёргивания у меня не заработало). Появляется новое блочное устройство:
brw------- 1 root root 44, 0 ноя 20 14:57 /dev/ftla
Его размер 11.4 Мб. Это и есть наш FTL раздел.

Дальше, по идее, на нём должны располагаться разделы. Вот как это выглядит на отформатированной под Win9x карточке:
fdisk -l /dev/ftla
Диск /dev/ftla: 11,4 MiB, 11919360 байт, 23280 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x00000000

Устр-во    Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/ftla1 *                2 23279   23278  11,4M             4 FAT16 >32M


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
[ 1357.484072] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0d0000-0x0d3fff:
[ 1357.487086]  clean
[ 1357.487092] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0dc000-0x0dffff:
[ 1357.490124]  clean
[ 1357.490130] pcmcia_socket pcmcia_socket0: cs: memory probe 0xf8200000-0xf99fffff:
[ 1357.508485]  excluding 0xf8f80000-0xf90fffff

Я читал про это, за двумя другими руки до неё не дошли.
Также не рассмотрено форматирование карточки в типично линуксовые 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 оснащены памятью атрибутов?
<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 8 * 9 10
Печать
Полигон-2 »   Технический флейм »   Как прочитать linear Flash карту в Win7
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS