|
| Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
|---|---|---|---|---|---|
| 9.10.2010, 11:36 | Gigabyte Gsmart I300-убит бутлоадер? | 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-убит бутлоадер? | Выполнял данную последовательность действий с данным телефоном - так же висит заставка гигабайта и никаких дальнейших действий не происходит Загрузчики 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, | ||
|
Текстовая версия | Сейчас: 29.4.2026, 23:52 |