NetLab · Rules · Torrent Tracker · Have a problem? · Eng/Rus | Help Search Members Gallery Calendar |
Welcome Guest ( Log In | Register | Validation ) | Resend Validation Email |
Pages: (52) < 1 2 3 .. 6 .. 9 .. 12 .. 15 .. 18 .. 21 .. 24 .. 27 .. 30 .. 33 .. 36 .. 39 .. 42 .. 45 46 47 [48] 49 50 51 52 > ( Show unread post ) |
Модифицируем прошивку для DVD плейера (MTK 1389), инструкция от САХ |
|
Posted: 26-04-2007, 16:40
(post 706, #742414)
|
||||||||||
Member Group: Members Posts: 126 Warn:0% |
cax Я все исправления вносил в Bank1. Первым делом надо найти процедуру по старому DIR_GetPosition по новому wFlGetItemIdx. Её сигнатура есть в файле MT1389_FileBrowser.idc, скрипт её и находит неплохо. У меня она начинается по адресу 1_DE44. Далее ищем такую последовательность 7F 05 12 DE 44 у меня она встретилась один раз. По адресу 1_E522 это и есть процедура fgFlMnOnIrNext.
Далее в свободном месте пишем процедуру скипа.
Правим исходную, таким образом: в начале процедуры вызываем Skip_next, а в конце процедуры Skip_next делаем прыжок на fgFlMnOnIrNext после вызова DIR_GetPosition_wFlGetItemIdx. В итоге имеем:
Аналогично правим и fgFlMnOnIrPrev только теперь ищем 7F 00 12 DE 44 вот готовые процедуры:
Вроде объяснил , если что не понятно спроси!!!
что значит прошлого?? и с версиями не понял?? |
||||||||||
|
Posted: 26-04-2007, 17:03
(post 707, #742421)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
По поводу поколений - объясню. В прошивках с версиями 05.00.04.хх и так далее, скип уже реализован изначально, а самые новые плейеры уже укомплектовывают версией 05.00.07.хх, насколько мне известно. Поэтому прошивки без скипа (версии 05.00.03.хх и младше) я назвал "прошлым поколением". За патч - огромное спасибо ! На днях попробую найти время для проверки на Апексе и Юндае и обязательно отчитаюсь. |
||
|
Posted: 26-04-2007, 17:21
(post 708, #742433)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax
ага, а смотреть надо по Version или 8032, а то у меня вот такая инфа: Version : 00.00.00.02 Sub : 8032 : 05.00.04.02 |
||
|
Posted: 26-04-2007, 17:36
(post 709, #742438)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
А вот и первые "непонятки" с Апексом: 1) нашёл DIR_GetPosition по сигнатуре CD EF CD 90 ?? ?? E0 FF 13 13 13 54 0F FF, по адресу DBA8. 2) искал 7F 05 12 DB А8 - тут всё безупречно, найдено 1 раз и то, что надо. А вот найти 7F 00 12 DB А8 мне не удалось, зато E4 FF 12 DB A8 находится целых 6 раз. Какой из них мне нужен ? Ещё нашёл один раз 7F 06 12 DB А8, других 7F xx 12 DB А8 не было. Апдейт: в Юндае та же бодяга. This post has been edited by cax on 26-04-2007, 17:38 |
||
|
Posted: 26-04-2007, 18:16
(post 710, #742453)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax У меня в процедуре fgFlMnOnIrPrev то что я привёл в примере есть последовательнось: ROM:ED7F 90 FB 99 mov DPTR, #XRAM_FB99 ROM:ED82 EE mov A, R6 ROM:ED83 F0 movx @DPTR, A ROM:ED84 A3 inc DPTR ROM:ED85 EF mov A, R7 ROM:ED86 F0 movx @DPTR, A ROM:ED87 D3 setb C ROM:ED88 94 05 subb A, #5 ROM:ED8A EE mov A, R6 ROM:ED8B 94 00 subb A, #0 ROM:ED8D 40 27 jc ROM_EDB6 и у тебя она тоже есть по адресу 1_E8CF значит это и есть нужная процедура fgFlMnOnIrPrev = 1_E8CF. Ну дальше по плану |
||
|
Posted: 26-04-2007, 18:34
(post 711, #742465)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
Так и запишем: fgFlMnOnIrPrev искать по сигнатуре E4 FF 12 xx xx 90 ?? ?? EE F0 A3 EF F0 D3 где xx xx - адрес DIR_GetPosition. А если ещё немного поиграться, то получаем, что знать DIR_GetPosition нам и вовсе не надо, а цепочки для next/prev такие: для next - 7F 05 12 ?? ?? 90 ?? ?? EE F0 A3 для prev - E4 FF 12 ?? ?? 90 ?? ?? EE F0 A3 EF F0 D3 Ещё раз спасибо ! Теперь осталось допатчить и проверить, но это уже будет не сегодня. |
||
|
Posted: 26-04-2007, 20:26
(post 712, #742517)
|
||||
Newbie Group: Members Posts: 21 Warn:0% |
Andy007, а можно, пожалуйста, немного подробнее на этот счет? Я прочитал сообщения NA на эту тему в mt13x9 на Yahoo, о том как искать ф-ции, читающие файловые системы, и далее:
Не уверен, что пользуясь такой инструкцией можно браться за это дело. Есть ли что-то более конкретное - откомментированный дизассемблер хотя бы? Т.е. сам факт того, что LFN прошивка уже собирает, хотя и не использует, обнадеживающий, но как его приложить к моей конкретной прошивке? Ф-цию FAT_FUNC_2 я нашел без особого труда, но она ссылается на десятки других, следовать по всем этим вызовам, пытаясь собрать примерную картину происходящего было бы очень трудоемко. Спасибо! |
||||
|
Posted: 27-04-2007, 20:09
(post 713, #743007)
|
||
Newbie Group: Members Posts: 21 Warn:0% |
Если можно - несколько вопросов к знатокам. 1) Сколько в ARM коде свободного места для того, чтобы пихать свой код? Иными словами, какого размера функции можно безопасно туда вставлять? UnicodeToCP - функция крошечная, а как насчет, скажем, уникодных таблиц, или дополнительного модуля для поддержки LFN? Я тут начал разбираться в коде New Age для Medion, где он добавил поддержку длинных имен файлов в FAT. Идея примерно ясна, код более-менее понятен (с.б., человек писал, а не компиллятор - но как бы пригодились листинги с комментариями!). New Age добавил несколько килобайт кода и таблиц (а значит, под мою систему - править и править) - безопасно ли вставлять такое количество кода в прошивку? Свой код New Age разместил примерно начиная с того места (сообщения об ошибках C-компиллятора), которое было рекомендовано cax для UnicodeToCP. 2) Существует ли простенький фриварный ARM ассемблер? Замучаешься все бинарные коды вручную составлять (ну BL с помощью BCalc ладно, но все остальное...). 3) Есть ли где-нибудь примерный перечень граблей, на которые лучше не наступать? Я имею в виду, изменяя что и где легче всего заработать плеер, который придется оживлять кабелем (т.е. не способный принимать прошивку с диска)? Кабель из старого нокиевского я сделать смогу, но предпочел бы не тратить на это время. Вопросов на самом деле гораздо больше, но я пытаюсь разбираться самостоятельно. Спасибо! This post has been edited by vboroda on 27-04-2007, 21:10 |
||
|
Posted: 28-04-2007, 09:32
(post 714, #743190)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax ну как результат?? vboroda У NewAge есть утилита для увелечения размера ARM. Насколько я знаю можно лепить сколько угодно большие куски своего кода. Главное что бы место было свободное. NewAge часто если не сказать всегда расширяет ARM, т.к. для его патчей, того места что есть ни когда не хватате. А насчёт кабеля зря ты так. Я себе спаял на двух транзисторах и забыл заморочки с дисками. Заливаеться быстро и в любой момент и если где то накасячу, то даже об этом не задумываюсь. Плюс есть возможность просматривать память, тем более если ты будешь работать с файлами, то результаты работы ты легко увидишь в памяти. |
||
|
Posted: 29-04-2007, 16:48
(post 715, #743721)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
Rvs, и последние (я надеюсь) 2 вопроса по теме (для плохо знающих IDA и скрипты).
1) Как найти PREF_GetChar я знаю, а вот как найти ARM_GetChar ? Я прочесал скрипты, но не нашёл. 2) 0x249 - этот адрес верен для любой прошивки ? |
||
|
Posted: 03-05-2007, 09:56
(post 716, #745147)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax Не смог сразу ответить, на майские праздники ездил отдыхать!!! 1. ARM_GetChar сигнатура есть в файле MT1389_Misc_v3 или MT1389_Misc вот она D3 10 AF 01 C3 C0 D0 8E ? 8F ? 90 F8 60. 2. До последнего момента был уверен, что да, но с появлением исходников нет. Как раз в них другой адрес. Но радует одно, что кроме как в исходниках я разницу и нашёл. А у тебя есть сомнения??? Говори!!! |
||
|
Posted: 03-05-2007, 15:21
(post 717, #745217)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
1) Такая сигнатура в Юндае есть дважды (EC21 и EF8F), я полагаю, что скрипт использует первую из них ? А сколько раз она встречается у тебя ? 2) Сомнения у меня от того, что я не знаю происхождения этого магического числа. Если б его можно было вычислить по каким-либо признакам из кода самой прошивки - я был бы спокоен. |
||
|
Posted: 03-05-2007, 18:09
(post 718, #745278)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax 1. У меня тоже находит два раза, но оказываеться в одном случае это ARM_GetChar, а в другом ARM_PutChar у них разные концовки. В скрипте ARM_PutChar ищут по такой сигнатуре ED F0 D0 D0 92 AF 22. 2. Ну это конечно не магическое число в исходниках это SI_MP3_MOD - trick mode. Смысл ячейки ясен, а вот как её найти наверняка.... Я поглядел у себя, косвенно через процедуру fgFlMnOnIrPlay и то через IDA её можно найти, а так сложно.... This post has been edited by Rvs on 03-05-2007, 18:13 |
||
|
Posted: 08-05-2007, 10:24
(post 719, #746588)
|
||
Pro Member Group: Members Posts: 738 Warn:0% |
Rvs, ещё раз спасибо ! Пока проверил только на Юндае, работает безупречно ! Вот "путевой лист": Hyundai 3899 servo 02.09: next/prev mp3 skipping mod.
This post has been edited by cax on 08-05-2007, 10:25 |
||
|
Posted: 08-05-2007, 15:42
(post 720, #746689)
|
||
Member Group: Members Posts: 126 Warn:0% |
cax Отлично!!! Думаю будет работать везде. |
||
Pages: (52) < 1 2 3 .. 6 .. 9 .. 12 .. 15 .. 18 .. 21 .. 24 .. 27 .. 30 .. 33 .. 36 .. 39 .. 42 .. 45 46 47 [48] 49 50 51 52 > |