Основы работы с EMMC
Layder
Z3X-Team
Сейчас и в дальнейшем, при описании работы с EMMC мы будем отталкиваться от работы в программе eMMC tool, которую также называют Easy Jtag Plus.
Модуль eMMC_tool предствляет собой развитие программы EasyJtag Classic в области работы с eMMC. Данный модуль объединяет собой несколько программ типа Direct Odin и Direct Qualcomm, которые изначально были написаны для попыток записи прошивок напрямую в eMMC и общей работы c eMMC.
Основная кнопка программы это Detect EMMC, для проверки подключения и определения, «живая» ли микросхема вообще, т.е. реагирует она на внешние комманды или нет. По данной команде из микросхемы вычитываются основные данные: CID, CSD, размеры разделов, основные биты конфигурации, хранящиеся в Extended CSD (ExtCSD).
CID содержит информацию о производителе микросхемы, название микросхемы, месяц год производства и серийный номер.
ExtCSD представляет собой блок регистров (512 байт), в которых хранится конфигурация микросхемы.
Сама микросхема eMMC представляет собой память с контроллером (интерфейсом), и с точки зрения устройства содержит в себе
1) 4 основных раздела ( ROM1, ROM2, ROM3, RPMB ),
2) до 4 разделов GP ( GP1-GP4 ),
3) регистры конфигурации Extended CSD (ExtCSD)
Раздел ROM1 является основным разделов в который пишутся данные (прошивка), и содержит в себе все разделы,
сформированные с помощью таблицы разделов.
ROM2, 3 (Boot1,2) являются разделами в котором хранится загрузчик, отправляемый в процессор
(например, MTK (Mediatek), Exynox (Samsung)), или откуда процессор сам его берет (Intel, HiSilicon)
Размеры ROM2/3/RPMB можно изменить только на EMMC Samsung до ревизии Extended CSD v1.8 (MMC v 5.1), в остальных случаях их размер остается таким, каким его задали на заводе. В большинстве случаев размер не имеет значения, потому как обычно загрузчики редко превышают размер 512KB. Но есть аппараты, которые используют RPMB и отказываются работать с микросхемами, которые предназначены для аппаратов с процессорами Tegra (Nvidia), в которых обычно конфигурируется размер RPMB равным нулю
Также для процессоров MTK со scatter файлами первых версий (например, для процессоров MT6589), сумма размеров ROM2/3/RPMB не может быть больше начала раздела MBR, который должен быть записан по адресу указанному в scatter, который для MT6589 процессора равен 0x600000 (6MB).
Поэтому eMMC с размерами ROM2/3/RPMB 2/2/2MB или 2/2/0,5MB будет работать с MT6589, а с размерами ROM2/3/RPMB 4/4/4 уже не будет.
Раздел(ы) GP1 создаются на всех типах eMMC, поддерживающих General Partition Configuring, однократно. При этом наблюдались проблемы с созданием разделов GP1-GP4 на микросхемах Toshiba.
Решено RPMB раздел: что это такое, и что с ним можно делать.
Layder
Z3X-Team
В микросхемах памяти eMMC и UFS есть защищенный от доступа раздел, называемый RPMB (Replay Protect Memory Block).
В микросхеме UFS, раздел, выполняющий функции RPMB имеет ID: W-LUN 0xC4
Данный раздел предназначен для хранения информации, к которой закрыт прямой доступ. На рисунке из презентации Samsung, показано, как он работает.
Как это работает более подробно:
Если ключ (Key) отсутствует, то устройство (процессор), программирует ключ в микросхему.
Ключ генерируется из SN процессора и CID eMMC, и, таким образом, ключ для разных процессоров и разных eMMC различен. Дальнейшая работа происходит в режиме как с запрограммированным ключем. Запрограммированный ключ изменить невозможно.
Если ключ (Key) уже существует, то, как правило, счетчик имеет значение больше 0.
С микросхемой, которая уже имеет ключ (16 байт), устройство (процессор) может работать только через закодированные ключом (Key) и счетчиком записи (Counter) данные.
Режим чтения: устройство (процессор) получает значение счетчика из eMMC, запрашивает чтение данных (блоками по 256 байт), получает закодированные счетчиком и ключом данные, расшифровывает их, используя сохраненный ключ и значение счетчика, проверяет валидность данных.
Режим записи: устройство (процессор) получает значение счетчика из eMMC, кодирует данные, используя ключ и счетчик (блоками по 256 байт) и отправляет в микросхему. Микросхема расшифровывает их, используя сохраненный ключ и значение счетчика, проверяет валидность данных. Если данные валидны, происходит запись блока, при этом значение счетчика записи (Counter) увеличивается на 1.
Таким образом, значение счетчика записи (Counter), показывает, сколько блоков по 256 байт (или сколько раз) было записано в область RPMB.
Для того, чтобы произвести запись в раздел RPMB, необходимо знать ключ, который сохранен в микросхеме (eMMC).
Для того чтобы произвести чтение можно пробовать применить определенный способ получения данных. Хотя при этом невозможно гарантировать их валидность, но проведённые командой Z3x Easy JTAG эксперименты показывают, что прочтённые таким способом данные валидны более чем в 90% случаев.
В последних версиях программы Z3x EasyJTAG Classic (3.4.4.0 и выше) добавлен вывод в лог строки состояния RPMB области (записывались ли в нее когда либо данные или нет).
Пример строки в логе программы:
EMMC RPMB is not yet programmed (clear) or NO Error
или
EMMC RPMB is programmed and written 12 times
При этом доступна возможность чтения RPMB экспериментальным способом через выбор раздела RPMB (в комбобоксе выбора ROM).
Важно:
1) при записи Firmware в eMMC происходит переинициализация внутренней NAND памяти eMMC, со стиранием ключа, счетчика и данных RPMB
2) другими способами удалить ключ из RPMB или изменить счетчик, кроме увеличения значения счетчика путем записи данных, закодированных с валидным ключом, невозможно.
Rpmb emmc что это
Сейчас и в дальнейшем, при описании работы с EMMC мы будем отталкиваться от работы в программе eMMC tool, которую также называют Easy Jtag Plus.
Модуль eMMC_tool предствляет собой развитие программы EasyJtag Classic в области работы с eMMC. Данный модуль объединяет собой несколько программ типа Direct Odin и Direct Qualcomm, которые изначально были написаны для попыток записи прошивок напрямую в eMMC и общей работы c eMMC.
Основная кнопка программы это Detect EMMC, для проверки подключения и определения, «живая» ли микросхема вообще, т.е. реагирует она на внешние комманды или нет. По данной команде из микросхемы вычитываются основные данные: CID, CSD, размеры разделов, основные биты конфигурации, хранящиеся в Extended CSD (ExtCSD).
CID содержит информацию о производителе микросхемы, название микросхемы, месяц год производства и серийный номер.
ExtCSD представляет собой блок регистров (512 байт), в которых хранится конфигурация микросхемы.
Сама микросхема eMMC представляет собой память с контроллером (интерфейсом), и с точки зрения устройства содержит в себе
1) 4 основных раздела ( ROM1, ROM2, ROM3, RPMB ),
2) до 4 разделов GP ( GP1-GP4 ),
3) регистры конфигурации Extended CSD (ExtCSD)
Раздел ROM1 является основным разделов в который пишутся данные (прошивка), и содержит в себе все разделы,
сформированные с помощью таблицы разделов.
ROM2,3 (Boot1,2) являются разделами в котором хранится загрузчик, отправляемый в процессор
(например, MTK (Mediatek), Exynox (Samsung)), или откуда процессор сам его берет (Intel, HiSilicon)
Размеры ROM2/3/RPMB можно изменить только на EMMC Samsung до ревизии Extended CSD v1.8 (MMC v 5.1), в остальных случаях их размер остается таким, каким его задали на заводе. В большинстве случаев размер не имеет значения, потому как обычно загрузчики редко превышают размер 512KB. Но есть аппараты, которые используют RPMB и отказываются работать с микросхемами, которые предназначены для аппаратов с процессорами Tegra (Nvidia), в которых обычно конфигурируется размер RPMB равным нулю
Также для процессоров MTK со scatter файлами первых версий (например, для процессоров MT6589), сумма размеров ROM2/3/RPMB не может быть больше начала раздела MBR, который должен быть записан по адресу указанному в scatter, который для MT6589 процессора равен 0x600000 (6MB).
Поэтому eMMC с размерами ROM2/3/RPMB 2/2/2MB или 2/2/0,5MB будет работать с MT6589, а с размерами ROM2/3/RPMB 4/4/4 уже не будет.
Раздел(ы) GP1 создаются на всех типах eMMC, поддерживающих General Partition Configuring, однократно. При этом наблюдались проблемы с созданием разделов GP1-GP4 на микросхемах Toshiba.
Лог детакта eMMC, базовая информация о eMMC.
В настройках eMMC_Tool есть галочка «Shot info about eMMC in log». Данная настройка позволяет выводить только основную информацию в логе детекта eMMC.
Первые строки позволяют понять, есть ли физический контакт по линии CMD, которая служит основной линией передачи команд в eMMC.
Тем не менее, при нестабильности коннекта можно увеличить VIO в программе, это позволит за счет перетока тока из бокса в интерфейс eMMC улучшить коннект с проблемным подключением. Настоятельно не рекомендуется повышать больше чем на 1 шаг или ставить ниже реального VCCQ.
Если CMD Pullup Level занижено ( 500-800mV ), это значит обычно отсутствие PullUp резисторов между линией CMD и VCCQ в интерфейсе подключения eMMC, и это значит, что возможны ошибки детекта или работы с eMMC.
Если CMD Pullup Level сильно занижено ( 100-300mV ), это скорее всего значит, что линия CMD закорочена на землю.
Дальше выводятся размеры ROM1, ROM2, ROM3, RPMB. Т.к. размеры ROM2/3 всегда одинаковы, они выводятся одной строкой.
Для того, чтобы в процессе работы с eMMC были видны основные ее параметры, они дублируются над логом одной строкой или по нажатию на кнопку под ней в расширенном виде с расшифровкой.
В первой строке выводится краткая информация: EMMC Brand, NAME, информация о разделе загрузки (boot from
В расширенном варианте также отображаются цифровые значения регистров 179/177 ExtCSD, значение регистра 162 ExtCSD с расшифровкой.
Кроме этого выводится значение регистра конфигурации [PARTITION_SETTING_COMPLETED], 0x01 в котором означает, что раздел ROM1 окончательно сконфигурирован, и создание в нем или изменение разделов GP1-GP4 невозможно.
В расширенном варианте лога выводится еще строка информация по регистру ExtCSD [PARTITIONING_SUPPORT], который отображает возможности eMMC к созданию дополнительных разделов GP1-GP4, битовый регистр, может иметь значения 0x00, 0x01, 0x03, 0x07. Из них 0x00 означает, что микросхема не поддерживает создание GP1-GP4, остальные значения связаны с вариантами конфигурирования GP1-GP4, чем больше значение тем больше опций при создании этих разделов поддерживает eMMC.
Частично или полностью неисправные eMMC.
Признаки плохого контакта eMMC в сокете или же полной неисправности eMMC являются строки:
Can’t init device. Reason: CMD Timeout Error
Can’t init device. Reason: OCR Ready Timeout Error [Check VCC or eMMC DEAD]
Can’t init device. Reason: CARD is Password Locked
EMMC Password Locked: Yes
У полуживых микросхем в CID выдается информация, которая говорит о том, что микросхема находится в boot-режиме.
Признаком boot-режима eMMC Samsung является eMMC NAME 000000, и rev.0x56. Так же выглядит запуск eMMC Samsung используя TP (test-point). В eMMC Samsung до MMC rev 5.0 (и в некоторых rev 5.0), чаще всего можно восстановить прошивку eMMC, но это не всегда гарантирует, что она после этого долго проработает (зависит от причины, по которой она оказалась в boot).
Для других eMMC, кроме перечисленных Samsung, восстановление firmware eMMC (вывод из boot) пока не предоставляется возможным. При этом нужно учитывать что Hynix и Sandisk падают в boot при значительном износе ячеек памяти, что значит, что долго они работать после возможного восстановления не будут.
Подготовка eMMC для установки в устройство.
Большинство замен eMMC производится на мобильных телефонах и планшетах. И возникает вопрос, что нужно прошить в eMMC, чтобы после её установки в плату мы получили бы или полностью работоспособное устройство, или же, чтобы хотя бы иметь возможность подключить устройство к компьютеру-ноутбуку, чтобы устройство «отдетектилось» как USB устройство.
Тема достаточно широкая, поэтому начнем с простых вещей.
Есть 4 способа это сделать:
1) из файла extcsd, сохранённого с такого же устройства;
2) из файла extcsd, сохранённого с такого же устройства, во время прошивки eMMC;
3) с помощью предустановленных вариантов;
4) вручную.
Вариант 1:
Вариант 2:
Вариант 3:
Вариант 4 (для экспертов):
при BackUp прошивок через «Read by vendor» в папку сохраняется extcsd, и в файле xxxxxxxxxxx_info.txt сохраняется Boot config в таком виде:
В дальнейшем большинство устройств на процессорах MTK программируются (прошиваются) компьютером через родной FlashTool для MTK.
Более подробно в следующих сообщениях по каждому vendor будут инструкции с примерами.
Rpmb emmc что это
| Просмотр и скачивание файлов доступно только зарегистрированным участникам.! |
| Просмотр и скачивание файлов доступно только зарегистрированным участникам.! |
CID содержит информацию о производителе микросхемы, название микросхемы, месяц год производства и серийный номер.
ExtCSD представляет собой блок регистров (512 байт), в которых хранится конфигурация микросхемы.
Сама микросхема eMMC представляет собой память с контроллером, и содержит в себе 4 основных раздела (boot1, boot2, bin, EXT_CSD)
Раздел bin является основным разделов в который пишутся данные (прошивка), и содержит в себе все разделы, сформированные с помощью таблицы разделов.
Boot1,2 являются разделами в котором хранится загрузчик,отправляемый в процессор
CID содержит информацию о производителе микросхемы, название микросхемы, месяц год производства и серийный номер.
ExtCSD представляет собой блок регистров (512 байт), в которых хранится конфигурация микросхемы.
Сама микросхема eMMC представляет собой память с контроллером, и содержит в себе 4 основных раздела (boot1, boot2, bin, EXT_CSD)
Раздел bin является основным разделов в который пишутся данные (прошивка), и содержит в себе все разделы, сформированные с помощью таблицы разделов.
Boot1,2 являются разделами в котором хранится загрузчик,отправляемый в процессор
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы
Официальный сайт AMCV, AKAI, Asano, Akira, lliew, Aiwa, Artel, BBK, BOE, Bravis, Digma, Dexp, Denn, DEX, Daewoo, Dyon, Doffer, Erisson, Elenberg, Ergo, Engalon, Hyundai, HOLLEBER, Satelit, Sumato, Soundmax, Starwind, Supra, Saturn, Sony, Shivaki, Samsung, Sharp, Strong, SHOWNIC, SkyLine, PRESTIGIO, Yuno, Rolsen, HI, JVC, Mystery, Telefunken, HiKeen, HELIX, Hisense, Hamber, Herenthal, Harper, Hartens, Hisense, Hoffson, HELIX, Kivi, LG, Liberton, Liberty, Loview, Lentel, Leben, Loview, LEFF, Lumus, Mirta, Mystery, Manta,OzoneHD,Panasonic, Philips, Pioneer, Reca, Rotex, Rainford, Rolsen, RUIMATECH, TCL, Thomson, Toshiba, Tevion, Nesons, Neko, NEI, Novex, Prime Technics, Vinga, Comer, Grunkel, Quarton, KROHLER, YASIN, Vesta, Xiaomi,Terris, Trony, Irbis, Fusion, xiaomi mi, TDLex, Gazer, Grunhelm, Glofiish, Kruger&Matz, VILGRAND, ORFEY, AVEX, NEONIX, Blaсkton, TopDevice, HIBERG, QUARTON, Olto
Русские Блоги
EMMC Принцип 2: Введение в EMMC
EMMC это аббревиатура для встраиваемых MultiMediaCard. MultiMediaCard, MMC, является стандартной флэш-памяти, которая определяет архитектуру MMC и доступ к интерфейсам и протоколам флэш-памяти. EMMC является расширение MMC для удовлетворения более высоких стандартов производительности, стоимости, объема, стабильность, простота в использовании.
Общая архитектура EMMC показано в следующем изображении:
Внутренняя часть EMMC можно разделить на три части: флэш-памяти, флэш-контроллера и хост-интерфейс.
1. Flash Memory
Флэш-память является энергонезависимой памятью, как правило, используется во встроенных системах для хранения системы, приложений и данных и т.д., похожую на жесткие диски в системе ПК.
В настоящее время, флэш-память, которая является внутренней по отношению к EMMC, используемой в мобильных устройствах, таких как мобильные телефоны и планшеты, принадлежит NAND Flash, и может быть ссылка более подробную информацию о NAND FLASH. Flash Memory Глава.
EMMC разделяет несколько основных направлений для внутренней флэш-памяти, как показано ниже:
BOOT Area Partition 1 & 2
Этот раздел предназначен главным образом из системы загрузки EMMC.
Разделенные данные, после того, как EMMC включен, вы можете прочитать его через очень простой протокол. В то же время, большая часть СнК может быть сконфигурирован с помощью GPIO или плавкий предохранитель, так что код ПЗУ включен силой, и загружать содержимое раздела EMMC загрузки в SRAM внутри SOC.
RPMB Partition
RPMB является referusion из Replay Защищенный блок памяти, который гарантирует, что данные, сохраненные внутри RPMB не незаконно подделан с данными по HMAC SHA-256 и записи счетчика.
В практических приложениях, перегородки RPMB часто используются для сохранения данных, связанных с безопасностью, таких как данные отпечатков пальцев, безопасные ключи, связанные с платежными, и тому подобное.
General Purpose Partition 1~4
Эта область используется в основном для систем хранения данных или пользовательских данных. Общее назначение раздела обычно не существует, когда чип будет отправлен, и будет существовать после активной конфигурации.
User Data Area
Эта область в основном используется для хранения системных и пользовательских данных.
Область пользовательских данных, как правило, выполняет перераспределение, например, как в Android системы, как правило, разделяющий бутс, систему, UserData и т.д. в этой области.
Для получения более подробной информации относительно EMMC раздела, пожалуйста, обратитесь к Управление разделами EMMC Глава.
2. Flash Controller
Когда Nand вспышка обращается к хосту, на стороне хоста, как правило, требуется NAND Flash Translation Layer, NFTL или файловая система NAND флэша, чтобы сделать плохое управление блоком, ECC, и т.д.
EMMC интегрирует контроллер вспышки внутри, чтобы завершить функцию баланса, плохого управления блока, проверка ECC и других. По сравнению с прямым доступом NAND Flash до конца Хоста EMMC блокирует физические характеристики NAND Flash, которые могут уменьшить сложность программного обеспечения HOST, что позволяет хосту сосредоточиться на верхнем бизнесе, сохраняя специальную обработку для NAND Flash. В то же время, EMMC намного лучше, чем Nand Flash с использованием таких технологий, как Cache, Array памяти.
3. Host Interface
Связь между EMMC и хостом показана ниже:
Использование каждого сигнала выглядит следующим образом:
CLK
Часы сигнала для синхронизации
Data Strobe
Этот сигнал является таким же, как сигнал тактовой частоты, и вывод сигнала CLK от конца устройства, а также используется для синхронизации данных, выводимых из конечного устройства. Этот сигнал вводится в EMMC 5.0.
CMD
Этот сигнал используется для отправки команды хозяина и ответ устройства.
DAT0-7
8 бит шина для передачи данных.
Связь между хозяином и EMMC инициируется хост для запуска с командой. Различные команды, устройство будет производить различные ответы. Для подробных протоколов связи, пожалуйста, обратитесь к Протокол шины EMMC Глава.















