|
Z3x Easy-Jtag Форум поддержки программатора Z3x Easy-Jtag Box |
|
Опции темы | Оценить тему | Опции просмотра |
01.03.2014, 21:03 | #1 |
Почетный пользователь
Регистрация: 14.02.2007
Адрес: 127.0.0.1
Сообщений: 1,213
Поблагодарил: 1,256
Поблагодарили 3,298 раз за 871 сообщений
Репа: 1513 |
Общий ликбез по eMMC/moviNAND проблемам. ( в разработке )
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 чипа ниже : Основные выводы карточки: 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. Схема подключения питания к карточке : *Замена 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 ) Такую eMMC вылечить невозможно , хотя телефон будет заходить в бут и показывать лого. Лог при подключении такой карты покажет следующую запись: Can't Init EMMC !!! ( Ready Condition TIMEOUT! ) Если видим такое - смело меняем карту. 3.4 Аварийные режимы работы карты : **************************************************************************************************** ************* 4. Организация данных в eMMC карте 4.1 Аппаратные разделы Обычно 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): содержит напряжения питания карты памяти, тип питания карты памяти, статус процесса инициализации карты. extCSD (Extended Card-specific data) содержит всевозможную информацию о карте памяти , которая не влезла в CSD. Длинна 512 байт. extCSD Достаточно длинный регистр - но основная его часть ReadOnly - никогда не меняются и прописаны еще на заводе. Хочу обратить внимание на значения , которые меняются и наиболее важны для пользователей, котрые к примеру заменили неисправную eMMC на чистую. BOOT_CONFIG 1 R/W [179] 0x0 - Конфигурация загрузки ( Какой физический раздел отвечает за загрузку ТА ). BOOT_BUS_WIDTH 1 R/W [177] 0x0 Ширина шины данных во время загрузки. Если данные регистры не прописаны должным образом - телефон не сможет загрузится с такой eMMC. 4.3 Софтовые разделы (то что находится в аппаратном разделе USER AREA) Тут уже все зависит от процессора , производителя итп - для примера табличка разделов от американца i535 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 EMMC Manufacturer ID: 0015 , OEM ID: 0100 EMMC Date: 05/2005 FW rev.0x56 EMMC NAME: 000000 , S/N: 537986854 EMMC ROM1 (Main User Data) Capacity: 16384 MB (High Density Card) EMMC ROM2 (Boot Partition 1) Capacity: 512 kB EMMC ROM3 (Boot Partition 2) Capacity: 512 kB EMMC RPMB (Replay Protected Memory Block) Capacity: 128 kB Флешка читатся , трется , и пишется - данные при чтении мусор. Телефон при этом не бутается прошивка через SD дает ошибку Софтовый ремонт пока возможен ,возможно при обновлении прошивки eeprom карты обнулится - работаем в данном направлении - нужно насобирать как можно больше прошивок карт. Вывод: Ложим на полочку весь аппарат либо меняем eMMC - старую не выбрасываем. 3. Wear Leveling Bug ( VTU00M С прошивкой от 05/2012 FW rev.0xf1) Ошибка вызвана повреждением таблицы выравнивания износа. Карта при этом читается но пишется очень долго или не пишется вообще. Код:
EMMC Manufacturer ID: 0015 , OEM ID: 0100 EMMC Date: 05/2012 FW rev.0xf1 EMMC NAME: VTU00M , S/N: 4206691564 EMMC ROM1 (Main User Data) Capacity: 15028 MB (High Density Card) EMMC ROM2 (Boot Partition 1) Capacity: 2048 kB EMMC ROM3 (Boot Partition 2) Capacity: 2048 kB EMMC RPMB (Replay Protected Memory Block) Capacity: 128 kB Данные ошибки относятся к софтовым - часто помогает восстановление бута - но в некоторых случаях 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, и с его разрешения статью перенес и сюда, по мере возможности статья будет дополняться ИСТОЧНИК Последний раз редактировалось fedja; 02.03.2014 в 11:53. |
Следующие 40 пользователей поблагодарили fedja за это сообщение: | ADR86 (11.09.2018), alex_7519 (11.05.2014), azim2005 (13.12.2014), azis29 (04.03.2014), babu123 (26.04.2017), BURZUM (02.03.2014), g1101 (10.08.2017), gaz2402 (03.03.2014), granet (01.08.2016), idler_new (28.12.2017), ilyaiii (01.02.2015), Jagger (02.03.2014), killbugs (19.11.2017), kirill@88 (01.05.2016), KonstantinVoskr (02.03.2014), kurbatic (02.04.2017), Le0n35 (13.02.2017), lex69 (07.01.2017), madfighter (28.03.2014), Major999 (01.03.2014), Merdoc (29.04.2019), mobil_lg (02.03.2014), mster (03.03.2014), Sardorbek5 (21.09.2018), sas!ha (06.06.2014), shulz (01.03.2014), slavkinj (06.07.2016), smarttool (13.05.2014), swing (08.10.2016), TShaManV (30.03.2018), ttrs42 (12.07.2016), VASILILYAI (23.10.2017), VictorMan2 (29.03.2017), vm7 (29.02.2016), yurii-62 (02.03.2014), ZArchi (01.03.2014), zioom (13.09.2014), БОРИСЫЧ (02.03.2021), Саша6898 (29.03.2014), чайник (08.04.2014) |