PDA

Просмотр полной версии : Z3X Easy Jtag и Tegra


RusEm
21.03.2017, 14:27
Вот наконец то и созрел вопрос по Tegra. Смотрю мало он освещен на форуме.
Как мы знаем Z3X может работать с EMMC в режиме Tegra_Linear_mode.
Если я не ошибаюсь, то Tegra работает с ЕММС разделами как с единым разделом.
то есть Boot1, Boot2, RPMB, UserArea для нее единое пространство и адресуется в перечисленном порядке.
Берем любое устройство на Tegra. Видим примерно вот такой лог:

EMMC ROM1 (Main User Data) Capacity: 30528 MB
EMMC ROM2 (Boot Раздел 1) Емкость: 512 kB
EMMC ROM3 (Boot Раздел 2) Емкость: 512 kB
EMMC RPMB (Replay Protected Memory Block) Capacity: 128 kB

MMCBLK0P0 (BCT) Adress in BOOT1+BOOT2 0x0, Length: 0x400000
MMCBLK0P1 (PT) Adress in USER: 0x300000, Length: 0x200000
MMCBLK0P2 (EBT) Adress in USER: 0x500000, Length: 0x400000
MMCBLK0P3 (EKS) Adress in USER: 0x900000, Length: 0x200000
MMCBLK0P4 (DE1) Adress in USER: 0xB00000, Length: 0xA00000
MMCBLK0P5 (GP1) Adress in USER: 0x1500000, Length: 0x200000
MMCBLK0P6 (SOS) Adress in USER: 0x1700000, Length: 0x600000
MMCBLK0P7 (LNX) Adress in USER: 0x1D00000, Length: 0x800000
MMCBLK0P8 (APP) Adress in USER: 0x2500000, Length: 0x25800000
MMCBLK0P9 (CAC) Adress in USER: 0x27D00000, Length: 0x4C800000
MMCBLK0P10 (MSC) Adress in USER: 0x74500000, Length: 0x400000
MMCBLK0P11 (FLX) Adress in USER: 0x74900000, Length: 0x6400000
MMCBLK0P12 () Adress in BOOT1+BOOT2 0x0, Length: 0x0

Получается BCT сидит в Boot1 и Boot2, так как они для Tegra находятся по нулевому адресу.
Дальше идет раздел (PT) Adress in USER: 0x300000, Length: 0x200000 .
И сразу же первый вопрос. 0x300000 - это смещение внутри UserArea или же смещенеие от начала Boot1? Если второе то происходит наложение разделов, так как раздел BCT имеет размер 0x400000 .
Если первое - то получаем что Boot1+Boot2 =0x80000 +0x80000= 0x100000.
0x100000 + 0x300000( уже в USERArea) = 0x400000. Но куда делся RPBM?? Что в нем?
Далее.
Читаем например первые 128Мб в режиме Tegra. И читаем отдельно Boot1. Сравниваем содержимое Boot1 и начало дампа в режиме Tegra - Вообще ничего общего. Но как так? Ведь в режиме tegra EMMC должна читаться как Boot1+Boot2+Rpmb+UserArea. Или я не прав?? Хотелось бы разобраться в этом вопросе.
Может у меня опять EMMC мертва и я просто ломаю голову?

Layder
21.03.2017, 16:59
Если я не ошибаюсь, то Tegra работает с ЕММС разделами как с единым разделом. то есть Boot1, Boot2, RPMB, UserArea для нее единое пространство и адресуется в перечисленном порядке.
Берем любое устройство на Tegra. Видим примерно вот такой лог:


EMMC ROM1 (Main User Data) Capacity: 30528 MB
EMMC ROM2 (Boot Раздел 1) Емкость: 512 kB
EMMC ROM3 (Boot Раздел 2) Емкость: 512 kB
EMMC RPMB (Replay Protected Memory Block) Capacity: 128 kB

MMCBLK0P0 (BCT) Adress in BOOT1+BOOT2 0x0, Length: 0x400000
MMCBLK0P1 (PT) Adress in USER: 0x300000, Length: 0x200000
Насколько я в курсе,
1) раздел RPMB и его размер не входит в пространство TEGRA, и на всех Tegra, что я снимал флешки размер RPMB равен 0
2) 512кБ+512кБ = 1MB = 0x100000, что никак не 0x400000 (4MB)
3) в логе написано Adress in USER: 0x300000 - это адрес от начала USER

RusEm
21.03.2017, 17:25
Спасибо. Отлично. Вопрос со вторым разделом снят. Как и думал это отсчет от начала UserArea. Но как быть с Rpmb? Лог выше это реальный лог с аппарата с Tegra. и Rpmb нисколько не нулевой

Layder
21.03.2017, 17:34
Спасибо. Отлично. Вопрос со вторым разделом снят. Как и думал это отсчет от начала UserArea. Но как быть с Rpmb? Лог выше это реальный лог с аппарата с Tegra. и Rpmb нисколько не нулевой
насколько я в курсе, Nvidia игнорирует RPMB и его размер.

RusEm
21.03.2017, 17:51
Еще раз спасибо. Проясняется. И последний вопрос, почему содержимое Boot1 и дампа в режиме tegra_linear различается?