IPB

Здравствуйте, гость ( Вход | Регистрация )

Форум перемещен на новый домен: forum.pda2u.ru - исправьте, пожалуйста, свои ссылки
История благодарностей участнику vladbravo ::: Спасибо сказали: 6 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
9.10.2010, 11:36 Gigabyte Gsmart I300-убит бутлоадер?
Цитата(Slugbaradio @ 7.10.2010, 19:21) *
pdb в данном случае конвертируется как bin to hex с нулевым базовым?


Базовый адрес для каждого загрузчика свой:
eboot - 0xA0060000
ipl - 0xA00E0000
uldr - 0xA0180000

А на счет ошибки - у меня она всегда возникала, когда ocd работал на медленных скоростях.
В конце концов я перешел на максимальную скорость и всё получилось.
Slugbaradio,
7.10.2010, 9:16 Gigabyte Gsmart I300-убит бутлоадер?
Восстановление i300

Скачал прошивку EJ1RUS20230.nb0
Выполнил команду osnbtool.exe -sp EJ1RUS20230.nb0
В результате получил файл EJ1RUS20230.nb0.PRE - в нём хранятся все загрузчики:
xldr.pdb - занимает 2 килобайта (0х800)
eboot.pdb - начинается с сигнатуры FE 03 00 EA, до следующей такой сигнатуры, 512 килобайт
ipl.pdb - начинается с сигнатуры FE 03 00 EA, до следующей такой сигнатуры, 768 килобайт, хотя последние 256 килобайт не от него, реально он занимает 512 килобайт
uldr.pdb - начинается с сигнатуры FE 03 00 EA, до конца файла

Дизассемблировал ИДой все загрузчики:
Сначала xldr, он не большой, прошелся по коду, нашел место:

ROM:00000614 LDR PC, =0xA0060000

Значит, следующий загрузчик, eboot запускается с этого адреса.
По опыту ковыряния аналогичной прошивки от i350 знаю, что основная работа в eboot ведётся в виртуальном адресном пространстве, поэтому в ИДу гружу eboot со смещения 80060000 - тогда ИДА правильно определяет строки и нужный нам код.
Нахожу строку "Read IPL and Jump to it!!", нахожу место, где эта строка используется:

ROM:8006B298 LDR R0, =aReadIplAndJump ; "Read IPL and Jump to it!!\r\n"
ROM:8006B29C BL sub_800750F8
ROM:8006B2A0 BL sub_800A6600
ROM:8006B2A4 MOV R0, 0xA00E0000
ROM:8006B2AC BL sub_80071F64

Значит, следующий загрузчик, IPL грузится с адреса 0xA00E0000
Гружу в ИДу ipl со смещения 0xA00E0000, дизассемблирую, ищу строки ULDR, нахожу место, где эти строки используются:

ROM:A00E58E0 LDR R0, =aLoadUldrImageF ; "\r\nLoad ULDR Image from flash memory\r\n"
ROM:A00E58E4 MOV R5, 0xFFFFFFFF
ROM:A00E58E8 BL sub_A00E6240
ROM:A00E58EC LDR R1, =aUldr ; "ULDR"
ROM:A00E58F0 MOV R6, #0xA0000000
ROM:A00E58F4 MOV R3, #1
ROM:A00E58F8 MOV R2, #0x3C0000
ROM:A00E58FC MOV R0, #0x20
ROM:A00E5900 ORR R6, R6, #0x180000
ROM:A00E5904 BL sub_A00EAB4C

Здесь небольшая тонкость - тут надо учесть две команды:

ROM:A00E58F0 MOV R6, #0xA0000000
ROM:A00E5900 ORR R6, R6, #0x180000

Тогда получим правильный адрес загрузки ULDR - 0xA0180000

На этом анализ заканчивается и начинается подготовительная работа.
Файлы загрузчиков уже есть, их нужно сконвертировать в формат HEX для указания адреса загрузки.
Если есть HJTAG, там есть соответствующая утилита. У меня уже нет, всё в архиве, но, думаю, это будет не сложно.

Ну и собственно восстановление:
Переход на начало xldr:
ocd> pc 0x20000
Установка точки останова на начало eboot:
ocd> hbr 0x0A0060000
Запуск xldr:
ocd> go
Загрузка eboot:
ocd> dowload eboot.hex
Установка точки останова на начало ipl:
ocd> hbr 0x0A00E0000
Запуск eboot (кнопки должны быть зажаты):
ocd> step
ocd> go
Загрузка ipl:
ocd> dowload ipl.hex
Установка точки останова на начало uldr:
ocd> hbr 0x0A0180000
Запуск ipl (кнопки должны быть зажаты):
ocd> step
ocd> go
В результате должно появиться изображение logo
Загрузка uldr:
ocd> dowload uldr.hex
Запуск uldr (кнопки должны быть зажаты):
ocd> step
ocd> go
Должна запуститься - IMAGE UTILITY -

После запуска каждого загрузчика необходимо какое-то время подождать (около 10 секунд за исключением uldr и запущенной IMAGE UTILITY)
При загрузке файлов нужно следить, что бы ocd не выдавал ошибок.
После успешного запуска и выполнения загрузчиков ocd переходит в режим inDEBUG на заданном адресе.

Здесь находится архив со всеми рабочими материалами.
kotikss, volodin,
10.9.2010, 8:17 Gigabyte Gsmart I300-убит бутлоадер?
Цитата(ska-amp @ 10.9.2010, 7:59) *
Выполнял данную последовательность действий с данным телефоном - так же висит заставка гигабайта и никаких дальнейших действий не происходит


Загрузчики i350 - 23 Мб.

Содержимое архива:

модуль - начало - окончание - размер hex - размер decimal
xldrh3.pdb 0x00020000 0x000207FF 0x800 2 048
eboot.pdb 0xA0060000 0xA00DFFFF 0x80000 524 288
ipl.pdb 0xA00E0000 0xA019FFFF 0x80000 524 288
ULDR 0xA0000000 0xA03BFFFF 0x3C0000 3 932 160

XLDR:
00000000-000007FF.bin
00000000-000007FF.idb
00000000-000007FF.lst

XLDR:
pre_hdr.bin
pre_hdr.idb

EBOOT (pre1 - в физическом адресном пространстве, 0xA0060000; pre1x8 - в виртуальном адресном пространстве 0x80060000):
pre1.bin
pre1x8.bin
pre1.hex
pre1.idb
pre1x8.idb
pre1.lst
pre1x8.lst

IPL:
pre2.bin
pre2.idb
pre2.lst

ULDR:
pre3.bin
pre3.hex
pre3.idb
pre3.lst

Если есть вопросы, попытаюсь ответить, ICQ # 165781121

volodin,
9.9.2010, 11:33 Gigabyte Gsmart I300-убит бутлоадер?
Девайс восстановлен!
В листинге из IPL буквально одной строчки не хватило, что бы понять, что адрес загрузки ULDR не 0xA0000000, а 0xA0180000
Посследовательность восстановления была такая:
pc 20000
hbr 0x0A0180000
- зажимаю красную и зелёную, держу, выполняю go
- после останова (загорелся желтый светодиод) гружу ULDR, выполняю step, опять зажимаю красную и зелёную кнопки, опять go - и запустилась IMAGE UTILITY, пошел процесс прошивки.
ska-amp, volodin,

RSS Текстовая версия Сейчас: 29.4.2026, 23:52
return_links(); ?>