Что нового

Работа с устройствами на базe процессора NVidia (Tegra) Решено 

Статус
Закрыто для дальнейших ответов.

Layder

Z3X-Team
.
27/8/06
2 262
619
Беларусь, Гомель
!!!!! Статья в процессе написания !!!!!!!


Общие положения:

1) В данной статье будут рассматриваться особенности работы с eMMC, используемых в устройствах с процессорами NVidia (Tegra)
2) Эта статья также объясняет общие положения для устройств бренда Samsung с процессорами NVidia (Tegra), но вы должны учитывать специфику Samsung и обязательно обращаться к статье по работе с брендом Samsung.



Boot Config для eMMC, используемых с процессорами NVidia (Tegra):

1) Boot config: 0x00,0x00,0x00;
2) Boot config: 0x40,0x00,0x00;
3) Boot config: 0x00,0x00,0x01 (для eMMC BGA162);


Особенности адресации памяти процессоров NVidia (Tegra):

1) Для устройств на процессорах NVidia (Tegra), как правило, размер раздела RPMB равен 0, т.к. он не используется. Размеры разделов ROM2/3 особого значения не имеют, но все зависит от способа переноса информации с бекапа eMMC.
2) Адресное пространство процессоров NVidia (Tegra) имеет важную особенность и называется "Tegra linear mode". Нулевой адрес всего адресного пространства это начало раздела ROM2, данные продолжаются в ROM3 и далее продолжаются в ROM1.
Таким образом, длина адресного пространства eMMC равна сумме размеров ROM2+ROM3+ROM1.
Нулевой адрес ROM3 равен длине размера ROM2, а нулевой адрес размера ROM1 равен сумме длин разделов ROM2+ROM3.


Типы разметки eMMC: PT (GPT)

пример разметки Nvidia:
Код:
   EMMC ROM 1 (Main User Data) Capacity: 15028 MB (0003AB400000)
   EMMC ROM 2/3 (Boot Partition 1/2) Capacity: 512 KB (000000080000)
   EMMC RPMB (Replay Protected Memory Block) Capacity: 128 KB (000000020000)


NVidia header is found
Partition: mmcblk0p0 (BCT) Address in , [000000000000 - 000000400000], size: 000000400000 (4,00 MB)
Partition: mmcblk0p1 (PT) Address in ROM1, [000000300000 - 000000500000], size: 000000200000 (2,00 MB)
Partition: mmcblk0p2 (EBT) Address in ROM1, [000000500000 - 000000B00000], size: 000000600000 (6,00 MB)
Partition: mmcblk0p3 (GP1) Address in ROM1, [000000B00000 - 000000D00000], size: 000000200000 (2,00 MB)
Partition: mmcblk0p4 (SOS) Address in ROM1, [000000D00000 - 000001300000], size: 000000600000 (6,00 MB)
Partition: mmcblk0p5 (LNX) Address in ROM1, [000001300000 - 000001B00000], size: 000000800000 (8,00 MB)
Partition: mmcblk0p6 (APP) Address in ROM1, [000001B00000 - 000031B00000], size: 000030000000 (768 MB)
Partition: mmcblk0p7 (CAC) Address in ROM1, [000031B00000 - 000069F00000], size: 000038400000 (900 MB)
Partition: mmcblk0p8 (MSC) Address in ROM1, [000069F00000 - 00006A100000], size: 000000200000 (2,00 MB)
Partition: mmcblk0p9 (PIA) Address in ROM1, [00006A100000 - 00008A100000], size: 000020000000 (512 MB)
Partition: mmcblk0p10 (SEC) Address in ROM1, [00008A100000 - 00008B500000], size: 000001400000 (20,0 MB)
Partition: mmcblk0p11 (USP) Address in ROM1, [00008B500000 - 000094100000], size: 000008C00000 (140 MB)
Partition: mmcblk0p12 (PDA) Address in ROM1, [000094100000 - 000095500000], size: 000001400000 (20,0 MB)
Partition: mmcblk0p13 (UDA) Address in ROM1, [000095500000 - 0003AB100000], size: 000315C00000 (12,3 GB)
Partition: mmcblk0p14 (GPT) Address in ROM1, [0003AB100000 - 0003AB300000], size: 000000200000 (2,00 MB)
NVidia header successfully parsed

Особенности работы с разметкой процессоров Nvidia (Tegra):

1) Для полноценного описания всех разделов, хранящихся на eMMC используются разделы PT и GPT
2) Pазметка GPT, которая обычно находится в начале ROM1, в адресном пространстве процессоров NVidia (Tegra) хранится в отдельном разделе, который так и называется: gpt.
3) Для создания бекапов с eMMC с устройств с процессорами NVidia (Tegra) правильно использовать режим чтения "Tegra linear mode", который создает бекап в виде одного бинарного файла, который включает в себя последовательно содержимое разделов ROM2, ROM3, ROM1.


Особенности защиты устройств с процессорами Nvidia (Tegra):

1) Для запуска устройства с процессорами Nvidia (Tegra) необходимы индивидуальные ключи, называемые MSL, без которых устройство не включится. Данные ключи индивидуальны для всех новых процессоров Nvidia (Tegra) и хранятся в первом разделе устройства с названием BCT. Данный раздел обычно является первым разделом устройства и располагается в ROM2, ROM3, и иногда занимает начало ROM1.
2) MSL коды иногда можно купить. MSL код необходим фирменной программе NVidia (NVFlash) для восстановления устройства.
3) На некоторых старых процессорах Nvidia (Tegra) некоторые серии процессоров имели одинаковый ключ MSL (Tegra 2), что упрощало восстановление устройств.
4) На устройствах бренда ASUS существует свой формат данных ключей, называемых blobs, которые можно сохранить определенными способами с работающего устройства.


Восстановление файлов Boot для устройств с процессорами NVidia (Tegra):

1) В подавляющем большинстве случаев восстановление работоспособности устройств с процессорами NVidia (Tegra) являются невозможным, если нету бекапа ключей или раздела BCT для каждого конкретного устройства (исключая старые процессоры Tegra 2).
2) Если у вас есть купленный MSL код, то устройство можно восстаовить при помощи фирменной утилиты NVflash с использованием компьютера (ПК).
3) Если у вас есть бекап считанный с eMMC, включающий не поврежденный раздел BCT, то его можно использовать, записав его в новую eMMC способом, аналогичным считанному.


Перенос прошивки устройства с eMMC в новую на устройствах с процессорами NVidia (Tegra):

Если у вас есть не полностью неисправная eMMC, работающая в устройстве, то существует несколько способов переноса информации (включая MSL) в новую eMMC:

1) Если устройство загружается и работает, то самый оптимальный способ - в режиме "Tegra linear mode":
- считываем прошивку устройства из eMMC (полный дамп, в режиме "Tegra linear mode");
- записываем прошивку устройства из eMMC в режиме "Tegra linear mode";
- записываем Boot Config в новую eMMC

2) Если устройство пытается загрузится и зависает, то необходимо использовать дамп с рабочего аналогичного устройства:
- считываем прошивку из нашего устройства из eMMC (начало дампа длиной с размером раздела BCT, в режиме "Tegra linear mode");
- в зависимости от того, в каком формате бекап, используем логику, чтобы записать бекап в новую eMMC:
а) если бекап сделан в режиме "Tegra linear mode"), то используем логику из пункта 1).
б) если бекап в формате ROM2/3/ROM1 и размеры ROM2/3 дампа и новой eMMC совпадают, то можно восстанавливать по разделам: просто восстановить разделы из дампа в соответствующие разделы eMMC.
в) если размеры отличаются и новая eMMC Samsung, то меняем размеры разделов ROM2/3, чтобы размеры совпадали и используем логику пункта б).
г) если размеры отличаются и нельзя их привести в соответствие, то нам необходимо получить дамп для режима "Tegra linear mode"), скопировав добавлением или в hex редакторе, создавая файл который будет состоять последовательно из разделов ROM2, ROM3, ROM1 и используя логику из пункта 1).
д) ...............

после этого:
- записываем раздел BCT, в режиме "Tegra linear mode");
- записываем Boot Config в новую eMMC


продолжение следует ...
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Верх Низ