Общий ликбез по eMMC/moviNAND проблемам. ( в разработке )
Вложений: 6
1. Что такое eMMC и когда он появился
Декабря, 2006 года организации MultiMediaCard Association (MMCA) и JEDEC Solid State Technology Association (JEDEC) объявили о принятии стандарта на встраиваемую флешь-память. Этот вид продукции выделен в отдельную товарную категорию, за которой закреплена торговая марка eMMC. Основой для стандарта стала спецификация MMC. Напомним, начало сотрудничества между MMCA и JEDEC в области стандартизации было обозначено соглашением, заключенным ранее в текущем году. Стандарт eMMC – первый результат сотрудничества. eMMC определяет архитектуру, состоящую из интерфейса MMC, флэш-памяти и контроллера. Все компоненты eMMC должны находиться в компактном корпусе типа BGA. Таким образом, стандарт фактически объединил спецификации MMC System Specification v4.1/4.2 и JEDEC BGA. Максимальная скорость интерфейса – 52 Мб/с, напряжение – 1,8 или 3,3 В. Другими словами, память eMMC рассчитана на широкий круг приложений, включая потребительскую электронику, беспроводные устройства, системы навигации и промышленной автоматики. 2. Интерфейс работы с eMMC. eMMC память по подключению мало отличается от простой MMC карты , известны даже случаи успешной подмены чипа eMMC обычной SD-MMC картой * . Общая структура eMMC/MMC чипа ниже : http://gsmforum.su/attachment.php?at...1&d=1393695269 Основные выводы карточки: GND / VSS - земля для сигналов и питания VCC - питание карточки ( ядро контроллера , внутренний RAM и NAND ) Минимальное напряжение 2.8V , максимальное 3.6V. VCCQ - питание IO линий ( опорное напряжение на транзисторах линий D0..D7 CMD CLK) Допустимые значения 1.8 ... 3.3V. CLK - сигнал тактования карты CMD - двух направления линия передачи команд D0..D7 - 3х режимная шина передачи данных режимы передачи - 1бит , 4бита , 8бит ( чем шире , тем быстрее) nRST - линия сброса карты - очень необязательная - но используется в системах с NVIDIA TEGRA. Схема подключения питания к карточке : http://gsmforum.su/attachment.php?at...1&d=1393695391 *Замена eMMC карты микро SD картой возможна только в случае корректной поддержки процессором режима передачи данных по одной линии, вернее автоматическим распознаванием такой конфигурации а также фактом отсутствия SDRAM в корпусе вместе с eMMC 3. Режимы работы карточки 3.1 SPI Legacy режим - использовался в MMC и особо древних eMMC. Теперь его нету потому описывать не буду и не хочу ))) Если кому хочется почтать , то почитать про это можно сдесь 3.2 MultiMediaCard bus protocol - Двухнаправленый Скоростной Протокол ( основной ) После power-on сброса, хост девайс должен инициализировать карту специальным алгоритмом передачи сообщений MultiMediaCard протокола. Каждое сообщение представляет один из следующих элементов: - команда: команда - набор данных, который запускает операцию. Команда посылается от хоста к карте. Команда посылается последовательно по линии CMD. - ответ: ответ - набор данных, который посылается от карты к хосту как ответ на посланную команду. Ответ передается последовательно по линии CMD. - данные: данные могут быть передаваться из карты в хост или наоборот. Данные передаются через линии DAT0..DAT7. Количество линий данных, использованных для передачи данных, может быть 1(DAT0), 4(DAT0-DAT3) или 8(DAT0-DAT7). По каждой линии данных за один такт CLK , данные могут передаваться по одному биту (1X скорость передач данных) или двумя битами ( двойная плотность передачи данных). Данный протокол является основным рабочим протоколом. Большая часть чипсетов ( Qualcomm , NVIDIA , OMAP ) используют его даже для BOOT. Исключение составляют BRCM и EXYNOS о них ниже. 3.3 BOOT Режим (хитро****пый режим, когда загрузку бута в процессор производит карта BOOT_CONFIG в extCSD не нулевой) Для начала операции загрузки , ХОСТ должен держать CMD линию в низком уровне на протяжении минимум 74 такта CLK после включения питания или операции сброса командной cmd1. eMMC распознает последовательность и начинает подготовку загрузочных данных внутри. ( BOOT1 , BOOT2 или MAIN раздел в зависимости от бита BOOT CFG Операция загрузки заключается в отправке загрузочных данных на хост по DAT линиям последовательно на большой скорости . ХОСТ должен удерживать линию CMD в низком уровне , чтобы получить все данные BOOT. Установка регистра PARTITION_CONFIG позволяет eMMC карте получать подтверждение загрузки ; Такая схема популярна для процессоров EXYNOS всех поколений и большинства Broadcomm. Таким образом может возникать ситуация - когда телефон показывает логотип или входит в boot, но карта остается после процедуры boot в повисшем состоянии ( GT-I9300 VTU00M ) Такую ситуацию легко проанализировать даже без eMMC бокса - пример i9300. Инструменты Паяльник Любой бокс USB-UART Putty или Hyperterminal Распиновка: AP_TXD = Z3X-BOX PIN3 ( RJ45 ) AP_RXD = 3X-BOX PIN2 ( RJ45 ) GND= Z3X-BOX PIN7,8 ( RJ45 ) http://gsmforum.su/attachment.php?at...1&d=1392664547 http://gsmforum.su/attachment.php?at...2&d=1392664547 Такую eMMC вылечить невозможно , хотя телефон будет заходить в бут и показывать лого. Лог при подключении такой карты покажет следующую запись: Can't Init EMMC !!! ( Ready Condition TIMEOUT! ) Если видим такое - смело меняем карту. 3.4 Аварийные режимы работы карты : **************************************************************************************************** ************* 4. Организация данных в eMMC карте 4.1 Аппаратные разделы http://gsmforum.su/attachment.php?at...1&d=1393695655 Обычно eMMC содержит следующие разделы: BOOT1,2 Раздел , которых хранит boot и его копию (1-2Мб) Но не обязательно бут находится именно там. RMP Раздел - Шифрованный раздел - доступ к нему возможен только с ключем. Активно используется в SGH-i9505 и подобных девайсах для предотвращения понижения бутов. Потому даже если записать при помощи JTAG более низкой версии - девайс не включится. USER AREA - Пользовательский раздел - занимает львиную долю eMMC в свою очередь USER AREA может делится на 4 хардварных раздела GP0 GP1 GP2 GP3 но на практике такого раздела я еще не встречал :-) Данный раздел может быть отформатирован в стандарте MBR или GPT а также в собственном формате NVIDIA. 4.2 Служебная информация Состоит из четырех блоков данных, не входящих в логические разделы - хотя они находятся в внутреннем NAND накопителе. Большая часть значений в служебке Read Only , часть OTP , и только несколько параметров разрешено править в период жизни eMMC карты CID (Card identification data): содержит данные, по которым можно идентифицировать карту памяти (серийный номер, ID производителя, дату изготовления и т.д.) Длинна 16 байт CSD (Card-specific data): содержит всевозможную информацию о карте памяти (от размера сектора карты памяти до потребления в режиме чтения/записи). Длинна 16 байт Важными областями в CSD являются PERM_WRITE_PROTECT - Постоянная защита от записи / стирания. TMP_WRITE_PROTECT - Защита от записи / стирания до перезагрузки карты. Если выставлен флаг постоянной защиты у рабочего аппарата - он будет включатся и работать но все изменения будут обнулятся после следующей перезагрузки. При этом девайс прошивается и Odinom и через JTAG. Такой Samsung один раз мне приносили на ремонт ) OCR (Operation Conditions Register): содержит напряжения питания карты памяти, тип питания карты памяти, статус процесса инициализации карты. http://gsmforum.su/attachment.php?at...1&d=1393695759 extCSD (Extended Card-specific data) содержит всевозможную информацию о карте памяти , которая не влезла в CSD. Длинна 512 байт. extCSD Достаточно длинный регистр - но основная его часть ReadOnly - никогда не меняются и прописаны еще на заводе. Хочу обратить внимание на значения , которые меняются и наиболее важны для пользователей, котрые к примеру заменили неисправную eMMC на чистую. http://gsmforum.su/attachment.php?at...1&d=1393696399 BOOT_CONFIG 1 R/W [179] 0x0 - Конфигурация загрузки ( Какой физический раздел отвечает за загрузку ТА ). BOOT_BUS_WIDTH 1 R/W [177] 0x0 Ширина шины данных во время загрузки. Если данные регистры не прописаны должным образом - телефон не сможет загрузится с такой eMMC. 4.3 Софтовые разделы (то что находится в аппаратном разделе USER AREA) Тут уже все зависит от процессора , производителя итп - для примера табличка разделов от американца i535 http://gsmforum.su/attachment.php?at...1&d=1393696477 4.3.1 MBR Формат разметки Итак, MBR это первый сектор жесткого диска. Точнее это нулевой сектор, при использовании LBA (Logical Block Addressing) сектора индексируются одним числом, начиная с нуля. MBR eMMC содержит: Таблицу разделов (64 байт) Сигнатуру диска Размер таблицы разделов в MBR таков, что его хватает только на четыре раздела. Если необходимо больше разделов, прибегают к трюку: один из разделов сам делится на разделы и, соответственно, содержит свой собственный MBR в начале своей области данных. Так-же ограничения MBR приводят к тому, что раздел не может быть более 2 терабайт. Таким образом , если разделов на eMMC много, то в "дарках между разделами" необходимо распределить данные таблиц по 512 байт для каждых трех разделов. Потому иногда недостаточно восстановить сами разделы для успешного подъема кирпичика. Такэе у разделов нет имёе - только 16битные ID 4.3.2 GPT Формат разметки GUID Partition Table, аббр. GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR). Он более ёмкий и надежный так как GPT таблички дублируются в начале и в конце eMMC диска. Также каждый раздел может иметь UNICODE Имя. 4.3.3 NVIDIA BCT Формат разметки Всем , кто мучается с ACER A100 A500 , HTC One X следует читать первым делом. NVIDIA как всегда отличилась своими фирменными решениями по хранению данных. Особенности TEGRA: BOOT1 и BOOT2 являются частью адресного пространства тегры. Другими словами, если на карте буты по 2Мб - то 0x000000 USER AREA будет 4-мегабайтом по логике TEGRA - потому при замене и просто переливании DATA следите за размером бутов на флешке - инфографика позже. В данный момент собираю информацию про него... Помощь приветствуется. 5. Основные проблемы eMMC карточек Сообщество разработчиков cyanogen mod выделили и систематизировали наиболее популярные проблемы , которые возникают у eMMC устройств одного популярного производителя. Причиной такого количества багов является сырая релизация контроллера VHX и VFX_U. Модель карты l ("имя") Версия Проблема KYL00M 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug KYL00M 0x15 (Samsung) Все версии Частичная(полная) потеря данных #Samsung eMMC wear leveling data corruption bug M8G2FA 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug M8G2FA 0x15 (Samsung) Все версии Частичная(полная) потеря данных #M8G2FA "P17 corruption" bug MAG2GA 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #MAG2GA TRIM bug MAG4FA 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug MAG4FA 0x15 (Samsung) Все версии Частичная(полная) потеря данных #Samsung eMMC wear leveling data corruption bug MBG8FA 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug MCGAFA 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug VAL00M 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug VTU001 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #VTU00M random bricking bug VYL00M 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug VYL00M 0x15 (Samsung) Все версии Частичная(полная) потеря данных #Samsung eMMC wear leveling data corruption bug VZL00M 0x15 (Samsung) Все версии Выход из строя девайса ( кирпич ) #Samsung eMMC secure erase bug Итак - топ по поломкам у нас возглавляет VTU00M (MoviNAND VTU00M (16GB) eMMC) По состоянию можно разделить несколько степеней поломаности : 1. Ready Condition TIMEOUT! Карта не выходит в рабочий режим. Особенности: Ошибка софта : [COLOR="#FF0000"]Can't Init EMMC !!! ( Ready Condition TIMEOUT! ) Телефон при этом бутается но висит на лого. Софтовый ремонт не возможен т.к. карта не отвечает ни на одну команду. Вывод: Поможет только замена eMMC 100% 2. EMMC NAME: 000000 Примерный лог софта: Код:
EMMC CSD 902701320F5903FFF6DBFFEF8A404023 Флешка читатся , трется , и пишется - данные при чтении мусор. Телефон при этом не бутается прошивка через SD дает ошибку Софтовый ремонт пока возможен ,возможно при обновлении прошивки eeprom карты обнулится - работаем в данном направлении - нужно насобирать как можно больше прошивок карт. Вывод: Ложим на полочку весь аппарат либо меняем eMMC - старую не выбрасываем. 3. Wear Leveling Bug ( VTU00M С прошивкой от 05/2012 FW rev.0xf1) Ошибка вызвана повреждением таблицы выравнивания износа. Карта при этом читается но пишется очень долго или не пишется вообще. Код:
EMMC Manufacturer ID: 0015 , OEM ID: 0100 Данные ошибки относятся к софтовым - часто помогает восстановление бута - но в некоторых случаях SD Boot не сможет восстановить зону Product Name или снять защиту от записи. Лог карты : P.S Пока статья "в разработке" прошу не пинать за грамотность и логику изложения - я надеюсь сформирую тут полный FAQ за недельку. P.P.S Настоятельно прошу комментировать и поправлять мои проезды - если вы их увидите P.P.P.S Статья основана на следующих документах http://rere.qmqm.pl/~mirq/JESD84-A44.pdf http://wiki.cyanogenmod.org/w/EMMC_Bugs http://www.jedec.org/sites/default/f...ictor_Tsai.pdf http://www.ebv.com/fileadmin/design_..._Booti ng.pdf http://web3032.sh1.magic2008.cn.m1.m...4131450191.pdf http://nv-tegra.nvidia.com/gitweb/?p...ef24b3;hb=HEAD Автор статьи NoName® из Z3X-team, и с его разрешения статью перенес и сюда, по мере возможности статья будет дополняться ИСТОЧНИК |
Текущее время: 20:44. Часовой пояс GMT +3. |
Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot