LG GT540 Optimus - Кастом прошивки - Кухня | Кухня для создания кастом прошивок



Реп: (17)
Краткий мануал по редактированию прошивки LG GT540

За убитые телефоны отвественности не несем! Все действия на свой страх и риск!

Для создания кастом прошивки нам потребуется любой дистрибутив Linux (для работы с yaffs2, кто найдет бинари для винды напишите мне) и Windows

Комплект программ - Версия 0.2
Содержит в себе unyaffsmbn, mkyaffs2image, LG Utils,GS CAB, UpTestEX, DZDecrypter и DZCreator.

Распаковка kdz в dz
  1. Берем LG Utils, запускаем KP500-Utils-EN.exe в консоли
  2. Видя приглашение программы нажимаем "i" и вводим полный путь до *.kdz файла.
  3. Ждем некоторое время, когда закончится распаковка появится новое приглашение и у нас появится cab файл с названием прошивки. Готово!


Распаковка dz файла прошивки
  1. Достаем из полученного cab архива файл прошивки *.dz, и ложим его поближе к dzdecryptor.exe.
  2. Запускаем в консоли - DZDecrypt.exe имяфайла.dz
  3. Смотрим на процесс распаковки и список полученных файлов - это наша разобранная прошивка.


system_OPEN_CIS.mbn и yaffs2
  1. На машине с линуксом копируем в одну директорию unyaffsmbn и system_OPEN_CIS.mbn
  2. Запускаем ./unyaffsmbn system_OPEN_CIS.mbn


Сборка yaffs2 раздела
После всех нужных нам внесенных изменений в system запускаем
./mkyaffs2image /путь/до/исходной директории c файлами/ system.mbn


Способ сборки system.mbn+yaffs2 неизвестен, нужна любая помощь в получении информации!

Запаковываем dz файл прошивки
  1. Кладем system.mbn на место исходного system_OPEN_CIS.mbn
  2. Запускаем в консоли

DZCreate.exe -mGT540 -vV10D test.dz C:\путь_до_файлов_mbn\


Запаковываем cab файл прошивки для оффициального флешера
  1. Содержимое cab файла должно быть - ваш dz файл и GT540.dll полученный в cab файле при распаковке kdz файла.
  2. Советую воспользоваться программой GSCabber, но тут могут быть альтернативы. Главное чтобы метод компрессии был БЕЗ СЖАТИЯ.


Запаковываем cab файл в kdz. Для всех типов флешеров!
  1. Запустить WindowsEnabler.exe из test-version-upTest_EX/windows_enabler/ , нажать левой кнопкой мыши на иконке в трее (иконка изменится на On).
  2. Запустить UpTestEX_original.exe из test-version-upTest_EX/ , выбрать в "Encrypt cab file to kdz file" наш cab файл, нажать "Encrypt cab -> kdz". Ждем. Готово!


Прошивка

У нас есть в данный момент есть 4 прошивки:
1 - пересобранная с нетронутым system.mbn и dz файл совпадает по размеру.
Скачать V10E_00 (Baltics). (Рабочая, но не несет в себе никаких изменений.)

2 - с разобранным system.mbn с помощью unyaffsmbn и просто собранным обратно c mkyaffs2, полученный файл равен исходному mbn по размеру, но dz становится на 5 мб меньше.
Скачать V10D_00 (CIS) (Не рабочая, лежит для коллекции и опытов!)

3 - с измененными appsboot.mbn appsboothd.mbn
Скачать V10E_00 (Baltics). (FASTBOOT! Но не работает экран)

4 - хакнут бутлоадер от LG
Скачать V10D_00 (CIS). (Полноценный работчий FASTBOOT!)

Мне нужна чья либо помощь для проверки прошивок, ибо не могу прошить. (Нет компа с виндой), а у www2287 нет GT540, делает дела во благо нам.
Информация собрана с тем на xda-developers.com о GW620 и тем на 4pda.ru. Подготовили rick_ff, www2287, Maksic.

K
Сообщения вида "Как прошить?", "Уже сделали 2.1?", "А вот я нашел тут 2.1" и подобные будут удаляться. Вся доступная, для простых пользователей, информация будет в шапке. Экономьте наше время и нервы.


Сообщение отредактировал rick_ff - 25.09.10, 16:57
Причина редактирования: Обновил мануал



Реп: (3)
realaction @ 20.09.2010, 16:15 *
А на вашей 10Е с фастбутом под нерабочим экраном пордразумеватся ,то что на нем просто полосы как на телике без антены)? Просто мой Оптимус в ремонте проверить не на чем(

В этом бутлоадере левый код инициализации LCD (не для нашего контроллера).
Если там используется LK, то в нем стоит еще посмотреть на наличие правильно прописанных параметров проца (VFP + кеш L2). В том который я видел они не были указаны для нашего ядра (ARM1136EJ-S).
Просто в LK тупая система указания target - по ядру, а не по чипсету (все msm7x в одной куче).

Сообщение отредактировал andvalb - 20.09.10, 15:42



Реп: (65)
andvalb @ 20.09.2010, 16:30 *
В этом бутлоадере левый код инициализации LCD (не для нашего контроллера).
Если там используется LK, то в нем стоит еще посмотреть на наличие правильно прописанных параметров проца (VFP + кеш L2). В том который я видел они не были указаны для нашего ядра (ARM1136EJ-S).
Просто в LK тупая система указания target - по ядру, а не по чипсету (все msm7x в одной куче).

тут не LK (на сколько я знаю), а на счет левого кода инита LCD я в курсе :) прошу собрали скажем так "тестово". Если вы можете переписать кусок кода LCD - то вам не один человек спасибо скажет :blush:
https://www.codeaurora.org/xwiki/bin/QAEP/ - вики, откуда сливали сорсы бута

Сообщение отредактировал www2287 - 20.09.10, 16:55



Реп: (1241)
www2287 @ 20.09.2010, 17:52 *
сорсы эклера (в прошивке, которая в шапке - лоадер это йогурта) скомпиленные, на выходе сразу выходит .mbn

Если я всё правильно понимаю, то если бут от йогурта или эклера, то и system тоже должен быть соответсвующим.
Где то видел инфу о том что bootloader и radio firmware крепко завязаны между собой, и меняя бут нужно менять и этот radio.



Реп: (3)
Mur4ik @ 20.09.2010, 18:43 *
Если я всё правильно понимаю, то если бут от йогурта или эклера, то и system тоже должен быть соответсвующим.
Где то видел инфу о том что bootloader и radio firmware крепко завязаны между собой, и меняя бут нужно менять и этот radio.

Не надо его менять.
Это отдельный код даже для другого проца он, с которым основной взаимодействует уже после бута (нафига в буте gsm часть инитить?).
Бут тоже универсален - все что надо так это то чтобы он правильно ядро с нужного места грузил в нужную область памяти с правильными параметрами передаваемыми ему.
Вы же на линуксе при апдейте ядра не меняете бут...
Но там есть таблицы сегментов памяти - они должны соответствовать.
Все ИМХО.

Сообщение отредактировал andvalb - 20.09.10, 18:37



Реп: (1241)
Да, это я ошибся, бутлоадера это не касается.



Реп: (3)
Вот на этом вроде LCD с таким контроллером - может с него чего получится взять если найдем исходники.
http://forum.xda-developers.com/showthread...93&page=473



Реп: (65)
andvalb @ 20.09.2010, 19:53 *
Вот на этом вроде LCD с таким контроллером - может с него чего получится взять если найдем исходники.
http://forum.xda-developers.com/showthread...93&page=473

оно? http://xdandroid.com/wiki/Source_Repositories



Реп: (13)
Может проще найти как бутлудер appsboot.mbn с рабочей прошивки дебаггером дополнить? ARMv6 отлично дизассемблируется в IDA >= v5.2. Если есть спецы можно покопать. У меня получилось открыть и просмотреть из прошивки v10g_00.kdz, похоже все отлично анализируется. Насколько я могу судить это действительно сырой бинарник ARM. Из строк видно что именно там реализована FOTA судя по строкам вида: "FOTA Progress %d\n". Есть еще какая-то подпрограмма вывода инфы о версии, которая и содержит строку fastboot: \n\nUSB FastBoot: V%d\n, правда без понятия когда и куда она это печатает и где сам фастбут если он есть. Буду копать.



Реп: (65)
hackbnw @ 20.09.2010, 22:40 *
Буду копать.

покопай на счет инита LCD и прочих железок, мб получится дописать бутлоадер, который мы пробовали пихать.

P.S> appsboothd.mbn еще поковыряй



Реп: (49)
Да все правильно использовался LK но дописанный с codeaurora но его можно подправить если знать что и где.
Кто нибудь попробцйте вот это скомпелить git clone git://android.git.kernel.org/kernel/lk.git
Что то у меня не выходит.
K
Всем чьи посты удалил — заканчивайте оффтоп, старайтесь нести в своих сообщениях максимальное кол-во полезной иноформации.


Сообщение отредактировал rick_ff - 21.09.10, 16:26



Реп: (13)
Возможно кому-то это очевидно, но все таки оказывается fastboot и jtag в прошивке есть. Только надо разобраться как работают.

Кому интересно по смещению 0xF64 похоже находится основная функция fastboot'а.

appsboothd.mbn - это хедер для appsboot сутя по инфе из одной темы на этом же сайте.

И еще, оказывается lg нагло содрала legacy-bootloader (законно ли кстати на него в таком случае исходники ныкать?) с небольшими изменениями. Насколько я могу судить с моими небольшими познаниями в ARM, функции mddi.c ответственные за дисплей похоже действительно дописаны. Попробуйте не little kernel, а legacy скомпилить ради интереса, он тоже msm7x поддерживает, может запустится с дисплеем.

PS: если у кого есть инфа по архитектуре/мемори маппингу на MSM 7xxx / ARM1136xJ-S было бы неплохо, а то весьма не очевидно где допустим тут тот же порт клавиатуры и прочего, хотя х/з может что в исходниках quallcom-surf с того же http://android.git.kernel.org/ есть.



Реп: (49)
hackbnw,
Про что я выше и говорил!!!
Не могу legacy boot с компелить вылетает с ошибкой.И я так понял проблема не в экране а в адресах где что лежит так же надо в bootloader надо прописывать.В Legacy bootloader универсален возможно сто все и без правки заработает.



Реп: (3)
hackbnw @ 21.09.2010, 22:43 *
Возможно кому-то это очевидно, но все таки оказывается fastboot и jtag в прошивке есть. Только надо разобраться как работают.

Кому интересно по смещению 0xF64 похоже находится основная функция fastboot'а.

appsboothd.mbn - это хедер для appsboot сутя по инфе из одной темы на этом же сайте.

И еще, оказывается lg нагло содрала legacy-bootloader (законно ли кстати на него в таком случае исходники ныкать?) с небольшими изменениями. Насколько я могу судить с моими небольшими познаниями в ARM, функции mddi.c ответственные за дисплей похоже действительно дописаны. Попробуйте не little kernel, а legacy скомпилить ради интереса, он тоже msm7x поддерживает, может запустится с дисплеем.

PS: если у кого есть инфа по архитектуре/мемори маппингу на MSM 7xxx / ARM1136xJ-S было бы неплохо, а то весьма не очевидно где допустим тут тот же порт клавиатуры и прочего, хотя х/з может что в исходниках quallcom-surf с того же http://android.git.kernel.org/ есть.

mddi это немного не то.
Это шина на которой дисплей сидит - она то как раз на этих процах одинаковая. (Хотя ее инит тоже нужен.)
А вот инит дисплея там другой и он не прокатит.

Собственно у меня сейчас такое предложение.
В ядре лыжи в папке swift (/arch/arm/march-msm/swift) лежат нужные нам дрова.
Их по идее надо пересадить на ядро например версии 2.2 андройда. (поправить конфиги для их компиляции) (или если ядра одинаковы - пересадить само ядро).
В этих дровах как я посмотрел есть почти все что нам надо, а именно маппинг кнопок на gpio, последовательность инициализации LCD и методика управления подсветкой кнопок и LCD.
В принципе можно с этого начать.



Добавлено 22.09.2010, 08:09:

Maksic @ 22.09.2010, 00:55 *
Legacy bootloader универсален возможно сто все и без правки заработает.

Не заработает - он ни нашего маппинга кнопок ни LCD не знает.

Сообщение отредактировал andvalb - 22.09.10, 08:10



Реп: (13)
Legacy не компилируется, потому что ему нужны некоторые еще другие исходники, зависимые от чипсета - по идее для нас это qcom-surf, но там нет поддержки нашего дисплея.

По реверсингу. На usbloader_init вообще ссылок нет, его ida даже не разобрала как ассемблер, а фокус в чем.

Вот исходник из legacy:
if (boot_from_flash) {
cprintf("\n ** BOOTING LINUX FROM FLASH **\n");
boot_linux_from_flash();
}

usbloader_init();

for(;;) {
usb_poll();
}
return 0;


А примерно так все в нашем бутлудере:
keystate = keystate();
dprintf("keystate %x", keystate);
if(keystate==1) {
... boot ..
while(true);
} else {
.. display emergency download ..
while(true);
}


И похоже это действительно все окончания main и + еще после более подробного просмотра в фастбут, там тоже небольшие грабли наставлены в функциях прошивки / загрузки.

И еще один момент, по идее не будет работать дисплей со стандартной легаси, там toshiba/wvga, а в нашем innotek/epson или только innotek. И дописано очень много.

Сейчас копать буду функции бута/емердженси бута, может как-то можно ссылку на usbloader_init воткнуть.



Реп: (49)
andvalb,
andvalb @ 22.09.2010, 16:09 *
В ядре лыжи в папке swift (/arch/arm/march-msm/swift) лежат нужные нам дрова.Их по идее надо пересадить на ядро например версии 2.2 андройда. (поправить конфиги для их компиляции) (или если ядра одинаковы - пересадить само ядро).

Как пересадишь дрова ядра Linux в bootloader где компиляторы разные?
andvalb @ 22.09.2010, 16:09 *
Не заработает - он ни нашего маппинга кнопок ни LCD не знает

В сорцах если внимательно полный список GPIO и IRQ и так далее есть.
Codeaurora написала что поддержка есть нашего проца и ни какого упоминание где либо про экраны LCD и так далее.Тут хоть кто нибудь врубаеца про что речь тут ведется.Ну наберите в google.ru msm7227 и посмотрите архитектуру и как там все работает!!!
LK собирается компелятором ARM-ELF.. а linux kernel ARM-NONE-EBI или как то так (пишу по памяти).
И по поводу дров в сорцах то что LG дало. В драйвере LCD присутствует innotek/epson? Так как там есть список LCD.
hackbnw,
hackbnw @ 22.09.2010, 16:33 *
Legacy не компилируется, потому что ему нужны некоторые еще другие исходники, зависимые от чипсета - по идее для нас это qcom-surf, но там нет поддержки нашего дисплея.

Бред!!! А как же MDDI или PANEL все там есть!!! В описании LK написано все что ему надо это адреса где что лежит и правильно скомпелить.

У меня ошибка при компиляции выскакивает что то с кешем связано а я не пойму что не так. Вот и была просьба попробовать знающему.

Драйвера LCD - это удел Intell PXA2XX-3XX у msm7XXX совсем все по другому работает по этому у них нет LCD а есть panel.

Сообщение отредактировал Maksic - 22.09.10, 09:23



Реп: (3)
Maksic @ 22.09.2010, 10:12 *
andvalb,
Цитата(andvalb @ 22.09.2010, 16:09)
В ядре лыжи в папке swift (/arch/arm/march-msm/swift) лежат нужные нам дрова.Их по идее надо пересадить на ядро например версии 2.2 андройда. (поправить конфиги для их компиляции) (или если ядра одинаковы - пересадить само ядро).
Как пересадишь дрова ядра Linux в bootloader где компиляторы разные?
Цитата(andvalb @ 22.09.2010, 16:09)
Не заработает - он ни нашего маппинга кнопок ни LCD не знает
В сорцах если внимательно полный список GPIO и IRQ и так далее есть.
Codeaurora написала что поддержка есть нашего проца и ни какого упоминание где либо про экраны LCD и так далее.Тут хоть кто нибудь врубаеца про что речь тут ведется.Ну наберите в google.ru msm7227 и посмотрите архитектуру и как там все работает!!!
LK собирается компелятором ARM-ELF.. а linux kernel ARM-NONE-EBI или как то так (пишу по памяти).
И по поводу дров в сорцах то что LG дало. В драйвере LCD присутствует innotek/epson? Так как там есть список LCD.
hackbnw,
Цитата(hackbnw @ 22.09.2010, 16:33)
Legacy не компилируется, потому что ему нужны некоторые еще другие исходники, зависимые от чипсета - по идее для нас это qcom-surf, но там нет поддержки нашего дисплея.
Бред!!! А как же MDDI или PANEL все там есть!!! В описании LK написано все что ему надо это адреса где что лежит и правильно скомпелить.

У меня ошибка при компиляции выскакивает что то с кешем связано а я не пойму что не так. Вот и была просьба попробовать знающему.

Драйвера LCD - это удел Intell PXA2XX-3XX у msm7XXX совсем все по другому работает по этому у них нет LCD а есть panel.

Дрова не пересадиш, а логику инита запросто (вместо болтовни посмотри исходник - тогда поймеш о чем речь).
Компиляторы кстати не разные - просто arm-elf ужо загнулся - вместо него можно и нужно использовать arm-none-eabi - none кстати там не просто так.
Базовый адрес gpio и маппинг кнопок - разные вещи.
ПОддержка проца и поддержка нашего железа - не одно и то же.
Успехов в компиляции...



Реп: (49)
Вот в этом документе GT540_SVC_ENG_100531 страница 36 все написано. Теперь скажи где там драйвер LCD ?
andvalb @ 22.09.2010, 18:08 *
Компиляторы кстати не разные - просто arm-elf ужо загнулся - вместо него можно и нужно использовать arm-none-eabi - none кстати там не просто так.

Ты уверен в своем заявлении?(Проверь прежде чем заявлять такое). Я с января сижу на ядрах linux для android причем для разных платформ есть кое какое представление о компиляторах.
И еще если бы этот LK не подходил к нам а то есть gpio matrix key irq процессором то при запуске того bootloader который я сюда выкладывал включился бы телефон в обще? И при этом я использовал не чистый LK а от codeaurora.

Сообщение отредактировал Maksic - 22.09.10, 11:11



Реп: (13)
Бред!!! А как же MDDI или PANEL все там есть!!! В описании LK написано все что ему надо это адреса где что лежит и правильно скомпелить.

У меня ошибка при компиляции выскакивает что то с кешем связано а я не пойму что не так. Вот и была просьба попробовать знающему.

Драйвера LCD - это удел Intell PXA2XX-3XX у msm7XXX совсем все по другому работает по этому у них нет LCD а есть panel.


Panel там нет, а mddi это просто шина обмена данными. Ты задал вопрос почему не компилится, я тебе ответил. Ты исходники то смотрел вообще или так ляпнул? Оно у тебя не слинукется без файлов для конкретной платы. В qcom surf всего три файлика board.c, keypad.c и panel.c.
Вот содержимое board.h из легаси бутлудера:

/* low-level init and partition table setup */
void board_init(void);
void board_reboot(void);
void board_getvar(const char *name, char *value);

/* keypad init */
void keypad_init(void);

/* return a linux kernel commandline */
const char *board_cmdline(void);
unsigned board_machtype(void);

/* lcd panel initialization */
struct mddi_client_caps;

void panel_poweron(void);
void panel_init(struct mddi_client_caps *caps);
void panel_backlight(int on);


Собственно эти функции и отличаются от тела к телу, для отладочной платы SURF они определены в вышеназванном quallcom surf. Без какого-либо board.c у тебя ничего не слинкуется это 100%.
И вообще команды компиляции legacy в студию и желательно для линя.



Реп: (13)
В драйвере LCD присутствует innotek/epson?


Это из бутлудера. А вот что дает поиск по исходникам прошивки.

kernel/drivers/video/KConfig
..
config FB_MSM_EBI2_TMD_QVGA_EPSON_QCIF
bool "EBI2 TMD QVGA Epson QCIF Dual Panel"
select FB_MSM_EBI2
---help---
Support for EBI2 TMD QVGA (240x320) and Epson QCIF (176x220) panel
..
config FB_MSM_MDDI_SWIFT_PANEL
depends on MACH_MSM7X27_SWIFT
bool "MDDI Swift SS DirverIC panel"
select FB_MSM_MDDI_SWIFT_SS
---help---
Support for MDDI Swift HVGA(SS driverIC) panel
320x480, innotek and sharp...


Кому интересно дальше ковырять
./kernel/arch/arm/mach-msm/swift/board-swift-ss-driveric-panel.c
./kernel/arch/arm/mach-msm/swift/mddi_ss_driveric_innotek.c:
и т. п.



Реп: (3)
Maksic @ 22.09.2010, 11:59 *
И еще если бы этот LK не подходил к нам а то есть gpio matrix key irq процессором то при запуске того bootloader который я сюда выкладывал включился бы телефон в обще? И при этом я использовал не чистый LK а от codeaurora.

А чего ему не включится? Максимум кнопки не будут работать или не там будут (смотри схему подключения кнопок (кнопки питания)).
Насчет компиляторов - сходи на сайт arm-elf - поймеш о чем речь. Кстати довольно много народа на рассылке gcc предлагают использовать именно arm-none-eabi так как по мнению разработчиков arm-elf его развитие уже не имеет смысла из за внутренних проблем (фиг vfp заставиш работать).
Так что да - я в своих словах уверен.
И кстати lk им компилится без проблем (c vfp!), а вот заставить это сделать arm-elf - гемор еще тот.

Сообщение отредактировал andvalb - 22.09.10, 20:18


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 13.06.24, 23:06