Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Задаем вопросы по теме "Создание патчей, для начинающих"


Рекомендуемые сообщения

или тут можно посмотреть http://OldPh.one/index.php?showtopic=33003#5

в сообщении Artyomcool Низкоуровневое

 

.arm
;Функция, защищающая от кэширования.
;R0=Address, R1=Size
unCache:
   STMFD SP!,{R0,R1,LR};Сохраняем регистры
... ну и так далее.

используется ARM код.

  • Like 1

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 1,4 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Подскажите пожалуйста, как можно сэмулировать нажатие кнопки при заблокированной клавиатуре? Заметил, что если нажать какую-нибудь кнопку перед разблокировкой с первой версией патча "Убрать окно 'Клавиатура разблокирована'", то подписи софт клавиш появляются нормально. Обработчик вроде как нашёл (0x2019C2F4), но дальше что с ним делать — непонятно :bx:

Ссылка на комментарий
Поделиться на другие сайты

А кто что про MCC команды знает интересного ?

Команд сотня, а в патчах мы их толком и не применяем.

 

Вот например, что делает MCC_MULTI_TRACKING ?

Ещё всякие MCC_*_FLAG

 

значат ли что-то 1-4 аргументы у MCC_CALL ?

 

я кстати узнал что 4-й аргумент MCC_IF/ESLEIF/ELSE - превращает их в условный MCC_CALL !

  • Like 2

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Вот например, что делает MCC_MULTI_TRACKING ?

Трассировка выполнения. Выводит в порт строку с указанного адреса.

На сисолах был патч от VadikS, включающий режим отладки. Можно было смотреть, что в мобиле творится. Этой трассировки повсюду натыкано, не только в МСС.

А вот как на свифтах его включить - ХЕЗ...

 

значат ли что-то 1-4 аргументы у MCC_CALL ?

Параметры, читаются в thumb-коде.

Что первые два значат, наверно и сам знаешь. Остальные свои для каждой команды, или не используются.

 

 

я кстати узнал что 4-й аргумент MCC_IF/ESLEIF/ELSE - превращает их в условный MCC_CALL

Это давно известно. Я уже просил Алексея исправить разбивку на вкладке МСС.

  • Like 3
5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Поскольку я привык к архитектуре х86, то тут никак не могу осознать реакцию флагов. Какая-то она совсем не такая как у х86.

 

в MUL - вообще никак не узнать что было переполнение ???

 

или вот -

LDR R0, =0xFFFFFFFF

MOV R1, 1

ADD R0, R1

- V=0, хотя тут на форуме именно этот пример есть для установки V (http://OldPh.one/index.php?showtopic=39330?p=369532entry369532), но у меня он ставит Z и С.

 

Причём я и на реальной мобиле проверял, и в отладчике BinEdit - V никак не устанавливается!

Я вообще уже пробовал всевозможные комбинации ADD, SUB, MUL - V упорно сброшен.

 

Вобщем вопрос. Как установить флаг V ???

(кроме как через MSR CPSR_flg)

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

или вот -

LDR R0, =0xFFFFFFFF

MOV R1, 1

ADD R0, R1

- V=0, хотя тут на форуме именно этот пример есть для установки V (http://OldPh.one/index.php?showtopic=39330?p=369532entry369532), но у меня он ставит Z и С.

 

Вобщем вопрос. Как установить флаг V ???

(кроме как через MSR CPSR_flg)

Читаем в доке:

 

V Is set in one of two ways:

• For an addition or subtraction, V is set to 1 if signed overflow occurred, regarding the

operands and result as two's complement signed integers.

• For non-addition/subtractions, V is normally left unchanged (but see the individual

instruction descriptions for any special cases).

 

Ну, по поводу MULa, так там чётко написпно, что V флаг она не изменяет. А пример выше относится к первому пункту приведённой цитаты, в котором говорится о знаковом переполнении, т.е. складываться/ вычитаться должны знаковые числа. Попробуй сложи максимальное целое - 7FFFFFFF и 1, в результате получится отрицательный нуль (?!) 80000000, по-идее, должен выставиться V флаг... о результатах сообщи :128:

 

Вообще-то флага переноса достаточно для определения переполнения регистра, зачем тебе флаг V?

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

Попробуй сложи максимальное целое - 7FFFFFFF и 1, в результате получится отрицательный нуль (?!) 80000000, по-идее, должен выставиться V флаг... о результатах сообщи 8)

Получилось!!!

На реальной мобиле - работает!!!

 

А вот в отладчике BinEdit - глюк, у него не работает :128:

Там кстати уже 3 бага нашёл (команда SBC не работает, ручная заргузка регистров глючит), вобщем им отлаживать код получается очень рисковано :)

 

Вообще-то флага переноса достаточно для определения переполнения регистра, зачем тебе флаг V?
надо мне это было чтобы убедится что RegView работает - там вывод флага я сделал, а вот до этого момента я там только ноль видел.

 

RegView.png

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Помогите разобраться!!! Портирую ID3v1 Reader с E200XEGD6 на E200BXEGL2 вот не могу найти вот эту врезку!!! :120:

20570752: 8E4D LDR R5, =0x300995E7 ;R5 = значение по адресу (PC + 568)=[0x2057098C]= 0x300995E7

в патче:

<nord offset="0x570752" from="8E4D281C2BF7B0EA0020" to="01480047000005C35321" />

 

Ну собственно обьясните кто может , как найти??? :59:

Ссылка на комментарий
Поделиться на другие сайты

Andreychik,

 

Берём первый же BL _off_20E1A5D0

Убеждаемся что он вызввается всего из нескольких мест.

Находим по первым байтам аналогичную подпрограмму во второй прошивке - это будет 212E185C.

Ищем все вызовы там, их всего 2 оказывается.

 

Итог - тебе надо врезатся по 205CD77E.

И обрати внимание что теперь у них адрес какой-то лежит в R6 а не в R5.

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

mov r0,0

str r0,[sp] - ?

mov r3 - адрес текста

mov r2, 67 - ?

mov r1 - номер пункта меню

mov r0 - gs_DspMenu

bl lk_AddMenu

 

Типовая процедура рисования строчки меню… Вопросы у меня по ней такие возникли:

1. а что за аргументы в R2 и [sP] ? какие есть варианты, чего интересного можно добится ими ?

2. как сделать чтобы пункт меню был неактивным ?

3. gs_DspMenu - это вообще что такое ? (ну я знаю где лежит, знаю что в R7 мастерпатч его сразу даёт. Но может когда-то можно что-то другое в R0 дать ?)

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

1. а что за аргументы в R2 и [sP] ? какие есть варианты, чего интересного можно добится ими ?

при рисовании обычного пункта-ничего. но например,если мы хотим вывести картинку на пункт,то в вершину стека сохраняем id картинки,очищаем r3,и изменяем тип пункта r2.

2. как сделать чтобы пункт меню был неактивным ?

r0-gs dsp mеnu,

r1-номер пункта меню

r2-состояние тумана,1-вкл,0-выкл.

bl lk setmenuhide

3. gs_DspMenu - это вообще что такое ? (ну я знаю где лежит, знаю что в R7 мастерпатч его сразу даёт. Но может когда-то можно что-то другое в R0 дать ?)

если укажешь что-нибудь другое-тел повиснет.
  • Like 2
Ссылка на комментарий
Поделиться на другие сайты

Вообще gs_DspMenu.. Это структура для создания менюшки. :)

вот чтот типа того...

//много типов этой структуры я не знаю... это так, чтобы ты имел представление, с чем связываешься 
struct t_DspMenu  {
t_MenuType v_MenuType,
unsigned char v_IndexOrDisplayType,
unsigned short v_NbMenuList,
unsigned char v_SG,
unsigned short v_MenuID,
t_MenuData s_MenuData,
<cab35d> *p_GetMenuDataFunc,
unsigned char  *p_CheckState,
char *p_EmptyText,
<cab3bc> *p_CheckMenuFunc,
t_mcc  *p_CheckMenuMcc,
unsigned short v_RadioOnIndex,
unsigned char v_WildType,
unsigned short v_WildIndex,
Position_t s_TotalPos,
Position_t s_MenuPos,
Position_t s_ScrollbarPos,
kdxScrollbar_t s_Scrollbar,
unsigned char v_FrameType,
unsigned char v_ScrollbarType,
unsigned short v_MenuListHeight,
unsigned short v_NbDspMenuList,
unsigned short v_FirstDspMenuIndex,
unsigned short v_CurMenuIndex,
bool v_MenuSelect,
bool v_ReturnMenu,
t_mcc  *p_ReturnMcc,
unsigned char v_SaveContextCause,
<cab57d> *p_PreMenuFunc,
unsigned char v_MoveKeyFilter,
<cab5c1> *p_MoveMenuFunc,
t_mcc  *p_MoveMenuMcc,
unsigned char v_SelectKeyFilter,
<cab628> *p_SelectMenuFunc,
unsigned char v_UserKeyFilter,
unsigned char v_MuteKeyFilter,
<cab68f> *p_UserMenuFunc,
<cab6c5> *p_EventMenuFunc,
t_mes s_SaveEvent,
<cab705> *p_SaveMenuFunc,
<cab739> *p_RestoreMenuFunc,
t_mcc  *p_RestoreMenuMcc,
unsigned short v_NbWheelMenuList,
unsigned short v_CurWheelMenuIndex,
bool v_WheelNoRelease,
<cab7de> a_WheelDspIndex,
t_MenuPath s_MenuPath,
<cab816> *p_DestroyMenuFunc,
t_ChildDisplayStep v_ChildDisplay,
t_ChildFocusMode v_ChildFocus,
t_ChildDirection v_ChildDirection,
unsigned short v_ChildStartY,
bool v_TransitionStop,
bool v_DisplayFlag,
Position_t s_OsdPopup1Pos,
unsigned short v_OsdPopup2StartY,
unsigned short v_OldCurMenuIndex,
unsigned short v_NewCurMenuIndex,
Position_t s_FocusPos,
Position_t s_MovePos,
t_TransItem s_TransItem,
};

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Привет всем! Помогите пожалуйста! Я написал патч (убрающий полоски "верхнюю и нижнюю"), как заставить телефон выводить куски фоновой картинки , а не рабочий стол. :28:

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

Привет всем! Помогите пожалуйста! Я написал патч (убрающий полоски "верхнюю и нижнюю"), как заставить телефон выводить куски фоновой картинки , а не рабочий стол. :28:

 

Ты о чем именно че за патч то??? :)

Ссылка на комментарий
Поделиться на другие сайты

Ты о чем именно че за патч то??? :28:

Делаю патч такого 69368-4-05-09)1241435899_thumb.jpg типа, токо вместе с заголовком "музыка" отображается (антенка, батарейка и всё что у верху нах)

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

Делаю патч такого 69368-4-05-09)1241435899_thumb.jpg типа, токо вместе с заголовком "музыка" отображается (антенка, батарейка и всё что у верху нах)

 

Ну на сколько я знаю, в Е200 есть функция которая прорисовывает это все)))

lk_DisplayMenuBackground а то что ты делаеш это загадка)) :28:

 

А во вторых этот скрин что ты дал сделан по моему исху)) который я переносил с Д900 на Д900и)) но так к сожалению и не добился результатов тех что хотел...

64341-4-05-09)1241441190_thumb.jpg

Изменено пользователем MaksiK
Ссылка на комментарий
Поделиться на другие сайты

Ну на сколько я знаю, в Е200 есть функция которая прорисовывает это все)))

lk_DisplayMenuBackground а то что ты делаеш это загадка)) :132:

 

А во вторых этот скрин что ты дал сделан по моему исху)) который я переносил с Д900 на Д900и)) но так к сожалению и не добился результатов тех что хотел...

64341-4-05-09)1241441190_thumb.jpg

 

Исходник млж дать посмотреть, хоть одним глазом :)

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

Исходник млж дать посмотреть, хоть одним глазом :132:

Исходник ооочень большой. прорисовка софт-полос происходит почти вкаждом меню в отдельном месте.далее заголовок - это одна часть,место,где рисуются часы-это другая часть,далее место,где рисуются иконки,левее часов-это другая часть. глянь патч на д9оо - imaginе mеnu: niаgаrа, или хотя бы truе visiоn на д5оо,исх на форуме лежит с патчем.осилишь?

Ссылка на комментарий
Поделиться на другие сайты

[AlaSToR], "осилишь" в смысле весь исходник спортировать?

 

.equ lk_DisplayMenuBackground 0x2011027C

;===================================================================

.start 0x20200F08 ( вызов полоски в главном меню)

ldr r0,=0xD638+1

bx r0

.data

 

.start 0xD638

чо тут то делать

[AlaSToR], помоги!

 

==========================================

Но я ище и так пробывал :128:

 

.start 0x20200F08 ( вызов полоски в главном меню)

nop

nop

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

.start 0xD638

чо тут то делать

[AlaSToR], помоги!

 

а тут востанавливаеш что будеш затирать

r0,

r1

r2

r3

Размеры (ширина высота, отступ слева и сверху)) :128:

bl на нункцию прорисовки

ну возврат))

Ссылка на комментарий
Поделиться на другие сайты

MaksiK, пасиба. А то я тут придумывал всякое! :128:

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

а на какой адрес возвращатся? :128:

Счастливый обладатель лицензионной Windows 7

Для друзей просто ' Паня '

Ссылка на комментарий
Поделиться на другие сайты

а на какой адрес возвращатся? :D

 

Ну ты ж врезаешся кудато??? правильно??? :lol: и вряли именно в то место что рисует твой заголовок)) ну я могу и ошибится... :) вот как обычная врезка вставил в код какйото свой код и востанвил все чтоб работало) :al:

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

А у мобилы как вообще реализована многозадачность ?

Есть ли какие-то права доступа для тех или иных процессов ?

 

Я с непонятной штукой столкнулся:

запускаю MCC-меню по lk2_12start_menu_edit_fsm…

если запуск из процедуры обработки кнопок в Java - то меню работает неадекватно - джойстик не работает, а пункты меню при выборе вызывают разные глюки.

но, тоже самое меню, запускаю через CGSN, тоже при помощи lk2_12start_menu_edit_fsm, во время работы явы - и всё отлично! и меню без глюков, и все его пункты срабатывают без аварий.

 

в чём проблема - не понимаю…

у мобилы есть множество параллельных процессов с разными правами и окружением ?!

а как тогда запускать MCC-код из такого процесса из которого он не хочет нормально запускатся ?

 

как вообще создать ещё один процесс (и как его потом убить) ?

в E740XEGF4.sym много в принципе любопытных имён есть по поводу процессов, но может кто знает более подробно ?

 

или lk2_12start_menu_edit_fsm не возвращает управление до исполнения MCC_EXIT и глюки поэтому ?

 

зы. кстати с мастерпатчем нового поколения (как у D780 - c LoadCFG/SaveCFG/FreeCFG) похоже бывают глюки тоже из-за каких-то неучтённых особенностей многозадачности - при частом опросе и записи ячеек иногда почему-то запись не происходит… редко, но бывает…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Вопрос у меня по поводу стека.

 

Есть в прошивке D500XEEG3 такая функция Draw_Box, предназначенная для вычерчивания пустых прямоугольных рамок на экране.

 

Я пишу исходный код с использованием этой функции и вот с какой проблемой столкнулся.

 

Есть например такой участок кода

 

MOV R2, #0x1

STR R2, [sP, #0x4]

STR R2, [sP, #0x8]

STR R2, [sP, #0xC]

STR R2, [sP]

...

...

ADD R0, SP, #0xD4

BL Draw_Box

 

Всё бы хорошо, да функция меняет значения регистров R0-R2 после выполнения. А мне как раз ну ооооочень надо, чтобы после выполнения функции значения регистров были такими же, как и до её вызова.

Сразу оговорюсь, что код у меня написан так, что сохранить временно эти регистры например в R5-R7 возможности нету, используются все 8 штук.

 

Хотелось бы сохранить R0-R2 в стек лёгким мановением PUSH {R0,R1,R2} но как я понял - тогда затираются параметры, передаваемые функции через стек со смещениями 0, 4 и 8.

 

Так вопрос - как можно сохранить регистры в стеке, не затирая параметров которые передаются функции через тот же стек, и после её завершения восстановить их?

Двери есть везде, нужно просто знать как в них войти!

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



×
×
  • Создать...