Патчи *.VKP (DB 2000/2010/2012) : Патчи : Форум

Страница 36 из 271: « 1 ... 32 33 34 35 [36] 37 38 39 40 ... 271 »

 den_po:
26.12.06, 09:43
 IronMaster
а сам? адреса функций знаешь? знаешь. поглядеть, как они в прошивке используются можешь? можешь =)

Код: 
  adr r1,openflags ; указатель на ascii строчку "rb" - чтение бинарного файла
  adr r0,fullname ; указатель на unicode строчку "/папка/файл"
  bl FSX_Open ; открываем файл

  mov r6,r0 ; сохраняем хэндл открытого файла на будущее

  sub sp,sp,4 ; читать будем в стек, выделяем место в стеке для этого

  mov r3,r0 ; для чтения хэндл в r3 должен быть
  mov r2,1 ; размер элемента для чтения
  mov r1,4 ; число элементов для чтения
  mov r0,sp ; адрес, куда будем читать, ячейка в стеке
  bl FSX_Read ; читаем
 ; тут можно поставить проверку на ошибки чтения
  ldr r7,[sp] ; получаем в регистре r7 прочитанное значение

  add sp,sp,4 ; восстанавливаем стек

  mov r0,r6 ; хэндл мы сохраняли в r6, берём сохранённое значение
  bl FSX_Close ; закрываем файл

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

GDFS_GetUnitSize = 0x446671E0
GDFS_Read = 0x446670B8
GDFS_ReadPartial = 0x44667188
GDFS_Write = 0x44666FD0

 IronMaster:
26.12.06, 13:26
 den_po Спасибо огромное.
Есть вопрос по исходным данным для гдфс. Как я понял в р1 идет адрес откуда(куда) записать(прочитать), в р2 - размер элемента, в р3 - не понял, но вроде постоянно 0. А в р0 я так понял должен идти адрес в гдфс? Но значение там постоянно находится через смещение от одного и того же адреса 44441ЕВВ (для R2CA001). Не мог бы ты пояснить, плиз.

 den_po:
26.12.06, 13:45
 IronMaster
почти всё верно. кроме GDFS_ReadPartial
r1 - смещение внутри переменной, откуда читать
r2 - буфер приёма
r3 - размер

для GDFS_Write r3 возможно выполняет ту же роль, что r1 в GDFS_ReadPartial

r0 - номер переменной плюс тот самый адрес (44441ЕВВ)

 IronMaster:
26.12.06, 14:05
 den_po А зачем используется этот адрес, если потом он все равно вычитается?
И по поводу номера переменной, как его узнать? Каждый блок в гдфс имеет свой номер?

 den_po:
26.12.06, 14:20
 IronMaster
по этому адресу лежит какая-то таблица. возможна таблица переменных, которые не удаляются после мастер-ресета. может ещё что, не знаю.
номер переменной состоит из двух частей. в двух старших байтах номер логического блока, в младших номер переменной в блоке. например 00020CD4 (total call timers) - 2й логический блок, переменная номер CD4
данные хранятся в блоках с номерами 0..6.
список всех существующих в теле переменных можно получить например с помощью gdfstool2, если выбрать setool_script и read =)

 Maximys:
26.12.06, 15:25
 Кому интересно, написал таблицу использования свободного места после маина и свободного места в ОЗУ.

Для K300 SW-R2AT003:
(44C6A440 - 44C6A4FF) - Мигание верхнего светодиода (возле ИК) при зарядке - 4C297928
(44C6A500 - 44C6A55F) - Откл подсветки клавы по горячей кнопке - 4C29792C
(44C6A560 - 44C6A5BF) - Регулирование яркости дисплея - 4C297930

 Joker XT:
26.12.06, 15:49
 den_po, а файл который сохраняется в Прочее, там память считается с адреса 4C000000? Свободное место в раме то что с нулями?

 IronMaster:
26.12.06, 15:57
 Joker_XT да. В файл записывается рама с адреса 4С000000 длиной 1 мегабайт. Свободное место это 0.

 den_po:
26.12.06, 16:12
 Joker_XT
свободное место на самом деле не обязательно с нулями.
и повторюсь, не нужно пользоваться этим способом для нахождения свободной памяти. лучше портируй под свою прошивку "сдвиг кучи" и получи стабильно свободное, а не редкоиспользуемое, место в памяти.

 Joker XT:
26.12.06, 18:52
 Может мне кто-нить объяснить каждую команду, но то я пытаюсь хоть как-нить научится делать патчи (большие)

org setupwizard
code16
push {r0-r7,lr}
sub sp,sp,0x10
mov r0,0
push {r0}
mov r2,4
mov r3,0x18
lsl r3,r3,4
adr r0,fpath
adr r1,fname
bl FSX_CreateFile_
add sp,sp,4
mov r6,r0
movl r1,0x4C000000
movl r2,0x00100000
bl FSX_Write_
mov r0,r6
bl FSX_Close_
add sp,sp,0x10
pop {r0-r7,pc}
align 4
FSX_CreateFile_:
ldr R3, _FSX_CreateFile_
BX R3
_FSX_CreateFile_ DCD (FSX_CreateFile+1)

FSX_Write_:
ldr R4, _FSX_Write_
BX R4
_FSX_Write_ DCD (FSX_Write+1)

FSX_Close_:
ldr R4, _FSX_Close_
BX R4
_FSX_Close_ DCD (FSX_Close+1)
Страница 36 из 271: « 1 ... 32 33 34 35 [36] 37 38 39 40 ... 271 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=376&start=350

© 2005-2018 supertrubka.org