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

Хацкер

Участники
  • Постов

    277
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Хацкер

  1. Ustin, тебе итак крупно повезло! А ты еще перебираешь ;-)

    Довольствуйся тем что есть ведь эти прошивки на 99,9% одинаковые. Можешь попробовать перегнать символы на свою - вся инфа в хелпах

  2. Не знаю как у обладателей Х100/Х600, а на Е630 (Е800/Е820) есть функция добавления новых слов в словарь Т9. Но корректно работает она почему-то только с английским языком. Русские же слова не заносятся. Алексей, ты не разбирался в принципе сохранения слов в Т9 и какое может быть этому объяснение?

  3. Как я понимаю регистру R7 присваивается значение регистра PC, а потом осуществляется переход по  этому адресу.
    правильно понимаешь, команда та же LDR, обрати внимание на адрес EED91770 - там непосредственно адрес 10C3151D. Так вот команда LDR - просто грузит в регистр его значение.... но со смещением кратным 4-м байтам, поймать можно перебором

    004F - обращение к тек.адрес + 4 байта

    014F - обращение к тек.адрес + 8 байт

    024F - обращение к тек.адрес + 12 байт

    и т.д. меняя первый байт пока не поймаешь :lol:

    я думаю очевидно, что и свой адрес 0x101119E68, ты должен размещать кратно 4 байтам. Попробуй в BinEdite в редакторе патче поэксперементировать, правя адрес в коде и глядя на мнемонику команды... BinEdit подскажет!

    Есть еще вариант, по идее удобнее... использовать встроенный компилятор BinEdit, он код сам рисует... но это совсем отдельная история

    Но мне нужно регистру R7 присвоить значение адреса 0x101119E68
    ты опечатался? адрес и емкость регистров 4 байта!

     

    Ustin, как я делаю. я гружу прошивку с символьной информацией, для g1 - она неполная, а вот WK - для х100 - там SYM оригинальный, и ищу аналогичный код сначала там, разбираюсь чего он собственно выполняет и по аналогии делаю для своей прошивки (е630) если на твой тел. нет никакой символьной инфы... подбирай прошивки максимально схожие, можно попробовать перегнать символы на свою... а там уже сопоставляй. Принцип - ищешь аналогичную функцию которую затрагивает патч (если есть символы - по названию) и аналогично воспроизводишь.

    вот кстати есть для твоего тела оригинальный сум http://firmware.javer.sgh.ru/?frm=X460XEEB1&t=4

  4. Garem!, парниша, ты реально халявщик по жизни!

    Лишний Гигантский Рнспект Я Думаю Тебе тоже не повредит!!
    респектов гигантских ему хватает с головой, поверь мне... и от бренчания медалей сыт не будешь! Портирование таких мощьных патчей как ЧС и ED - сравнимо с их написанием с нуля! Зачем ему делать на телефон которого у него даже нет???
    А Благодарность Не Раз Вспомниться, А Может Даже И Когда Нить Поможет...
    Вопрос ...а ты реально чем-нить помог??? ИМХО не надо здесь высказывать свое негодование. Есть личка... что в личку слабо? Есть тема обсуждения платных патчей... есть хотелка для е-серии... в конце концов... вот зайди туда и крикни: "хочу ЧС на халяву!!!"
  5. Ребят подскажите! Немогу дотянуться до глоб.переменной. Как можно эту проблему решить?
    1. Грузишь в регистр адрес переменной, сам адрес указываешь тоже в коде, чуть ниже, просто на него ссылаешься командой LDR

    1137444C: 3549 LDR R0, =0x18A992CD и

    11374524: 18A992CD DCD 0x18A992CD Данные для команды по адресу 1137444C

    2. Грузишь в регистр значение оперативки по адресу в R0. Можно взять 1 байт по адресу 18A992CD - команда - LDRB R0, [R1], можно 2 байта (полуслово) LDRH R0, [R1], а можно и 4 байта в регистр запихать - LDR R0, [R1].

    Значения регистров: в первом случае у нас получается

    R0 = 0x18A992CD

    R1 = 0x000000FF ' где FF - текущее значение оперативки

     

    во втором

    R0 = 0x18A992CD

    R1 = 0x0000AAFF ' где AAFF - взяли 2 байта: 1-й (AA) по адресу 18A992CD, а второй (FF) по следующему 18A992CE

     

    ну и со словом, то же

    R0 = 0x18A992CD

    R1 = 0xAABBCCFF ' где AABBCCFF - взяли 4 байта: 1-й (AA) по адресу 18A992CD, а второй (BB) по следующему 18A992CE и т.д.

  6. igo, Garem!, привязать к подсветке и сделать новогоднюю елку не проблема... вечная проблема занимающая 95% времени написания любого патча и не всегда заканчивающаяся успехом - это поиск нужного кода. В данном случае необходимо найти переменную и/или функцию которая бы отвечала за мигалку MFF - полюбому это как-то отслеживается... ведь вибрация и мерцание диода - отнюдь не аппаратная реализация, как утверждают некоторые. У меня тоже раньше был С100 я перепрошивал его модифицированной прошивкой от С110 и про этот патч я знаю не по наслышке. Гораздо проще привязать к входящему звонку и сделать просто мигание... не под музыку, а скажем через 0,5 сек.

    CTAPbIY, прав весна пришла и желание бесконечно сидеть у компа улетает... (по роду деятельности очень много провожу за этим проклятым ящиком) да и мысли меня стали посещать нехорошие... а не продать ли мне свой е630?

    *******************

    понимаю... весна - есть весна :lol:

    зы

    ждал два годва - ещё обожду... не к спеху :lol:

    не столько нужен результат - сколько процесс воплощения "хотелки" этой... :lol:

    редакт ;)

  7. Mako, эквиваленты определяются по использованию адресов оперативки в аналогичном коде, т.е. ищется та-же функция где используется та же переменная - соответственно ее адрес будет дугой.

    С записью все просто:

    1. Аналогично грузится в регистр адрес оперативки. Как ты уже указал.

    2. Коммандами STR, STRH, STRB записывается в указанный адрес значение другого регистра. STR- пишется т.н.слово (4 байта подряд), STRH - полуслово (2 байта), STRB - либо байт

  8. Патч Charging Light Оff

     

    Ну вот и сбылась одна из моих давних хотелок! Честно говоря, меня жутко выводило из себя, что подсветка телефона не выключалась во время зарядки. Во-первых это дополнительный расход эл.энергии что отрицательно сказывается на времени процесса зарядки, во-вторых, когда телефон зарядился – свечение подсветки его разряжает АКБ. Ну а в-третьих, лицезреть ночью, как он светится не очень то и приятно. Вот подправил всего 4 байта, а результат превзошел все мои ожидания! Теперь во время зарядки включаются цифровые часы. А когда телефон заряжается выключенным включить подсветку можно коротким нажатием на клавишу вкл./выкл. :arrow:

     

    Для портеров: в функции hen7_87LCDMainlightFullOff необходимо убрать проверку переменной s_env_DeviceStatus

    Charging_Light__ff.rar

    Charging_Light__ff.rar

  9. Млин,по-моему ты хочешь ГОСТировать установку патчей и правку пршивок  .А если отмена патча(из-за конфликта или новая версия)-будут дырки появляться опять?ИМХО это актуально для разработчиков,но они я смотрю и так согласовывают изменения

    Следующая версия и отмена патча проблем не вызовут совершенно не каких. А вот с согласовыванием ты жутко ошибаешься... большинство делает наобум... и зачастую проверять где остался кусок незадействованного места лень... это занимает уйму времени... поэтому народ шибко не заморачивается - раскидывая код в дебрях прошивки по разным углам... чтобы заранее свести к минимуму возможное наложение - результат неэффективное использование места... тут кусок... там кусок... а так была бы возможность размещать патчи последовательно друг за другом, по порядку оптимально и без ущерба для уже используемого рабочего кода, не заморачиваясь проблемами наложения.

  10. vvyura, вот это веЩь!!! хоть кто-то популярно расказал, спасибо огромное будем копаться :?: О результатах расскажу. :(

    Возник только вопрос. Сделай выкладку кода где проверяется выбраный пункт, т.е. наверно проверка глобальной переменной.

  11. dr-dimick, уж поверь мне адрес вызова обработчика клавиш один... клавишь много, а обработчик один. Чтоюы завязать разные действия на разные кл. - нужно писать патч. У меня пока в этом потребности нет... игра свеч не стоит. Lee_Forever, у меня все прекрасно пашет. У тебя АТС городская сколько цифр?

  12. Америку не открою, но все же выложу свои соображения по оптимизации кода.

     

    Если обращали внимание, размер оригинальной прошивки телефона е630 (файл .cla) составляет порядка 13,3 мб. Притом флешка под это дело-то на 16 метров! Конечно помимо прошивки еще 2 мб - EPROM, но остается еще порядка 700 кб – неиспользуемого кодом места. Так вот, монополия на эти 700 кб у нашей замечательной программы ResMan. Область «свободного» места задается в карте ресурсов (e630xe###.rxt) тэгами… Данная область используется при замене стандартных мелодий, шрифтов, языковых ресурсов, а вот картинки программой меняются поверх существующих. А теперь посмотрим, что же реально происходит. Итак, есть 2 варианта замены контент-начинки телефона: поверх исходных ресурсов, либо добавлением в конец прошивки нового ресурса и перебивкой табличных ссылок на данную область кода. Очевидно, что в первом варианте мы упираемся в размер исходного ресурса и не можем его увеличить, т.е. к примеру, ставя мелодию поверх существующей ее размер не должен превышать оригинала. Но в ResMan’e реализована другая логика – старая мелодия остается в коде прошивки, а новая добавляется в конец, перебиваются только ссылки (именно поэтому существует возможность вернуть все назад). Прошивка соответственно увеличивается в размерах на величину добавляемых ресурсов.

     

    С заменой графических ресурсов все наоборот – они замечательно встают поверх существующих один в один, т.к. размеры идентичны, про них речи вести не будем.

     

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

     

    Мне представляется, что логичнее было бы предоставить выбор пользователю менять ли ресурсы поверх – с ограничением на исходный размер или добавлять в конец. К сожалению, в ResMan’е такая возможность отсутствует. Возникает вполне обоснованный вопрос, а все ли полностью используют эти 700 кб.?

     

    При разработке патчей я не вижу смысла теснится и приносить в жертву «неиспользуемые» ресурсы (иногда они даже очень используемые, ИМХО залазить на хохлянский язык не очень-то и хорошо), когда есть место в конце прошивки. Вот, к примеру, всеми известный автор патча «Черный список», Vadiks, принимая во внимание размеры последнего, уже не стал искать «неиспользуемые» ресурсы, а разместил код в конце бина, что вполне логично. Очевидно, что с ростом количества и размеров патчей, данная тенденция будет усиливаться и поиск «свободных» неиспользуемых участков прошивки будет занимать уйму времени и отобьет всякое желание что-либо делать.

     

    Я предлагаю оставить хотя бы часть свободного места для разработчиков. Теперь об ограничениях, на которые мы натолкнемся.

     

    Те 700 кб, о которых я говорил, придется делить с ResMan’ом. Т.е. к примеру, если кто-то уже у себя поменял мелодии, то разместить патчи поверх мелодий уже не получится. Кто будет двигаться? Разработчики или пользователи? Я считаю, что приоритет должен быть у патчей, а замена контент-ресурсов должна проходить по остаточному принципу. Отсюда вытекает еще вопрос, резервировать место для кода патчей можно в начале или в конце нашего блока в 700 кб. Если для патчей будет использоваться место в конце «коридора» то проблемы совместного использования сведутся к минимуму… но это вызывает определенные неудобства в размещении кода «от конца», т.е. определяя начальный адрес тела патча от последнего - по его длине (можно конечно и от фиксированного куска, скажем, начиная с 500 кб, но это опять же не оптимально, т.к. заранее резервируется 200 кб неизвестно под что). С точки же зрения пользователя этот вариант предпочтительнее в том плане, если 700 кб ранее были использованы не полностью, то наложения не произойдет. Второй вариант – размещая код в начале нашего блока, мы сразу натолкнемся на наложение. В любом случае указанных проблем не будет, если сначала уменьшить размер свободного блока в карте ресурсов, на размер патча, а потом уже менять контент-ресурсы в ResMan’e.

     

    Порядок установки патча будет выглядеть следующим образом (вариант размещения патчей в конце «свободного» блока):

    1. В описании патча, автор указывает конечный адрес оставшегося свободного места, который пользователь правит в карте прошивки.

    2. Собственно установка патча.

     

    Следующий патч, опять потребует места и соответственно, опять правим адрес в карте. Конечно, устанавливая несколько патчей необходимо просто указать последний. Оптимальным вариантом, конечно, было бы научить ResMan определять последний из адресов свободного места. А можно и вручную. Здесь уже возникает такое понятие как последовательность патчей, т.е. каждый патч идет следом друг дружкой, логично было бы присвоить каждому порядковый номер. И уже из группы патчей, которые устанавливает пользователь, он ориентируется на самый большой и берет соответствующее ему значение адреса. Вариант, если идет доработка патча, уже после, тоже возможен… конечный адрес опять меняется, а порядковый номер соответственно увеличивается. Можно пойти еще дальше и сделать темку на форуме-табличку «патч-номер-адрес».

     

    Вот такие вот соображения…

  13. как ты вообще начал поиск всего того что относится к выводу этой картинки ? Грубо говоря, ты же не ткнул в прошивку пальцем наугад и подумал:"А начну-ка я отсюда"
    Значит признаком картинки должно быть какое-то обращение к таблице. Картинка вставляется кодом. В таблице по индексу находится адрес картинки, далее сама картинка.
    Совершенно верно. Где-то существует функция где сидит адрес начала этой таблицы и по индексу с учетом шага табличных данных она берет тебе нужное смещение. Вот тебе и подсказка откуда можно начать поиски твоей картинки. Поднимаешься вверх. Зная адрес самой картинки - находишь таблицу. Зная начальный адрес таблицы - определяешь где он используется в какой функции. А потом прослеживаешь где используется искомая функция и какие в нее передаются параметры - табличные индексы. Зная номер нужного индекса можно найти где формируется картинка. Очень сильно помогает символьная информация по прошивке. http://firmware.javer.sgh.ru/ Можно например поискать чего нить вроде SoftKey
    В прошивке X100 адреса... ресурсов лежат по каким-то несуществующим адресам, но при щелчке по ним программа находит эти адреса. В прошивке X140 при загрузке символьных файлов тоже есть такие адреса для переменных, но при щелчке по ним программа говорит:"для данной переменной нет соответствующего значения". Как я понял это адреса из памяти. Значит программа не хочет работать с памятью agere ?
    Вовсе нет... то что в х100 находится по щелчку автоматически - это первый из адресов по которому используется данная глобальная переменная - т.е. ссылка на константу-адрес. Аналогично можно поискать ссылки и из вкладки с сигнатурами - поиск адресов использования - это то же самое. Подозреваю что просто с прошивкой х140 по щелчку на сигнатуре видно не происходит поиск, или как вариант - явного указания на данный адрес переменной нет... она где-нить формируется арифметикой или берется как смещение от др. адреса.
  14. EvgenyM, давай попорядку :idea:

    Изменение: 05F0C8FB меняет на C046C046
    Это один из вариантов зануления... код С046 фактически ничего не делает, т.о. просто удалили BL.
    адрес 0002AF50: 90B5 PUSH {R4,R7,LR} начало получается...
    Да, комманда PUSH используется как правило в начале функции для сохранения значения регистров в стэк (операт. память). Получается что эта подфункция может использовать параметры передаваемые родительской функцией через оставшиеся R0-R3, R5, R6... а может что какие-то из параметров (скорее всего это регистры "постарше" - R5, R6) просто уже не нужны и они соответственно затрутся арифметикой в этой функции. Необходимо смотреть как они используются далее.
    что значит коммент слово по адресу?
    На птичьем языке программистов - это название последовательности из 4-х байт, еще есть полуслово - 2 байта, и соответственно байт. В комментах Binedit'а различия м/у словом и полусловом не делается... в полуслове - биты 16-31 приравниваются нулю. Например комманда LDR - загрузка в регистр слова (4-х байт), а LDRH - соответственно загрузка в регистр полуслова (2-х байт)
  15. xaxa, :idea: и чаго а телефон-то звонит?

    А вообще чем координальным прошивка е800(20) отличается от е630 в плане функций? Сомневаюсь что есть какие-то сильные отличия... а контент и так ResMan'oм поменять можно. Про видео вообще забудь!

  16. Вот еще русскоязычный матерьяльчик от Сименсоидов, весьма полезный к прочтению... как я понял основан на той же официальной документации в первом посте.

    Программная среда ARM

    Programmnaya_sreda_ARM.rar

    • Like 2
  17. Созрела мысль добавить в автовключение будильника когда телефон выключен ссылку на включение телефона - что будет по-мойму вполне логично. Будильник зазвонил - телефон включился.

    А вообще на базе того-же будильника можно сделать и выключение телефона например ночью... (задействовав например Сигнал 2) экономия заряда АКБ на лицо! да и потом вдруг ночью кто-нить позвонит или запоздалая СМС-ка прийдет, а так усе! просьба не беспокоить! :) Ну а уж если ночью гуляешь... (не без этого :lol: ) можно сделать какое-нить выскакивающее сообщение с запросом на выключение телефона и каким-нить слабеньким сигналом... и в случае отсутствия ответа выключать телефон. (как в автоблокировке)

  18. После долгих мучений мне все-таки удалось посадить кукушку на качельки :roll: да-да имено на качельки, теперь в заблокированном режиме можно услышать который час удержанием одной из клавиш-качелек! :shock: ... а удержание С - освободить для чего-нибудь еще :roll:

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

    Конечно, не устаю говорить большое и человеческое спасибо Slim'y. Влад, так держать!

     

    Ред. 14.03.06 Мдя... сырой он, еще... было замечено кукушка болтает когда приходит новая СМС... да и еще глюк поймал... незнаю связано это именно с этим патчем или нет... когда слайдер закрыт выход из пропущенных кнопкой "завершение звонка" сопровождается перезагрузкой

    Talker____________.rar

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