KonstanT Признанный телефонист Откуда: UA, Kyiv, UMC С нами с: 20.09.2002 Плодовитость: 544
Рейтинг
Подано 69 (48/21) голосов
|
Пользуйтесь...
|
Для счастливых обладателей С25 с 43, 46, 49 и 61й прошивкой имеются патчи, позволяющие телефону нормально заряжать литиевые аккумуляторы.
Качаем его отсюда. Если у кого-то есть желание посмотреть исходники, вот код:
[code]
$Segmented
$Mod167
;__________________________ There define, for wich version work to _________
sw43 EQU 0
sw46 EQU 0
sw49 EQU 0
sw61 EQU 1
;----------------------------------------------------------------------------
$Include (C25MemDescr.INC)
OnlyLi950 EQU 0 ; Set to 1 if you want to get patch
; without analizing of battery type
;==========================================================
CallMyProc Section Code Word At CallMyProcAddr
CallProc Proc far
calls Seg(AccuTest), Sof(AccuTest)
CallProc endp
CallMyProc Ends
;===========================================================
AccuInit Section Code Word At AccuInitAddr
AccuInitProc Proc far
movbz R14, DPP1:MyAccType
jmpr cc_Z, GoOn
mov R4, #4
orb DPP1:Icon7Byte, RL4
shl R4, #1
or DPP1:LCDAreaMask, R4
bset LCDReqRefr
GoOn: mov R4, R14
shl R14, #2
add R14, R4
shl R14, #1
add R14, #POf(AccuData) ;Source
mov R15, #Pag(AccuData) ;
mov R12, #Pof(AccType) ;destanation
mov R13, #Pag(AccType) ;
mov R4, #10 ; 10 bytes to copy
mov [-R0], R4
calls Seg(IPCopyString), SOf(IPCopyString)
add R0, #2
movbz R4, DPP1:AccType
ret
AccuInitProc endp
;----------------------------------------------
AccuInit EndS
;==========================================================
ShowAcType Section Code Word At ShowTypeAddr
; Replaces '---' string with AccuType
ShowType Proc far
movb RL4, DPP1:MyAccType
addb RL4, #30h
movb [R12], RL4
ShowType endp
ShowAcType Ends
;==========================================================
ShowTrueLT Section Code Word At ShowTrueLTAddr
ShowLT Proc far
movbz R12, DPP1:TrueLT
ShowLT endp
ShowTrueLT Ends
;==========================================================
AccuTest Section Code Word At AccuTestAddr
AccuTestProc Proc far
jb DPP3:AccTypeIsSet, SkipAccDet
IF NOT OnlyLi950
mov R5, R4 ;=TB
mov R4, #0
sub R5, #2976
jmpr cc_C, SetAccType
sub R5, #2
jmpr cc_NC, ChkLi950
mov R4, #2 ;Type 2 - Li-ion 1400mA*h
jmpr cc_UC, SetAccType
ChkLi950: sub R5, #7
jmpr cc_NC, SetAccType
ENDIF
mov R4, #1 ;Type 1 - Li-ion 950-1000mA*h
SetAccType: movb DPP1:MyAccType, RL4
bset DPP3:AccTypeIsSet
SkipAccDet: calls Seg(Get_TE), SOf(Get_TE)
movb RL5, DPP1:MyAccType
jmpr cc_Z, ExitSub
mov DPP1:TB_val, R4
ExitSub: ret
AccuTestProc endp
;----------------------------------------------
AccuData EQU $
Ni_700: db 1 ;Type
db 0ABh ;Charger current
dw 13ECh ;Maximal value of Vbat
dw 3145h ;Capacity of battery in
dw 23CDh ;some representation
dw 2BCh ;Capacity in mA*h
Li_950: db 3
db 0ABh
dw 4200
dw 21D0h
dw 3325h
dw 950
Li_1400: db 3
db 0ABh
dw 4200
dw 628Ah
dw 479Ah
dw 1400
AccuTest EndS
;==========================================================
ReplaceCap Section Code Word At ReplaceCapAddr
; Replaces 'C%' string with 'AT' string
db 'AT'
ReplaceCap Ends
END
[/code]
Или качайте архив с иходниками.
Инфо для программеров:
Версия прошивки выставляется в C25LiIon.a66 в первых строках. Если нужно получить патч без автоопределения типа аккума, то в исходнике значение переменной OnlyLi950 устанавливается в 1. В этом случае получается патч только для LiIon 950mA*ч, что не имеет больших отличий. Файл C25MemDescr.inc содержит описания необходимых переменных в RAMе телефона. За помощью обращайтесь ко мне.
Патч представляет собой .vkp файл, который нужно применить к соответствующему файлу фуллфлеша с пом. программы V_KLay, а затем залить подправленный фуллфлеш обратно в аппарат. Если аппарат с версией прошивки 43 - 49, то используется флешер Total Flasher, он работает с образом флеша .c2r, который является ни чем иным, как бинарником (.bin).
Если аппарат с 61й версией прошивки, тогда используется програграмма Cristmas.
Чтобы считать фуллфлеш с пом. Cristmas, в программе нужно выставить:
размер блока: 0010-0000
начальный адрес: 00010-0000
Чтобы залить обратно подправленный фуллфлеш, в программе нужно выставить:
размер блока: 0010-0000
начальный адрес: 00000-0000
Если кто не в курсе, Cristmas работает только с 1-м ком портом.
Не забудьте сохранить исходный фуллфлеш, на случай, если что-то пойдёт не так.
Пропатченный аппарат легко определить визуально: если используется литиевая АКБ, то при включении сначала на какую-то долю секунды в правом верхнем углу экрана зажгуться две шестерёнки, как сигнал, что телефон опознал литиевую батарею (либо при заряде выключенного аппарата).
Если у Вас активировано сервисное меню (например, этой прогой), тогда в Charge Monitor'e после AT можно увидеть тип аккумулятора, распознанный телефоном. Тип может быть:
0 - стандартный NiMH аккум 700мАч
1 - Li-ion 950-1000мАч
2 - Li-ion 1400мАч
Тип 2 - самый лучший. По отзывам продавцов на радиорынке, такие аккумы реже всего возвращают. У меня уже второй год работает такой - без проблем.
Возможные глюки:
1.Если телефон опознал Ваш никелевый аккум, как литиевый, попробуйте нагреть аккумулятор в руках и включить телефон снова.
2.Если телефон не опознал литиевый аккумулятор, тогда, возможно, параметры батареи сильно отличаются от тех, что "известны" телефону ("левый" производитель), либо батарея вовсе не литиевая (я видел много никелевых аккумуляторов с приклеенной на них этикеткой "Li-ion"). Можно перекомпилировать патч с установленным параметром OnlyLi950 для "тупого" задания типа АКБ.
В любом случае покупать такие батареи я не советую.
Удачи!
P.S. Просьба к модераторам вынести эту тему в топ. |
____________________________
... |
|