Sd card linux cid

Japan Navigation Group

В SD-карте есть программно доступные регистры, в которых храниться параметры карты и её настройки. Можно прочитать регистры и узнать какую-нибудь полезную информацию. Регистров около 10-и, в спецификации вы можете узнать о каждом из них.
Спецификацию можно скачать на официальном сайте «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 и информацию внутри него.

Читайте также:  Linux bash if in one line

Для просмотра CID, выполняем команду из терминала (вызывается Ctrl + Alt + T):

cat /sys/block/mmcblk0/device/cid (точное местоположение может отличаться)

Так же может быть полезна следующая команда, отображающая подробный список файлов в директории с именами, начинающимися на «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) и в нем вводим команду:

cat /sys/block/mmcblk0/device/cid

Появившиеся обоими способами цифры/буквы конспектируем удобным способом (или просто копируем файл /sys/block/mmcblk0/device/cid в удобное место для дальнейшего чтения/копирования)
Небольшое дополнение. Если на вашем ноуте нет других SD карт, то всунутая оригинальная навигационная SD карта будет определятся линуксом как mmcblk0 и все вышеприведенные команды верны.
P.S. На скринах CID абсолютно «левой» SD-карты Samsung 2GB

Способ чтения внутренних регистров с помощью Android-устройств — Будет рассмотрен позже и добавлен в этот пост.

Кстати — для профессионалов по железу будет полезно прочитать Микроконтроллер – работаем с SD картой без файловой системы.
Там рассматриваются режимы работы с SD-карточкой, в том числе с использованием ATmega328P (или Arduino UNO).

Пост так же будет подвержен информационной обработке — посему за Повторы прошу пока не пинать.

Источник

Read SD Card Serial Number from CID

For my current project, I tried to read the SD Card serial number because the number is factory stamped and unchangeable, so it easily could be used to protect embedded firmware from being copied.

The serial number is stored in the Card Identification Register (CID) which is read by \’Command 10\’ as stated in the SD Simplified Specifications. Unfortunately, it is not possible to read the CID of the card with a USB adapter — you need a \’direct\’ SD interface. My iMX233 based development board has 2 of them, so it was an easy task to improve our firmware to read the CID and extract the serial number, but how do I check if I get the correct information?

Читайте также:  Linux создания файла командная строка

Reading SD-Card SID

Luckily the Linux kernel provides the CID via the SD and MMC Block Device Attributes so you may use a Linux device containing a direct SD interface like your Android phone or an embedded Linux board. Unfortunately, you cannot know the real path of the SD card in the /sys file system so I can only give some examples and you have to try out the actual path yourself.

For example, on my Samsung Galaxy Note running Gingerbread, there is a /sys/block/mmcblk0 soft link pointing to:

mmcblk0 -> ../devices/platform/s3c-mshci.0/mmc_host/mmc0/mmc0:0001/block/mmcblk0 mmcblk1 -> ../devices/platform/s3c-sdhci.2/mmc_host/mmc1/mmc1:b368/block/mmcblk1

So I check the CID using the adb tool from the Android SDK (rooting is not necessary):

adb shell # cat /sys/block/mmcblk0/../../cid

On my Olimex iMX233 OLinuXino embedded Linux board I call the following (directly on the board):

cat /sys/block/mmcblk0/device/cid

The resulting hexadecimal number contains the following information:

 Name Field Width CID-bits ------------------------------------------------ Manufacturer ID MID 7 [127:120] OEM/Application ID OID 15 [119:104] Product Name PNM 39 [103:64] Product Revision PRV 7 [63:56] Product Serial Number PSN 31 [55:24] reserved -- 3 [23:20] Manufacturing Date MDT 11 [19:8] CRC6 Checksum CRC 7 [7:1] not used, always 0 -- 1 [0:0] 

To convert the hexadecimal number to a binary one, please have a look at my multiplatform Binary/Decimal/Hexadecimal Converter.

Based on an iMX233 CPU Board it may be easy to build an intelligent USB card-reader, supporting, for example, CID / CSD information and autonomic card tests.

Update:

I got a few emails pointing out that using the CID as copy protection is not a good idea because there are some cards on the market which are not compliant with the standard. These cards don’t prohibit CMD26 in SPI mode and therefore allow writing the CID. However, I\’ve never seen such a card.

Update 2:

You can find an online CID decoder here: Decode SD Card CID Register Data

Mike Bergmann

Technical software developer loving low level, bit peeking, embedded development as well as GUI, OO, and X-platform development.

Источник

Sd card linux cid

Camera Memory Speed
Memory Card Comparison & Performance Tests for Digital Cameras

Internal SD Card Information

Information about an SD card is encoded in its internal card registries. One of these is the Card Identification (CID) Register, a 16 byte code that contains information that uniquely identifies the SD card, including the card serial number (PSN), manufacturer ID number (MID) and manufacture date (MDT). The CID register is set when the card is manufactured and cannot be changed after it is set. (According to SD card specification the information is only to be written once, however if a card does not conform to the specification this information could be changed!)

How to read the CID from an SD card

One way to read the CID is to use a laptop with an SD card slot. Card readers in laptops are usually connected directly through the PCI bus (or IDE bus). This will not work through a USB card reader because the command to retrieve the card information is intercepted and not understood by card readers. Not all computers with built-in card slots will work, some internal card readers are connected through a USB bus.

Читайте также:  Управление кулерами компьютера linux

Assuming you have the proper hardware, there are several methods you can use to get the card information. With Linux, reading the internal SD card information is simple. Insert the card and look under /sys/block/mmcblk0/device/ (this location may change depending on your platform, it may be mmcblk1 or in a different location). Under this location you will see several attributes available that include the CID and CSD registers and the information inside it.

To view the CID, the command is cat /sys/block/mmcblk0/device/cid (the exact location may be different)

What information is in the CID?

The following information is stored in the CID:

Name Field Linux attribute* Description
Manufacturer ID MID manfid Assigned by SD-3C, LLC.
OEM/Application ID OID oemid Identifies the card OEM and/or the card contents. Assigned by SD-3C, LLC.
Product Name PNM name 5 characters long (ASCII)
Product Revision PRV hwrev, fwrev Two binary coded decimal (BCD) digits. Each is four bits. The PRV is in the form x.y. The PRV can also be found by using the hwrev and fwrev, where x=hwrev and y=fwrev
Serial Number PSN serial This 32 bit field is intended to be read as an unsigned integer
Manufacture Date Code MDT date Manufacture date is stored in the form yym (offset from 2000)
CRC7 checksum CRC 7 bit code used for checking errors in the card register

* these are the attribute titles used for the card in Linux

List of Common Manufacturer ID (MID)

Manufacturer ID (MID) are assigned by the SD Assoication (SD-3C LLC). They consider this information confidential so an official list is not published.

The following list was compiled by reading the CID on numerous SD cards. Many card brands are produced by OEM suppliers, and the MID and OEMID may reflect this, or in some cases they appear to show the producer of the card controller. For example, PNY cards have been found with 0x000028 and BE (Lexar) or 0x000027 and PH (Phison).

Company MID OEMID Card brands found with this MID/OEMID
Panasonic 0x000001 PA Panasonic
Toshiba 0x000002 TM Toshiba
SanDisk 0x000003 SD (some PT) SanDisk
Samsung 0x00001b SM ProGrade, Samsung
AData 0x00001d AD AData
Phison 0x000027 PH AgfaPhoto, Delkin, Integral, Lexar, Patriot, PNY, Polaroid, Sony, Verbatim
Lexar 0x000028 BE Lexar, PNY, ProGrade
Silicon Power 0x000031 SP Silicon Power
Kingston 0x000041 42 Kingston
Transcend 0x000074 JE or J` Transcend
Patriot(?) 0x000076 �� Patriot
Sony(?) 0x000082 JT Gobe, Sony
0x00009c SO Angelbird (V60), Hoodman
0x00009c BE Angelbird (V90)

How can I use the information from the CID?

The CID information can be helpful in identifying counterfeit memory cards. We include the CID data in our SD card reviews so you may compare it with your cards.

©2023 CameraMemorySpeed.com. All Rights Reserved. No part of this web site may be reproduced without permission.

Источник

Оцените статью
Adblock
detector