GSM Форум - GSMForum.SU

GSM Форум - GSMForum.SU (https://gsmforum.su/index.php)
-   Z3x Easy-Jtag (https://gsmforum.su/forumdisplay.php?f=430)
-   -   Общий ликбез по eMMC/moviNAND проблемам. ( в разработке ) (https://gsmforum.su/showthread.php?t=98966)

fedja 01.03.2014 21:03

Общий ликбез по 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
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

4. "Product Name : Отсутствует" , "Висяк на лого" "ReadOnly eMMC" "не бутается после установки новой карты"

Данные ошибки относятся к софтовым - часто помогает восстановление бута - но в некоторых случаях
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, и с его разрешения статью перенес и сюда, по мере возможности статья будет дополняться

ИСТОЧНИК


Текущее время: 12:56. Часовой пояс GMT +3.

Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot