Чтение внутренних регистров SD-карт
Добавлено: 10 ноя 2017, 11:57
В SD-карте есть программно доступные регистры, в которых храниться параметры карты и её настройки. Можно прочитать регистры и узнать какую-нибудь полезную информацию. Регистров около 10-и, в спецификации вы можете узнать о каждом из них.
Спецификацию можно скачать на официальном сайте "SD Association"
(На сайте, в левой колонки перейдите в раздел Downloads -> Simplifed Specifications, соглашаетесь и жмете «I Accept» и качаете "Physical Layer Simplified Specification"). В результате вы скачаете pdf-документ — спецификацию на SD-карты, в ней все подробным образом расписано - какие бывают карты и как с ними работать.)
Кроме того, на этом сайте в разделе "Downloads" имеется утилита "SD Memory Card Formatter" от Ассоциации для правильного форматирования карт.
Вот небольшое пояснение к ней от самой Ассоциации:
—Регистр CID (Card identification data) - содержит данные, по которым можно идентифицировать карту памяти (серийный номер, ID производителя, дату изготовления и т.д.)
—Регистр CSD (Card-specific data) - содержит всевозможную информацию о карте памяти (от размера сектора карты памяти до потребления в режиме чтения/записи).
—Регистр OCR (Operation Conditions Register) - содержит напряжения питания карты памяти, тип питания карты памяти, статус процесса инициализации карты.
Структура CID регистра следующая: Расшифровать данные регистра можно на сайте: Secure Digital Card CID Decoder
Внутренняя информация SD-карты
Информация о SD-карте закодирована в его внутренних регистрах карт. Одним из них является регистр идентификатора карты (CID), 16-байтовый код, который содержит информацию, которая однозначно идентифицирует SD-карту, включая серийный номер карты (PSN), идентификационный номер производителя (MID) и дату изготовления (MDT). Регистр CID устанавливается, когда карта изготовлена и не может быть изменена после ее установки. (Согласно спецификации SD-карты информация должна быть написана только один раз, однако если карта не соответствует спецификации, эта информация может быть изменена!)
Как прочитать CID с SD-карты
Один из способов прочитать CID - использовать ноутбук с гнездом для SD-карт. Считыватели карт в ноутбуках обычно подключаются непосредственно через шину PCI (или IDE-шину). Это не будет работать через устройство чтения карт USB, потому что команда для извлечения информации о карте перехватывается и не понимается считывателями карт. Не все компьютеры со встроенными слотами для карт будут работать, некоторые внутренние считыватели карт подключаются через шину USB.
Предполагая, что у вас есть подходящее оборудование, есть несколько способов, которые вы можете использовать для получения информации о карте. С Linux чтение внутренней SD-карты является простым. Вставьте карту и посмотрите в /sys/block/mmcblk0/device/ (это местоположение может меняться в зависимости от вашей платформы, оно может быть mmcblk1 или в другом месте). В этом месте вы увидите несколько доступных атрибутов, которые включают регистры CID и CSD и информацию внутри него.
Для просмотра CID, выполняем команду из терминала (вызывается Ctrl + Alt + T):
Так же может быть полезна следующая команда, отображающая подробный список файлов в директории с именами, начинающимися на "mmc":
Какая информация находится в CID?
В CID сохраняется следующая информация: Для получения дополнительной информации см. SD Association Simplified Specifications.
А теперь - информация с форума клуба "Клуб Suzuki Vitara":
Необходимые инструменты и условия для чтения регистров SD-карты:
1) наличие SD-карты;
2) ноутбук со встроенным кардридером(USB-кардридер для этой цели не подходит) +
3) загрузочная флешка с линукс-дистрибутивом для чтения CID SD-карты;
4) Android-девайс - телефон/планшет с картридером;
5) минимальные навыки пользователя Android/Linux.
Подробности:
1) Для чтения CID оригинальной навигационной SD-карты потребуется ноутбук со встроенным кардридером и загрузочная флешка с Линукс дистрибутивом.
Я использовал ASUS X301A в связке с Linux Mint 18 "Sarah" - Cinnamon (32-bit).
Этот же дистрибутив Линукса в связке с SONY VAIO VGN-TZ3RMN/N не видел SD-карты.
Не волнуйтесь, операционную систему на ноутбуке переустанавливать не придется. Достаточно создать загрузочную флешку (DVD диск) с Linux Mint и загрузить с нее лаптоп.
Далее, вставляем SD-карту во встроенный кардридер ноута, видим появившееся уведомление о новом девайсе:
Осталось прочитать CID-карты. Есть 2 способа:
1) На рабочем столе кликаем Computer, в открывшемся окне жмем sys/block/mmcblk0/device/cid
2) или вызываем терминал (Ctrl + Alt + T) и в нем вводим команду:
Появившиеся обоими способами цифры/буквы конспектируем удобным способом (или просто копируем файл /sys/block/mmcblk0/device/cid в удобное место для дальнейшего чтения/копирования)
Небольшое дополнение. Если на вашем ноуте нет других SD карт, то всунутая оригинальная навигационная SD карта будет определятся линуксом как mmcblk0 и все вышеприведенные команды верны.
P.S. На скринах CID абсолютно "левой" SD-карты Samsung 2GB
Способ чтения внутренних регистров с помощью Android-устройств - Будет рассмотрен позже и добавлен в этот пост!!!
Кстати - для профессионалов по железу будет полезно прочитать Микроконтроллер – работаем с SD картой без файловой системы.
Там рассматриваются режимы работы с SD-карточкой, в том числе с использованием ATmega328P (или Arduino UNO)!!!
Пост так же будет подвержен информационной обработке - посему за Повторы прошу пока не пинать!...
P.S. При написании данного опуса использовалась информация по ссылкам:
Навигация на SD карточке для GL+
http://new-vitara.ru/forum/viewtopic.php?p=15531#p15531
Микроконтроллер – работаем с SD картой без файловой системы
http://www.cameramemoryspeed.com/sd-mem ... l-numbers/
SD and MMC Block Device Attributes
https://everipedia.org/wiki/Secure_Digital/
Спецификацию можно скачать на официальном сайте "SD Association"
(На сайте, в левой колонки перейдите в раздел Downloads -> Simplifed Specifications, соглашаетесь и жмете «I Accept» и качаете "Physical Layer Simplified Specification"). В результате вы скачаете pdf-документ — спецификацию на SD-карты, в ней все подробным образом расписано - какие бывают карты и как с ними работать.)
Кроме того, на этом сайте в разделе "Downloads" имеется утилита "SD Memory Card Formatter" от Ассоциации для правильного форматирования карт.
Вот небольшое пояснение к ней от самой Ассоциации:
Наиболее интересные регистры:"SD Memory Card Formatter" формирует карты памяти SD/SDHC/SDXC), в соответствии со спецификацией SD File System, созданной SD Association (SDA).
Настоятельно рекомендуется использовать "SD Memory Card Formatter" для форматирования карт SD/SDHC/SDXC, а не использовать инструменты форматирования, поставляемые с отдельными операционными системами. В общем, инструменты форматирования, поставляемые с операционными системами, могут форматировать различные носители, включая карты SD/SDHC/SDXC, но не могут быть оптимизированы для карт SD/SDHC/SDXC, и это может привести к снижению производительности.
—Регистр CID (Card identification data) - содержит данные, по которым можно идентифицировать карту памяти (серийный номер, ID производителя, дату изготовления и т.д.)
—Регистр CSD (Card-specific data) - содержит всевозможную информацию о карте памяти (от размера сектора карты памяти до потребления в режиме чтения/записи).
—Регистр OCR (Operation Conditions Register) - содержит напряжения питания карты памяти, тип питания карты памяти, статус процесса инициализации карты.
Структура CID регистра следующая: Расшифровать данные регистра можно на сайте: Secure Digital Card CID Decoder
Внутренняя информация SD-карты
Информация о SD-карте закодирована в его внутренних регистрах карт. Одним из них является регистр идентификатора карты (CID), 16-байтовый код, который содержит информацию, которая однозначно идентифицирует SD-карту, включая серийный номер карты (PSN), идентификационный номер производителя (MID) и дату изготовления (MDT). Регистр CID устанавливается, когда карта изготовлена и не может быть изменена после ее установки. (Согласно спецификации SD-карты информация должна быть написана только один раз, однако если карта не соответствует спецификации, эта информация может быть изменена!)
Как прочитать CID с SD-карты
Один из способов прочитать CID - использовать ноутбук с гнездом для SD-карт. Считыватели карт в ноутбуках обычно подключаются непосредственно через шину PCI (или IDE-шину). Это не будет работать через устройство чтения карт USB, потому что команда для извлечения информации о карте перехватывается и не понимается считывателями карт. Не все компьютеры со встроенными слотами для карт будут работать, некоторые внутренние считыватели карт подключаются через шину USB.
Предполагая, что у вас есть подходящее оборудование, есть несколько способов, которые вы можете использовать для получения информации о карте. С Linux чтение внутренней SD-карты является простым. Вставьте карту и посмотрите в /sys/block/mmcblk0/device/ (это местоположение может меняться в зависимости от вашей платформы, оно может быть mmcblk1 или в другом месте). В этом месте вы увидите несколько доступных атрибутов, которые включают регистры CID и CSD и информацию внутри него.
Для просмотра CID, выполняем команду из терминала (вызывается Ctrl + Alt + T):
Код: Выделить всё
cat /sys/block/mmcblk0/device/cid (точное местоположение может отличаться)
Код: Выделить всё
ls -l /sys/block |grep mmc
В CID сохраняется следующая информация: Для получения дополнительной информации см. SD Association Simplified Specifications.
А теперь - информация с форума клуба "Клуб Suzuki Vitara":
Необходимые инструменты и условия для чтения регистров SD-карты:
1) наличие SD-карты;
2) ноутбук со встроенным кардридером(USB-кардридер для этой цели не подходит) +
3) загрузочная флешка с линукс-дистрибутивом для чтения CID SD-карты;
4) Android-девайс - телефон/планшет с картридером;
5) минимальные навыки пользователя Android/Linux.
Подробности:
1) Для чтения CID оригинальной навигационной SD-карты потребуется ноутбук со встроенным кардридером и загрузочная флешка с Линукс дистрибутивом.
Я использовал ASUS X301A в связке с Linux Mint 18 "Sarah" - Cinnamon (32-bit).
Этот же дистрибутив Линукса в связке с SONY VAIO VGN-TZ3RMN/N не видел SD-карты.
Не волнуйтесь, операционную систему на ноутбуке переустанавливать не придется. Достаточно создать загрузочную флешку (DVD диск) с Linux Mint и загрузить с нее лаптоп.
Далее, вставляем SD-карту во встроенный кардридер ноута, видим появившееся уведомление о новом девайсе:
Осталось прочитать CID-карты. Есть 2 способа:
1) На рабочем столе кликаем Computer, в открывшемся окне жмем sys/block/mmcblk0/device/cid
2) или вызываем терминал (Ctrl + Alt + T) и в нем вводим команду:
Код: Выделить всё
cat /sys/block/mmcblk0/device/cid
Небольшое дополнение. Если на вашем ноуте нет других SD карт, то всунутая оригинальная навигационная SD карта будет определятся линуксом как mmcblk0 и все вышеприведенные команды верны.
P.S. На скринах CID абсолютно "левой" SD-карты Samsung 2GB
Способ чтения внутренних регистров с помощью Android-устройств - Будет рассмотрен позже и добавлен в этот пост!!!
Кстати - для профессионалов по железу будет полезно прочитать Микроконтроллер – работаем с SD картой без файловой системы.
Там рассматриваются режимы работы с SD-карточкой, в том числе с использованием ATmega328P (или Arduino UNO)!!!
Пост так же будет подвержен информационной обработке - посему за Повторы прошу пока не пинать!...
P.S. При написании данного опуса использовалась информация по ссылкам:
Навигация на SD карточке для GL+
http://new-vitara.ru/forum/viewtopic.php?p=15531#p15531
Микроконтроллер – работаем с SD картой без файловой системы
http://www.cameramemoryspeed.com/sd-mem ... l-numbers/
SD and MMC Block Device Attributes
https://everipedia.org/wiki/Secure_Digital/