CX75 Planet

CX75 Planet

CX75 Planet

CX75

      


Об организации памяти в телефоне

В данной статье описываются основы, касающиеся распределения памяти в телефоне. Она может быть полезна тем, кто только начинает процесс познания внутреннего мира телефона. Для понимания ниженаписанного требуется иметь представления о шестнадцатеричной системе исчисления и обладать минимальными навыками пользования HEX редактором (например, WinHEX).

Флэш-память телефона имеет размер 32Мб (33554432 байт) или в HEX 0x02000000. Из за особенности флеш-микросхемы Intel вся память поделена на блоки (секции) размером 128кб (0х00020000). Это минимальный участок, который стирается или записывается. Поэтому чтобы изменить к примеру 1 байт нужно загрузить из телефона 128кб (одну секцию), заменить нужный байт, и потом записать обратно. Эти 128кб секции обединяются в сегменты (см. разметку в конце статьи). За каждым сегментом закреплена строго определенная функция (другими словами - чему там предписано находиться - находится всегда, а не блуждает хаотически по всей памяти телефона).

Структуру распределения памяти можно посмотреть в программе Smelter. Эта структура будет справедлива для всех телефонов одной модели и одной прошивки. Более того: она будет такой же и на телефонах с разными прошивками. Разница будет только в различных участках "пустого места".

Для этого нужно слить свой FullFlash (желательно без патчей, иначе некоторые патчи, ставящиеся в "пустое место" могут исказить истинную картину). Открыв FullFlash, жмем кнопку D и видим разметку памяти. В этой программе она условно поделена на секции по 0х00010000. Поэтому не запутайтесь. Как уже сказано выше - в телефоне минимальная "секция" имеет размер 0х00020000, соответственно размеры всех участков памяти являются кратными этому числу. Аналогично адреса начала и конца участков также кратны этому числу.

Для примера возьмем EELITE. Его размер в телефоне составляет одну секцию (в программе это условно выглядит как 2 секции по 0х00010000 - не забываем про это). Адрес начала 0х00020000. Теоретически адрес мог бы быть 0х00040000 или 0х00060000. Но ни как не 0х00030000 и тем более равным произвольному числу, например 0х00033467. Аналогично и длина этого участка. Она может быть равной только n*0х00020000, где n=1, 2, 3... Поэтому если Вы хотите слить отдельно EELITE - то нужно сливать всю секцию целиком, несмотря на то, что большая ее часть является пустой и поначалу это может вводить в заблуждение (для отображения занятого места, щелкнув правой кнопкой мыши, выберите "Показывать графику").

Аналогично EEFULL. Под него отведено 1 секция на 0х00020000 и 4 секции по 0х00008000. Да, именно по 32768 байт!. Это сделано скорее всего потому что телефон пишет в EEFULL чаще чем в остальные секции. И в этих секциях располагается только EEFULL и ничего другого. Поэтому не следует опасаться, что туда попадет не относящийся к EEFULL код (равно как и в любую другую секцию не может попасть не относящийся к ней код).

Теперь о файловой системе телефона (FFS). Файловая система разбита на три диска Data, Config, Cache из которых пользователю доступен только один (и самый большой из них - Data).

Остальные диски по умолчанию скрыты и служат для хранения разных служебных файлов. В общей карте памяти они отображаются соответственно как FFS, FFS_C и FFS_B. Не следует путать реально занимаемое место в каком-нибудь разделе и место, отведенное под этот раздел в памяти телефона (программа отображает именно последнее). Например, независимо от того - пустой ли у Вас телефон или полон файлов, число секций FFS в программе будет неизменно.

Теперь о "пустом месте". Целиком пустые секции в программе помечены как "Empty". Эти участки зарезервированны для разных целей. Например под будущий увеличившийся ленгпак или под новые функции в будущих прошивках. Обычно "пустое место" остается таковым в течение всей службы телефона, пока не установится другая прошивка. Этим и можно воспользоваться для установки патчей. Не следует путать пустое место, расположенное внутри какого-нибудь блока (например EELITE, EEFULL или FFS) и выглядящее как пустой участок при отображении графики с пустым местом которое действительно не будет использоваться. Т.е. под собственные нужды можно задействовать пустое место, расположенное только в области прошивки. Причем его также нужно использовать аккуратно: размещать свои патчи следует подальше от кода прошивки, т.к. не все "пустое" место (которое в HEX выглядит как FF) на самом деле является таковым). Иначе можно получить неприятные глюки, вроде черных точек при проигрывании видео.

Те участки на карте памяти, которые ничем не помечены - как раз и являются самой прошивкой. А точнее - область 0xA0040000..0xA13FFFFF. Ее сначала стирает, а потом перезаписывает WinSwup при прошивке (соответственно все патчи, которые ставились в эту область после прошивки уничтожаются). В первой секции размещен BootCore. И ближе к концу размещен сегмент EXIT - лог сообщений о критических ошибках.

Теперь откроем свой FullFlash в HEX редакторе. Найдя Offset начала каждого из блоков видим то же название, что отображает Smelter. За исключением ленгпака. Он всегда начинается с кода BB BB 00 00. Например, пролистав до адреса 01FC0000 можно увидеть начало первой секции EEFULL, прокрутив еще ниже, через 00020000 попадаем на следующую секцию, начало которой также помечено как EEFULL. Не забываем, что счет адресов идет в шестнадцатеричной форме. Прокрутив еще ниже, через 00020000 мы не видим нового названия EEFULL в этой секции. Это означает, что в этом телефоне всего две секции EEFULL.

Этим способом можно определить разметку памяти телефона, если она не известна. Но к большому счастью это уже определено. Всего лишь нужно создать лоадер для V_Klay при помощи PapuaUtils версии не старее 0.66b. В прежних версиях PapuaUtils содержались ошибки адресов некоторых из участков. Потом в V_Klay на закладке "Флешер" можно выбрать каждый из участков чтобы его отдельно извлечь из телефона.

Разметка памяти выглядит следующим образом (в формате "Адрес начала", "Размер сегмента" //комментарий)
fullflash: 0xA0000000, 0x02000000 //фуллфлеш содержит в себе все нижеперечичсленные сегменты
BCORE: 0xA0000000, 0x00020000 //Буткор, неизменен в процессе всей жизни телефона
EELITE: 0xA0020000, 0x0020000 //часть EEPROM
CODE1: 0xA0040000, 0x00A0000 //область прошивки (код)
LngPck: 0xA00E0000, 0x0120000 //область прошивки (ленгпак)
CODE2: 0xA0200000, 0x1200000 //область прошивки (код)
FFS: 0xA1400000, 0x0900000 //диск Data
FFS_C: 0xA1D00000, 0x0200000 //диск Config
FFS_B: 0xA1F00000, 0x0080000 //диск Cache
EMPTY: 0xA1F80000, 0x0020000 //ничем не занято, не стирается при перепрошивке
EXIT: 0xA1FA0000, 0x0020000 //лог сообщений об ошибках
EEFULL: 0xA1FC0000, 0x0040000 //часть EEPROM

!!!Обратите внимание на длину секции CODE1. Это существенный недочет. В лоадере от PapuaUtils она равна 70000. И хотя до текущего момента данные занимали менее 70000 по длине (остальное было пусто) и сливалось и записывалось все - но на будующих прошивках этого размера может не хватить. Тут даны верные числа. !!! Обратите внимание на длину секции LngPck. В лоадере PapuaUtils она равна 0x0100000, что является ошибочным. Для коротких ленгпаков (как lg3 или lg92) ничего страшного не произойдет. Но длинный ленгпак (например lg1) тем лоадером целиком слить не удасться. Поэтому тут приведены правильные цифры (сегмент CODE2 соответственно также подправлен). Разумеется, если вы будете сливать всю область прошивки сразу (например для бэкапа), то цифры не важны. Просто часть ленгпака попадет в участок CODE2, а т.к. секции идут непрерывно - то все забэкапится и зальется обратно правильно. Правильный лоадер можно взять в програмном разделе "Патчи". Следует учесть, что Смелтер показывает реально занимаемое ленгпаком место, а вышеприведенные адреса отображают место, которое отведено в прошивке под ленгпак.

Вообще - деление на секции условно. Например, при слитии EEFULL не нужно сливать отдельно две секции по 00020000, либо одну секцию 00020000 и 4 по 00008000. Можно просто слить одним файлом, размером 00040000. А можно слить только записанные данные без пустого места (главное знать по каким адресам эти данные вернуть). Это например касается программ, создающих резерв EEPROM. У одних он имеет размер 384 кбайт, а у других гораздо меньше. Ошибки нет ни в то ни в другом случае. Просто первые сохраняют секции целиком (1*128 кбайт + [1*128+4*32] кбайт), а другие сохраняют только реально присутствующие данные. Не перепутайте следующее: EEFULL - это часть EEPROM (а не как может показаться от слова FULL - "полный" EEPROM). EEPROM=EELITE+EEFULL.

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

Следует замолвить пару слов о доволно опасных патчах, имеющих отношение к распределению памяти: 1.Патч, увеличивающий размеры диска Data. Перед установкой такого патча следует обязательно сделать бэкап фуллфлеша с нормальным диском. Если вы надумаете менять прошивку в дальнейшем - то перед сменой обязательно верните этот нормальный бэкап, а уже потом прошивайте. Иначе телефон просто не запустится, т.к. его диски окажутся повреждены (либо, если не сделали бэкапа, то после прошивки потребуется пролить причитающийся ей XFS файл).
2: Патч, переносящий всю папку System на диск Config: Изначально, когда все ее подпапки пустые - то все выглядит здорово. Но если учесть что со временем там будут накапливаться различные файлы (записи адресной книги, напоминания, текстовые сообщения, почта, сохранения Ява игр и т.п) - то свободного места на диске Config может не хватить и телефон просто зависнет либо не загрузится совсем. Причем периодические сообщения о нехватке места вам также будут обеспечены.

Всего обращений к статье: 5769

Авторы статьи: D_K_ для cx75planet.ru

CX75

Ваше имя:

Ваш пароль:

::: Регистрация :::

Выслать письмо для активации повторно

На сайте/форуме:

Никого нет


Эльфы для Siemens > 
Интернет-база патчей для Siemens > 
Siemens Club - мобильные телефоны Сименс > 
Самые последние новости мира Need For Speed: Shift, Undercover, ProStreet, Carbon, MostWanted, Underground, Hot Pursuit, Porsche (www.nfsko.ru)  > 
 > 
Помоги этому сайту материально и он станет ещё лучше! Все присланные средства пойдут исключительно на развитие проекта!
SMS копилка
: Подробнее об услуге :
Наша кнопка 88х31

 

 

Наш баннер 468х60

 

Как скачивать файлы напрямую с телефона?

Заходим с телефона через мидлет Opera mini mod (не ниже 2.06 версии) на сайт в качестве зарегистриро- ванного пользователя. Выбираем файл, который необходимо скачать. Нажимаем на нужной ссылке клавишу 1. Попадаем в меню закачки файлов. Опускаемся немного вниз и находим пункт "Cookies". В меню этого пункта находим "Получить с", нажимаем, через некоторое время видим некий текст - все получилось. Сохраняем, возвращаемся в меню закачки файлов, левая софт клавиша, "Закачать" и... через некоторое время файл в телефоне!

Яндекс.Метрика

Рейтинг @Mail.ru

CX75

Siemens x75 planet © 2010 support by Pavel81

Rambler's Top100

Анализ страниц сайта

CX75

<

Весь представленый выше материал является собственостью сайта.
Копирование информации без согласия авторов запрещено.

>

Страница сгенерировалась за 0.1101 сек.