- Назад
- 1
- 2
- Вперёд
- Страница 1 из 2
Рекомендованные сообщения
Почему прошивки скаченные в инете имеют размер от других прошивок?
i308da02 имеет размер 832кБт ведь это размер некриптованного М797+, а a308da01 — 576кБт, a308db03 имеет 896кБт??
Чёт я запутался…
Какой размер некриптованной прошивки М7.3 автел и ителмы??
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
896 КБ (917 504 байт)
Спасибо.
А почему на некоторых М73 стоит размер 576/832кБт, ведь это размер Я72+/М797+???
У меня есть предположение, что может их скачивали Чиплодырем по чужой вкладке (как Я72+/М797+)??
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Спасибо.
А почему на некоторых М73 стоит размер 576/832кБт, ведь это размер Я72+/М797+???
У меня есть предположение, что может их скачивали Чиплодырем по чужой вкладке (как Я72+/М797+)??
Все нормально просто М73 существуют в двух конфигурациях, первая размер фулфлеш 917,504кб вторая 589,824кб по конфигурации близкая к Я7+
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Ты спросил:»Какой размер некриптованной прошивки М7.3 автел и ителмы» я его и сказал .
576 КБ (589 824 байт) это криптованый , он получается если комбиком фулфлеш считывать.
По идее так.
Изменено 21 сентября 2009 пользователем Slavik k
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Ты спросил:»Какой размер некриптованной прошивки М7.3 автел и ителмы» я его и сказал .
576 КБ (589 824 байт) это криптованый , он получается если комбиком фулфлеш считывать.
По идее так.
Я тоже запутался ! Что значит криптованная и не криптованная?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Я тоже запутался ! Что значит криптованная и не криптованная?
Криптованная — это скаченная комбиком (отсутствие в файле FF).
Некриптованная — это скаченная чиплодырем вместе с FF. В зависимочти от того, какой вкладкой чиплодыря скачивали, такой размер прошивки и будет.
Т.е прошивка, скаченная комбиком несёт в себе только «информационные» биты, а чиплодырем — образ памяти включающая в себя не только «информационные» биты, но и «пустые» (FF).
Дофигища мне пришлось перевернуть инфы по этому вопросу с 21-го числа…
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Криптованная — это скаченная комбиком (отсутствие в файле FF).
Некриптованная — это скаченная чиплодырем вместе с FF. В зависимочти от того, какой вкладкой чиплодыря скачивали, такой размер прошивки и будет.
Т.е прошивка, скаченная комбиком несёт в себе только «информационные» биты, а чиплодырем — образ памяти включающая в себя не только «информационные» биты, но и «пустые» (FF).
Дофигища мне пришлось перевернуть инфы по этому вопросу с 21-го числа…
Ну ты молоток реально врубился тока с 10того прочтения!
А Комбилоудер и Чиплоудер разные програмы так?
У меня Комбилоудер от смс скачал с блока М7.3 чтоб не запороть штатную прошивку I317DA02.bin размер 285 КБ (292 065 байт)
а I317DA02.eep 1,00 КБ (1 024 байт)
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
А Комбилоудер и Чиплоудер разные програмы так?
Конечно разные. Т.е. задачи у них те же, а авторы, методы скачивания, размер скачаных файлов и цены другие…
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
можно ли прошивку размером 576 КБ (i317da02 передний привод) закачать в блок с помощью ChipLoaderа или ST10Flasherа
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Конечно разные. Т.е. задачи у них те же, а авторы, методы скачивания, размер скачаных файлов и цены другие…
А когда прошиваешь разница есть какие (чем слитые) прошивки ? или шить можно и те и другие?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
А когда прошиваешь разница есть какие (чем слитые) прошивки ? или шить можно и те и другие?
Если комбилодерем без разницы размер. Если ST10Flasher или ChipLoader то должна быть некриптованная размером 576кб или 896кб
P.S. Кстате ST10Flasher с блока с программой I308хххх сливает прошивку 576кб хотя везде пишут должно быть 896ful почему я сам не знаю!?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Проблема следующего характера.
Имеются прошивки для загрузчика Combiloader (Микас 10.3) размером 576 кб. Так как у меня нет этого загрузчика а есть загрузчик ChipLoader то мне нужно эти прошивы изменить до 512 кб.
Какие есть программы для изменения данного характера? может есть что нибудь под тип программы enigma для данных прошивок?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Проблема следующего характера.
Имеются прошивки для загрузчика Combiloader (Микас 10.3) размером 576 кб. Так как у меня нет этого загрузчика а есть загрузчик ChipLoader то мне нужно эти прошивы изменить до 512 кб.
Какие есть программы для изменения данного характера? может есть что нибудь под тип программы enigma для данных прошивок?
Держи!
m103conv.rar
Изменено 19 марта 2013 пользователем Виталик 522
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Господа, подскажите, есть тюнингованная декриптованная прошивка I317DA03 (сейчас стоит 1-я серийная I317DA02.bin), но она размером 851968 байт. Можно ли ее залить ST10Flasherom (с поворотом резистора) или ее размер не нормальный (отличается конечно от 917 504 байт)? Не запорю ли я блок. Заранее благодарен.
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Господа, подскажите, есть тюнингованная декриптованная прошивка I317DA03 (сейчас стоит 1-я серийная I317DA02.bin), но она размером 851968 байт. Можно ли ее залить ST10Flasherom (с поворотом резистора) или ее размер не нормальный (отличается конечно от 917 504 байт)? Не запорю ли я блок. Заранее благодарен.
Пробуй(только считай заводскую) завалить не завалишь, но машина может не завестись если что откатищь обратно.
Изменено 19 марта 2013 пользователем Виталик 522
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Пробуй(только считай заводскую) завалить не завалишь, но машина может не завестись если что откатищь обратно.
Ок, спасибо, о результатах доложу.
Изменено 19 марта 2013 пользователем Виталик 522
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Народ! Разжуйте для танкиста! Совсем запутался!
Скачал серийную прошивку для М73 (Ителма), размер BIN-файла 210 676 байт. И что с ним дальше делать, криптовать, декриптовать или чиплодырь в исходном варианте ее зальет без осложнений?!
I303CF06.rar
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Здравствуйте, уважаемые форумчане!! Помогите, пожалуйвта, а то все ноги стоптпал и пока безрезультатно. Оч нужен конвертер для прошивок на МИКАС10.3+ для изменения размера файла прошивки. Нигде в нете найти не смог Здесь нашел — скачать не могу. Вижу, что и тема, мягко говоря, долвольно не свежая, но мож кто откликнется…
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
Прочитай правила и всё станет ясно !
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах
- Назад
- 1
- 2
- Вперёд
- Страница 1 из 2
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
размер прошивки — ChipTuner Forum
Чип-тюнинг коммерческой техники Кама3, ГАЗ от SMS-Soft
Прошивки Hyundai SIM2K-241 от Strit | Прошивки Magneti Marelli VAG от Art-Pro | Прошивки Peugeot/Citroen от Art-Pro | Прошивки Kia SIM2K-241 от Strit |
размер прошивки
-
Закрытая тема.
-
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
Доброго времени всем , вопрос по хундай акцент с ЭБУ Кефико — скачанный комбиком размер прошивки 209 кб. , после распаковки енигмой — 512 кб. Потом открыл в WinOlse, поправил , контрольки Олс увидел , сохранил , но естественно после записи авто работает неадектватно , я так понимаю потому как размер комбику не нравится , можно ли вырезать лишнее например в Hex редакторе ,и если да как понять что вырезать ?
За раннее всем благодарен … -
offline
Автобизнес
- Регистрация:
- 06.02.2006
- Сообщений:
- 4,741
- Адрес:
- Воронеж
Комбилоадер нормально работает с полным форматом. Не надо ничего обрезать или добавлять.
-
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
может ли быть проблемма в том что считал прошивку модулем Bosch 7.9.7 , а писал модулем Kefiko ? Просто двигатель на модефицированном файле вообще неадекватно работает .(опыт работы в Олсе хороший) … Пока залил что считал работает нормально ..
-
offline
Автобизнес
- Регистрация:
- 06.02.2006
- Сообщений:
- 4,741
- Адрес:
- Воронеж
Никакой разницы. Можно было и без Энигмы обойтись — закладкой С167 прочитать, модулем Кефико или новым ME797 записать.
-
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
наверное стоит попробовать записать модулем М Е 7.9.7. , и писать только калибровки , только в Хексе если смотреть на скачанную она не имеет пробелов , а правленная имеет ,только какая у комбилоадера логика выбирать область калибровок ?
-
offline
Авторемонт
- Регистрация:
- 21.02.2006
- Сообщений:
- 19,604
- Адрес:
- г.Таганрог
Я так думаю, что если поправил в «угадывателе» какие-либо карты, это не значит что это правильно и будет работать…
-
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
поправил правильно , думаю там дело в другом , отпишусь позже ..
-
Так проверьте в обычном редакторе и делайте выводы. Скорее чуть вышли за пределы графика, если точно уверены что с пересчетом КС проблем нет.
Последний раз редактировалось Иоанн; 03.08.2014 в 23:24. -
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
Хорошо научились угадывать калибровки по внешнему виду?Потому как угадать калибровки только по их внешнему виду — шарлатанство.
Последний раз редактировалось almi; 06.08.2014 в 18:47. -
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
Ну почему по внешнему … есть еще направление осей ,положение графика относительно нуля плоскости и т.д… ну и когда смотришь на карты в прошивках каждый день в течении 10 лет всё равно они имеют характерный вид , у каждого типа ЭБУ естественно свой , я не инженер … но опыт великое дело и например предыдущая прошивка сделанная мною в Олсе (без дамоса) была Фольцваген Каравелла с двигателем V 6 бензин , достаточно сложная , изменял в ней координально порядка 15 — 20 графиков , результат очень положительный , значительно ощутимый прирост динамики ,и расход топлива со слов хозяина авто в норме …
По поводу темы — решил таким образом , записал через розетку , и только калибры , всё получилось … Всем отозвавшимся спасибо …
-
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
И половина изменений была бесполезной по причине того, что, к примеру, в софте есть константа, ограничивающая ту или иную величину и как не увеличивай значения в таблице, оно не прибавится.
А константу в олсе не найти. -
Кроме этого в винолсе проблематично поменять конфигурации, комплектации и т.д. и т.п. Да и маску ошибок тоже.
Если графики были найдены по подобию, то тут могут быть расхождения между реальными и найденными. Алгоритм поиска не всегда адекватен. Специально проверял и сравнивал.
-
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
Добавлю, что у многих производителей ПО часть калибровок не используется (была унаследована предыдущих версий софтов). Разумеется, изменять их не имеет ни малейшего смысла.
-
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
Наугад — невозможно. Только при наличии карты (дамоса).
-
offline
Калибровщик
- Регистрация:
- 13.04.2008
- Сообщений:
- 1,289
- Адрес:
- Челябинск
-
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
А вот теперь попробуйте найти дамосы на Visteon, Simtec, Melco, Denso и так далее.
-
offline
Калибровщик
- Регистрация:
- 13.04.2008
- Сообщений:
- 1,289
- Адрес:
- Челябинск
Зачем мне искать? Ответ был вот на этот пост.
-
offline
Программист/реверсер
- Регистрация:
- 02.06.2002
- Сообщений:
- 17,963
- Адрес:
- Ярославль разработчик SMS-Soft
Речь о том, что Олс без наличия дамосов превращается в «угадай мелодию». А дамосов для подавляющего большинства систем нет и не предвидится.
Именно по этой причине ОЛС=«угадайка» для очень многих систем. -
offline
Калибровщик
- Регистрация:
- 13.04.2008
- Сообщений:
- 1,289
- Адрес:
- Челябинск
Олс тоже своего рода инструмент, примитивную маску там найти не проблема. Можно самому что-то сделать, в стр7 что дали тем и работай.
Последний раз редактировалось KHN09; 07.08.2014 в 20:34. -
offline
автомастер
- Регистрация:
- 05.01.2008
- Сообщений:
- 1,477
- Адрес:
- Донбасс
В ваших словах правда есть , но не сидеть же сложа руки , ваша команда как — то же находит карты константы и т.п. делая модуль к редактору . Тем более если автомобиль стоящий ( в смысле клиент адекватный и платёже способный ) можно уделить время — время это опыт …
-
Находит, разбирая на составные части тело прошивки. Как бы на молекулы. Это если по-простому. Попробуйте это сделать хотя бы при помощи IDA Pro.
-
offline
Калибровщик
- Регистрация:
- 13.04.2008
- Сообщений:
- 1,289
- Адрес:
- Челябинск
Ну ты насмешил))) (хотя бы) ты тока флудить горазд, IDA Disassembler в глаза хоть раз видел?
-
инженер-программист
- Регистрация:
- 21.06.2002
- Сообщений:
- 6,288
- Адрес:
- МО
KHN09, судя по тону высказывания вы знаете что это такое?
-
offline
Диагностика авто
- Регистрация:
- 29.12.2009
- Сообщений:
- 1,363
- Адрес:
- Орловская обл.
Чем насмешил он, видели может и многие, это не засекреченная программа.
Я вот самолеты каждый день вижу, а летать так и не научился.Изображения:
-
offline
Калибровщик
- Регистрация:
- 13.04.2008
- Сообщений:
- 1,289
- Адрес:
- Челябинск
-
Закрытая тема.
Форум РадиоКот • Просмотр темы — Большой размер прошивки после компиляции
Сообщения без ответов | Активные темы
ПРЯМО СЕЙЧАС: |
Автор | Сообщение | ||
---|---|---|---|
|
Заголовок сообщения: Большой размер прошивки после компиляции
|
||
Зарегистрирован: Ср окт 26, 2011 13:38:13 Рейтинг сообщения: 0
|
Доброго времени суток. Вот пример кода Код: #define F_CPU 10000000UL #include <stdio.h> int timer0; int SetFreq(char set){ float tik = (((1.0/((10000000.0/presc)/256.0))/255.0)*10000000.0)/10000000.0; int freq = (int)(1.0/(256.0-timer0)*tik)/2.0; //printf(«%f», tik); return 1; int main(void){ SetFreq(‘1’); while(1) Откомпилировав получаю hex файл размером 9,8Kb |
||
Вернуться наверх |
Профиль
|
||
Реклама | |
|
|
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
Ну, а вы как себе представляете как реализуются операции с плавающей точкой на 8-битном процессоре имеющим команды только для сложения, вычитания и умножения? Какая версия gcc? Какие опции компилятора? У меня получилось меньше. Думаю, что можно ещё меньше получить… |
||
Вернуться наверх | |||
Реклама | |
|
|
ibiza11 |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 21 Рейтинг сообщения: 0
|
dem66 писал(а): Откомпилировав получаю hex файл размером 9,8Kb .hex всегда больше прошивки. |
||
Вернуться наверх | |||
dem66 |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Зарегистрирован: Ср окт 26, 2011 13:38:13 Рейтинг сообщения: 0
|
ibiza11, не ну это понятно, но не на столько же. avr-gcc -v Опции компиляции Код: avr-gcc -mmcu=atmega8 -g -Os -Werror -lm -mcall-prologues -o firmware.o freq.c Пробовал также компилировать с опцией -Wall, бестолку. Kavka, возможно просто ваш компилятор посчитал некоторые строки ненужными и тупо вырезал |
||
Вернуться наверх | |||
Реклама | |
|
Выгодные LED-драйверы для решения любых задач КОМПЭЛ представляет со склада и под заказ широкий выбор LED-драйверов производства MEAN WELL, MOSO, Snappy, Inventronics, EagleRise. Линейки LED-драйверов этих компаний, выполненные по технологии Tunable White и имеющие возможность непосредственного встраивания в систему умного дома (димминг по шине KNX), перекрывают практически полный спектр применений: от простых световых указателей и декоративной подсветки до диммируемых по различным протоколам светильников внутреннего и наружного освещения. Подобрать LED-драйвер>> |
shads |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 8 Рейтинг сообщения: 0
|
|||
Вернуться наверх | |||
Реклама | |
|
|
Реклама | |
|
LIMF – источники питания High-End от MORNSUN со стандартным функционалом на DIN-рейку На склад Компэл поступили ИП MORNSUN (крепление на DIN-рейку) с выходной мощностью 240 и 480 Вт. Данные источники питания обладают 150% перегрузочной способностью, активной схемой коррекции коэффициента мощности (ККМ; PFC), наличием сухого контакта реле для контроля работоспособности (DC OK) и возможностью подстройки выходного напряжения. Источники питания выполнены в металлическом корпусе, ПП с компонентами покрыта лаком с двух сторон, что делает ее устойчивой к соляному туману и пыли. Изделия соответствуют требованиям ANSI/ISA 71.04-2013 G3 на устойчивость к коррозии, а также нормам ATEX для взрывоопасных зон. Подробнее>> |
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
ibiza11, да уж, про HEX я «промахнулся» Но размер можно ещё уменьшить. gcc version 4.3.3 (WinAVR 20100110) dem66, shads Документацию не читаем, а возмущаемся |
||
Вернуться наверх | |||
HHIMERA |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
Карма: -18 Рейтинг сообщения: 0
|
Kavka писал(а): Но размер можно ещё уменьшить. gcc version 4.3.3 (WinAVR 20100110) Подверждаю эти цифры… Ничему AVReal некоторых так и не научил… видать было сразу… «Не в коня корм!»… |
Вернуться наверх | |
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
Мне вот интересно. |
||
Вернуться наверх | |||
shads |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 8 Рейтинг сообщения: 0
|
HHIMERA писал(а): Ничему AVReal некоторых так и не научил… видать было сразу… «Не в коня корм!»… Ты хвастать только можеш… гений….. |
||
Вернуться наверх | |||
HHIMERA |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
Карма: -18 Рейтинг сообщения: 0
|
shads писал(а): че не ответил? А зачем??? Цитата: народ за быдло считаеш….. ну и считай….. «всезнающий и всемогущий»….. Народ — нет… |
Вернуться наверх | |
ploop |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 68 Рейтинг сообщения: 0
|
Срач прекращаем. Отвечаем на вопрос аргументированно, с чувством, с толком, с расстановкой… |
||
Вернуться наверх | |||
dem66 |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Зарегистрирован: Ср окт 26, 2011 13:38:13 Рейтинг сообщения: 0
|
Блин развели тут черт знает что. а по теме то откомпилировал это дело в Код: avr-gcc-4.6.2 -Wall -mmcu=atmega8 -g -Os -Werror -lm -mcall-prologues -o firmware.o freq.c И оно вместе 9,5 уже 10,2Кб |
||
Вернуться наверх | |||
HHIMERA |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
Карма: -18 Рейтинг сообщения: 0
|
dem66 писал(а): а по теме то откомпилировал это дело Это не дело… так проги не пишут… |
Вернуться наверх | |
dem66 |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Зарегистрирован: Ср окт 26, 2011 13:38:13 Рейтинг сообщения: 0
|
А как пишут а? |
||
Вернуться наверх | |||
Ser60 |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 74 Рейтинг сообщения: 0
|
Замечания по коду: 1. Зачем в формуле 2. Формулу для temp Из формулы для freq Подставляя это в выражение для temp получим Получается, что вычисления с плавающей точкой здесь не нужны вообще (?) |
||
Вернуться наверх | |||
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
dem66 писал(а): Код: avr-gcc-4.6.2 -Wall -mmcu=atmega8 -g -Os -Werror -lm -mcall-prologues -o firmware.o freq.c Не ужель никто не видит? dem66 писал(а): Kavka, возможно просто ваш компилятор посчитал некоторые строки ненужными и тупо вырезал Неа. Компилятор нормально всё делает. Точно так как ему указали! Точно в соответствии алгоритму заложенному в программу. Ser60, это уже другой аспект. Изначально надо с компиляцией разобраться. |
||
Вернуться наверх | |||
urry |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 22 Рейтинг сообщения: 0
|
Что не видит ? |
||
Вернуться наверх | |||
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
Про уместность флоата — отдельная тема. Я выше уже говорил. Код: > avr-gcc -mmcu=atmega8 -g -Os -Werror -lm -mcall-prologues -o fp_test.o test_fp.c > avr-gcc -mmcu=atmega8 -g -Os -Werror -mcall-prologues -o fp_test.o test_fp.c -lm Как говориться — найдите отличия. Если всё делать в 4й студии, то она правильно всё делает при подключении математической библиотеки. Вот ещё примерчик накидал. Код: # COMPILE # LINK avr-gcc -mmcu=atmega8 -g -Os -Werror -mcall-prologues -o test_fp.bin test_fp.o -lm test_fp1.o test_fp2.o avr-gcc -mmcu=atmega8 -g -Os -Werror -mcall-prologues -o test_fp.bin test_fp.o -lm test_fp1.o -lm test_fp2.o avr-gcc -mmcu=atmega8 -g -Os -Werror -mcall-prologues -o test_fp.bin test_fp.o -lm test_fp1.o test_fp2.o -lm |
||
Вернуться наверх | |||
urry |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 22 Рейтинг сообщения: 0
|
да ну, раздули ерунду на 100 постов. Редактировать нужно Makefile , а не командную строку, не царское это дело, в ней ковыряться. Тогда оно правильно все построит. А ручками воткнуть посредине, оно считает, наверное, что это одна из опций оптимизации и выбрасывает, не матерясь, за ненадобностью. |
||
Вернуться наверх | |||
Kavka |
Заголовок сообщения: Re: Большой размер прошивки после компиляции
|
||
Карма: 24 Рейтинг сообщения: 0
|
Согласен, если бы автор темы правил makefile, или из студии настраивал то и вопроса не было бы. А если нету makefile-а? Здравствуте грабли!? |
||
Вернуться наверх | |||
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
Содержание
- Способы извлечения и замены файлов в прошивках Android-устройств
- Что представляет собой прошивка
- Стоит ли распаковывать прошивку
- Распаковка прошивки Android в ZIP-формате
- Распаковка IMG-прошивок
- Преобразование KDZ-архива в DZ-архив для последующего создания BIN-папки и привычных архивов
- Распаковка QSB и INB-прошивок
- Как прошить устройства на базе Android
- Кастомный Android: делаем свою прошивку из стоковой, не копаясь в исходниках
- Содержание статьи
- Структура ZIP-файла с прошивкой
- Xakep #283. Змеиная пирамида
- Распаковываем system.new.dat
- Скрипт
- Ручной способ
- Структура каталогов Android
- Удаляем и добавляем приложения
- Меняем анимацию загрузки
- Изменяем звуковое оформление
- Добавляем шрифты
- Меняем системные настройки (build.prop)
- Внедряем в прошивку Google Apps
- Свободное место
- Сборка
- Подводные камни
- Установка
- Выводы
Способы извлечения и замены файлов в прошивках Android-устройств
Частые зависания системы и другие ошибки являются результатом некорректной работы программного обеспечения. Проблемные программы можно легко удалить. Но что делать с установленным софтом, который не удаляется из системы? В таких случаях устройство необходимо перепрошить на более стабильную версию или самостоятельно внести правки в ОС. В данном посте вы узнаете, как открыть прошивку Android для последующего ее изменения.
Что представляет собой прошивка
Прошивка – это операционная система, которая соединяет в единую цепь весь технический потенциал гаджета и предоставляет пользователю оптимальные эксплуатационные возможности. Данное программное обеспечение является основой всех современных многофункциональных устройств.
На просторах глобальной сети можно найти внушительное количество официальных и кастомных прошивок, открывающих дополнительные возможности.
Стоит ли распаковывать прошивку
Распаковка прошивки представляет собой непростой процесс, который требует времени и соответствующих навыков, но является весьма актуальным и полезным.
Посредством распаковки пользователь может внести корректировки в работу самых различных элементов установленного программного обеспечения, исключив тем самым возможность появления ошибок, зависаний и многих других неприятных моментов без перепрошивки и замены ПО.
Задумавшись над вопросом, нужно ли распаковывать прошивку Android, вы наверняка найдете пару дополнительных плюсов. Из распакованной прошивки можно извлечь apk-файлы или интегрировать инсталляторы прочих программ.
Распаковка прошивки Android в ZIP-формате
Любые ZIP-папки распаковываются привычным архиватором, например WinZip. При этом процесс распаковки занимает всего несколько минут, так как объем сжатых файлов не превышает 500 Мб. Скачать и установить программу можно на любой компьютер.
Для распаковки Android-прошивки нужно найти архив на ПК, кликнуть на нем правой кнопкой мыши, выбрать распаковку и указать директорию для переноса всех файлов. Решая, чем распаковать ZIP-прошивку Android или любой другой архив в данном формате, можете воспользоваться такими архиваторами, как WinRAR, 7-Zip, PeaZip или IZArc.
Распаковка IMG-прошивок
Популярным расширением архивов c инсталляционными файлами и прочими данными по прошивке является .img. Это особый подвид архивов, который не разбирается на составляющие привычными методами.
Если вы не знаете, как открыть IMG-прошивку Android на Huawei, понадобится выполнить ряд специфических действий и скачать дополнительный софт. Для работы с прошивками такого типа понадобятся утилиты EXT4 Unpacker и EXT2 Explore. После их скачивания можно приступить к процессу извлечения файлов, который проходит по такой схеме:
- Распакуйте IMG-архив прошивки в любую директорию на компьютере.
- Запустите программу EXT4 Unpacker и с ее помощью найдите файл system.img.
- Сохраните файл system.img с расширением .ext4 с помощью кнопки «Сохранить как».
- После распаковки запустите софт EXT2 Explore от имени администратора. Во вкладке «File» выберите пункт «Open Image», укажите место расположения ранее созданного system.ext4.
- В правой части окна программы EXT2 Explore нажмите на иконку жесткого диска правым кликом мышки, в выпадающем меню выберите опцию «Save». Будет предложена директория для извлечения, укажите любую удобную папку и дождитесь окончания процесса.
Так осуществляется распаковка IMG-прошивки Android с целью извлечения из нее полезных данных и инсталляторов.
Преобразование KDZ-архива в DZ-архив для последующего создания BIN-папки и привычных архивов
KDZ – формат прошивок, которые зачастую использует в своих устройствах компания LG. Распаковка данных файлов требует использования дополнительного софта, поскольку обычные архиваторы не способны обеспечить необходимый доступ к утилитам прошивки и предустановленным инсталляторам.
Если вы думаете, как самому поменять файлы в прошивке Android формата .kdz, заблаговременно скачайте программы Windows LG Firmware Extract и EXT2 Explore. Процесс распаковки выполняется за схемой:
- Запустите Windows LG Firmware Extract, укажите рабочую папку «Working Folder». Ею может оказаться любая директория на ПК, куда вы хотите произвести распаковку.
- Нажмите на кнопку «Open», в поле «KDZ / TOT File» выберите файл своей прошивки. Вы увидите все файлы, которые хранятся в KDZ-архиве.
- Нажмите на кнопку «Extract KDZ» и дождитесь, пока программа отформатирует архив в DZ-формат. Об успешном окончании процесса будет свидетельствовать надпись «Progress Done».
- Перейдите к пункту «DZ File», выберите в нем только что созданную прошивку в DZ-формате. Откроется таблица имеющихся в архиве файлов. Нужно выбрать все файлы с расширением .bin и нажать на кнопку «Extract DZ». После завершения процесса появится надпись «Progress extract DZFile Done».
- Для преобразования файлов .bin в формат .img необходимо нажать на кнопку «Merge System bin». В директории, которую вы изначально указали в качестве рабочей папки, будет создан каталог «Merge output», в котором найдете system.img.
Для открытия этого файла вами заранее была скачана программа EXT2 Explore. С ее помощью вы сможете убрать из прошивки все необходимое и достать полезные инсталляторы для кастомной прошивки.
Распаковка QSB и INB-прошивок
Прошивки с расширением .qsb и .inb являются прерогативой устройств компании Lenovo. Их распаковка не занимает большого количества времени и проводится посредством всего одной утилиты LenovoWinTools.
Данная программа имеет интуитивно понятное управление и предоставляет массу дополнительных возможностей. Помимо распаковки прошивок она позволяет осуществлять быструю обратную сборку прошивки с уже измененными файлами, способствует комфортной работе с контекстным меню, проводит сборку нескольких частей файлов в один.
Для работы с прошивкой через редактор LenovoWinTools достаточно установить русифицированную программу, зайти в пункт «Файл» и посредством имеющихся инструментов выбрать свою прошивку. Далее потребуется подождать, и тогда прямо из программы сможете оперировать файлами прошивки.
Как прошить устройства на базе Android
Найдите новую или кастомную версию операционной системы и проведите ее установку. Сделать это можно несколькими способами: с использованием ПК и без него. Принципы обновления прошивок на всех устройствах схожи, но есть некоторые нюансы, которые относятся к определенным моделям и маркам устройств.
Источник
Кастомный Android: делаем свою прошивку из стоковой, не копаясь в исходниках
Содержание статьи
Начнем с того, что тебе нужен Linux. В Windows ты сможешь только разобрать прошивку, но собрать обратно уже не получится по чисто техническим причинам. Теперь о прошивке. Обычно они распространяются в виде ZIP-архивов, прошиваемых через кастомные рекавери. Именно один из них нам и понадобится для опытов. Начинать путь ромодела я рекомендую с какой-нибудь максимально приближенной к AOSP кастомной прошивки, потому что в ней зачастую проще разобраться, чем в стоке.
Нужный ZIP можно найти на XDA Developers или 4PDA. Но имей в виду, что нужна прошивка конкретно для твоей модели аппарата, — у того же Galaxy S7 есть несколько модификаций для разных рынков, не всегда совместимых между собой.
Структура ZIP-файла с прошивкой
После загрузки распакуем архив с помощью любого архиватора. Внутри будет следующий набор файлов и папок:
- META-INF — папка с метаинформацией о прошивке (сертификат автора, манифест со списком файлов, их контрольными суммами), скриптом обновления (updater-script) и инсталлятором (update-binary), который выполняет команды скрипта по монтированию разделов, копированию файлов и другим действиям с NAND-памятью;
- boot.img — образ с ядром и RAM-диском (он прошивается в раздел boot);
- system.new.dat — это, грубо говоря, и есть сама прошивка, а точнее образ раздела system, содержащий операционную систему Android за вычетом ядра;
- system.transfer.list — содержит список команд, которые необходимо выполнить, чтобы поблочно скопировать содержимое system.new.dat в раздел system при установке прошивки;
- system.patch.dat — используется для OTA-обновлений, то есть выборочного внесения изменений в прошивку; если прошивка «полная», он имеет нулевой размер.
Содержимое ZIP-файла прошивки LineageOS для Nexus 5
Xakep #283. Змеиная пирамида
Распаковываем system.new.dat
Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.
Скрипт
Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.
- Распаковываем архив с прошивкой в любую папку.
- Качаем скрипт по ссылке и разархивируем в любую папку.
- Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
- Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
- Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
- После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
- Готово. Содержимое system в папке extract_*/output .
Скрипт для распаковки system.new.dat в Linux
Ручной способ
Распаковываем архив с прошивкой в любую папку (например, в rom ):
Скачиваем нужные нам инструменты в эту папку:
Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt :
Содержимое образа system
Структура каталогов Android
После распаковки system появится следующая каталоговая структура:
- app — предустановленные приложения со стандартными привилегиями;
- priv-app — предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
- bin — бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
- etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/ ;
- fonts — шрифты. По умолчанию содержит только фирменные шрифты Roboto;
- framework — библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk , содержащий полное описание интерфейса операционной системы, включая все графические файлы;
- lib и lib64 — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
- media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
- tts — файлы, необходимые синтезатору речи;
- usr — каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share ;
- vendor — файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
- xbin — необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
- build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
- addon.d — содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.
Ознакомившись с базовой структурой Android, начнем вносить изменения.
Удаляем и добавляем приложения
Все предустановленные программы можно найти в двух папках:
Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.
Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/ . Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.
Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk . А можно и не копировать. Тогда прошивка будет без календаря.
Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.
Меняем анимацию загрузки
Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:
- desc.txt — файл, описывающий анимацию;
- part0 — папка с файлами анимаций, которые воспроизводятся первыми;
- part1 — папка с файлами анимаций, которые воспроизводятся вторыми;
- .
- part? — крайняя папка, изображения с которой воспроизводятся в конце.
Файл desc.txt может содержать нечто вроде
Назначение этих строк интуитивно понятно: 1920 × 1080 — разрешение картинки, 60 — число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).
Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.png , 00001.png , 00002.png . Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip . Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA.
Четыре части в bootanimation.zip для LineageOS
Изменяем звуковое оформление
Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio . Внутри нее ты найдешь следующие папки:
- alarms — мелодии будильника;
- notifications — звуки уведомлений;
- ringtones — мелодии звонка;
- ui — системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.
В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:
И маленький лайфхак: удаление файлов из папки ui приведет не к сбоям и ошибкам, а к исчезновению системных звуков. Поэтому ты можешь легко отключить звук создания снимка с камеры, снятия скриншота, просто потерев содержащие эти звуки файлы (их имена интуитивно понятны).
Добавляем шрифты
Шрифты хранятся в fonts . Найти архивы с файлами шрифтов можно на 4PDA и XDA. Для установки достаточно скопировать с заменой ttf-файлы из архива в папку fonts .
Меняем системные настройки (build.prop)
В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.
Дополнительный файл для Gigaset ME и ME Pro
Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:
- ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
- hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
- debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
- ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
- ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
- ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
- ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).
Внедряем в прошивку Google Apps
Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.
Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps. Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock. ), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.
Интеграция GApps в прошивку выполняется так:
- Распаковываем ZIP-архив GApps с помощью любого архиватора.
- Переходим в папку Core.
- Видим множество архивов с расширением .tar.lz . Извлекаем с помощью lzip.
- После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app .
- Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
- Все, мы интегрировали GApps в нашу прошивку!
Структура каталогов configupdater-all.tar.lz
Свободное место
Необходимо понимать, что место для установки прошивок ограниченно. Нельзя установить прошивку, размер которой перевешивает размер раздела system устройства. Посмотреть его значение можно, используя ADB:
Инфа о разделе system
Второй вариант: поставить на устройство терминал и набрать команду
Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду
Или то же самое с помощью ADB:
Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.
При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app ( /system/priv-app ) и звуки вызова из system/media/audio и bootanimation.zip , но и:
- /system/tts/lang_pico — языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
- /system/usr/srec/config/ — офлайн-языки. Можно будет скачать потом онлайн, если понадобится.
Сборка
После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:
Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img :
1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:
Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:
Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).
Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):
Подводные камни
Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.
Установка
Для установки кастомной прошивки необходим кастомный рекавери TWRP, позволяющий устанавливать неподписанные или подписанные тестовым ключом прошивки (именно такую мы создали). В журнале мы неоднократно описывали процесс его установки, да и в ветках форума, посвященных твоему устройству, обычно есть достаточно информации для того, чтобы это сделать.
Выводы
Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.
Источник
1.Просмотр параметров разделов памяти.
Давайте пройдемся по реальному файлу, содержащему GPT-таблицу. Я взял файл gpt_main0.bin от Lenovo K910 из прошивки K910_w_SS_S_2_040_0081_131202.qsb. Он содержит главную загрузочную запись MBR и таблицу разделов GPT.
1.1.MBR.
Вот как выглядит первый сектор файла. Согласно теории, эти первые 512 байт, т.е. с адреса 0х000 по 0х1FF, занимает MBR:
Рис.1. Вид начала файла, открытого в Hex-редакторе.
Видно, что по адресу 0х1С2 расположен код раздела 0хЕЕ – код раздела GUID Partition Table.
Далее по адресам 0х1С6-0х1С9 расположено поле «Смещение», содержащее значение «01 00 00 00». Учитывая обратный порядок записи, получим смещение раздела – 0х00000001. Т.е. GPT располагается в секторе со смещением 1. А это следующий за MBR сектор, что и видно на рисунке 1, т.к. по адресу 0х200 можно уже заметить сигнатуру GPT.
1.2.Заголовок GPT
Рассмотрим hex-код файла далее:
Рис.2. Заголовок GPT
Я немного «разукрасил» заголовок, чтобы выделить его поля.
В самом верху справа красным цветом выделен «остаток» предыдущего сектора – сигнатура MBR. Далее мы имеем:
- с адреса 0х200, как и положено по теории, располагается заголовок GPT, начинающийся сигнатурой «EFI PART», выделенной бирюзовым цветом;
- по адресу 0х208 располагается поле «Версия», имеющее значение «00 00 01 00»=0х00010000 и выделенное светло-зеленым цветом;
- по адресу 0х20С – поле «Размер заголовка», имеющее значение «5С 00 00 00»=0х5С (92 байта). Оно выделено оранжевым цветом;
- по адресу 0х210 расположено поле «CRC32 заголовка», имеющее значение «1F 8EBE 09»=0x09BE8E1F и бардовый цвет;
- за ним по адресу 0х214 следует резервное поле, имеющее нулевое значение;
- по адресу 0х218 расположено поле «текущий LBA сектор», хранящее номер сектора, где размещается первичная GPT (та, что мы рассматриваем). Оно имеет значение 0х01, как и положено;
- далее (адрес 0х220) расположено поле «резервный LBA сектор», в котором должен храниться адрес размещения резервной копии заголовка. Мы видим сплошные нули. Вот тебе и теория! Но об этом мы поговорим позже;
- по адресу 0х228 расположено поле «первый разрешенный для использования LBA сектор», выделенное красным цветом. Оно равно 0х22=34. Именно с этого сектора и будет размещаться первый раздел мобильного устройства, а все место до него зарезервировано под GPT. Владеющие калькулятором или искусством устного счета могут подсчитать, что таблица GPT вместе с MBR занимает с 0 по 33 сектор включительно и имеет размер 34*512=17408 байт. Странно, но именно такова длина файла, хранящего GPT, который мы и разглядываем;
- по адресу 0х230 расположено поле «последний LBA-сектор, разрешенный для использования», который тоже почему-то «пустой»;
- по адресу 0х238 расположено поле, содержащее GUIDдиска и выделенное голубым цветом;
- по адресу 0х248 расположено поле«первый LBA сектор таблицы записей о разделах», указывающее с какого сектора начинаются записи параметров разделов. Оно имеет значение «02» и выделено красным цветом. При дальнейшем рассмотрении Вы увидите, что так оно и есть;
- 0х250 – содержит число записей о разделах (зеленый цвет), т.е. вся память К910 разбита на 0х18=24 раздела;
- 0х254 – содержит размер одной записи о разделе в байтах (сиреневый цвет). Как видим 0х80=128 байт;
- 0х258 – содержит еще одно контрольное поле – «CRC32 таблицы записей о разделах»;
- 0х25С – с этого адреса и до конца заголовка, т.е. до адреса 0х400, расположен резерв, заполненный нулями.
1.3.Таблица описания раздела памяти.
Каждый раздел имеет свою запись в таблице разделов. Одна запись занимает размер в 128 байт, который указан в поле заголовка по адресу 0х254 и имеет следующий вид:
Рис.3. Запись параметров раздела в таблице GPT.
Я опять разукрасил картинку:
- по адресу 0х400 расположено поле «GUID типа раздела»;
- далее по адресу 0х410 – «GUID раздела»;
- по адресу 0х420 – поле, содержащее номер первого сектора размещения раздела, т.е. фактически его смещение в памяти;
- по адресу 0х428 расположен номер последнего сектора раздела. Разность этих двух полей даст нам размер раздела;
- по адресу 0х430 расположено поле флагов раздела;
- по адресу 0х438 и до конца записи расположено поле, содержащее метку раздела. Каждый символ занимает два байта, т.к. поле содержит информацию в кодировке UTF-16LE.
С адреса 0х480 располагается запись о следующем разделе.
После описания всех разделов оставшееся место заполняется нулем до конца таблицы разделов, т.е. до размера
(максимальное число разделов=128)*(размер одного раздела=128)=16384 байта.
Если добавить сюда размер заголовка и размер загрузочной записи, то получим общий размер GPT 16384+512+512=17408 байт или 34 сектора (с нулевого по 33 включительно).
2.Изменение параметров разделов памяти.
Эксперименты по изменению таблицы разделов начнем с описания расчета контрольных сумм, расположенных в заголовке. А уж затем попробуем передвигать разделы, изменяя их длину, или просто удалять их.
При всех экспериментах с разделами нужно помнить, что они расположены в памяти НЕПРЕРЫВНО и БЕЗ РАЗРЫВОВ между ними, т.е. если в каком-то секторе завершается один раздел, то в следующем обязательно начинается следующий.
Чтобы не производить все эти расчеты фирма Lenovo разработала особый механизм, позволяющий все делать автоматически. Об этом и файле, содержащем перечень ВСЕХ разделов памяти, поговорим в самом конце.
2.1.Подсчет контрольных сумм заголовка.
Т.к. контрольная сумма заголовка должна «оберегать» весь заголовок, то все его поля должны быть заполнены перед расчетом. Поэтому первой рассчитывается контрольная сумма таблицы разделов.
Для расчета CRC32 всей таблицы разделов нужно взять всю таблицу с первой записи и по последнюю включительно БЕЗ ЗАГОЛОВКА. Высчитаем последний адрес таблицы разделов:
число записей (поле 0х250)*длину одной записи (поле 0х254)+(стартовый адрес таблицы=0х400)=0х18*0х80+0х400=0х1000.
Следовательно, для расчета берем содержимое по адресам с 0х400 по 0х1000. Воспользуемся услугами WinHex-редактора.
- открываем файл;
- выделяем все поля указанного диапазона;
- и выполняем команду «Инструменты->Подсчитать хеш->Выбрать метод расчета», указав на «CRC32 (32bit)»:
Рис.4. Данные для расчета CRC32 таблицы разделов.
Полученный результат вставляем в поле заголовка по адресу 0х258 (Рисунок 2).
Переходим к расчету контрольной суммы всего заголовка.
Для расчета CRC32 заголовка берутся все 92 байта заголовка, только само поле CRC32 заголовка предварительно заполняется нулями:
Рис.5. Данные для расчета CRC32 заголовка GPT
А вот и результат, сравните со значением в заголовке:
Рис.6. Результат расчета.
Рис.7. Первоначальное значение из файла по адресу 0х210.
Вся разница только в обратном способе записи…
Итак, с контрольными суммами разобрались. Можно попытаться поменять параметры самих разделов, например, размер.
2.2.Изменение размеров разделов памяти.
При выполнении таких работ нужно учитывать несколько правил:
- Все разделы расположены непрерывно и строго друг за другом.
- Общий размер памяти равен сумме размеров всех разделов.
Т.к. при изменении длины одного раздела нарушается второе правило, то для восстановления равновесия нужно уменьшить (увеличить) размеры одного или нескольких последующих разделов. Здесь может быть несколько случаев:
- нужно уменьшить (увеличить) размер предыдущего раздела для смещения его конца и, следовательно, расширения (уменьшения) нашего раздела;
- уменьшить (увеличить) размер последующего раздела, т.е. сместить его начало, что опять же приведет к увеличению (уменьшению) длины нашего.
Рассмотрим первый случай. Допустим, что необходимо расширить раздел «system» на 100 Мб за счет предыдущего раздела «cache». Это приводит к перемещению нижней границы раздела «system» в сторону начала памяти. Т.е. необходимо выполнить следующие действия:
- рассчитать новое значение смещения, т.е. положение первого сектора раздела «system» (поле «первый LBA сектор размещения раздела»):
новое значение =старое значение – 100Мб.
- рассчитать новое значение поля «последний LBA сектор размещения раздела» для раздела«cache»:
новое значение=старое значение-100Мб;
- внести изменения в запись таблицы разделов.
Посмотрим, как это выглядит в hex-редакторе на реальном файле, учитывая, что
100 Мб=104857600 (0х6400000) байт или 0х32000 секторов:
Рис.8. Параметры разделов до изменений
Размер раздела «system»:
0х41FFFF-0x120000+1=0x300000 или 1610612736 байт
Нижние границы обоих разделов выделены зеленым цветом («старт» раздела, его начало), а верхние – красным («стоп» раздела, его последний сектор).
Проведем расчеты:
- для раздела «system» нижняя граница переместится на сектор
0х120000-0х032000=0х0EE000
- для раздела «cache»имеем
0х11FFFF-0х032000=0х0EDFFF
Записываем новые значения на свои места, не забывая про обратный порядок:
Рис.9. Результаты сдвига нижней границы раздела System.
Проверим результаты работы. Длина раздела «system» стала:
0х41FFFF-0x0EE000=0x331FFF
Рассмотрим второй случай – перемещение верхней границы раздела «system», но уже за счет другого соседа раздела «userdata».Необходимо выполнить следующее:
- сместить вверх по памяти верхнюю границу («последний LBA сектор размещения раздела») «system»
новое значение =старое значение + 100Мб;
- сместить вверх нижнюю границу («первый LBA сектор размещения раздела») «userdata»
новое значение =старое значение + 100Мб.
До изменений записи о разделах выглядели так:
Рис.10. Разделы system и userdata
Проведем расчеты:
- для раздела «system» верхняя граница переместится в сектор
0х41FFFF+0х032000=0х451FFF
- для раздела «userdata» нижняя граница переместится в сектор
0х420000+0х032000=0х452000
Записываем новые значения на свои места, не забывая про обратный порядок:
Рис.11. Разделы после перемещения границы вверх.
Проверим результаты работы:
0х451FFF-0x120000+1=0x332000 или 1715470336 байт
Разность составила 104875600байт или 100Мб. Расчеты выполнены правильно!
А теперь можно попробовать и совсем удалить раздел.
2.3.Удаление раздела.
«Разрушать» или удалять всегда легче. Считать ничего не требуется. Нужно только решить какому разделу будет отдано освободившееся место.
При удалении раздела верхняя граница предыдущего раздела просто перемещается на место верхней границы удаляемого. Или наоборот, нижняя граница последующего перемещается на место нижней границы удаляемого.
У меня нет под рукой хорошего примера прошивки, у которой можно удалить что-то «лишнее», поэтому используем предыдущий пример и, чисто теоретически конечно, представим, что нужно удалить раздел «system». Вот как выглядела таблица разделов до вмешательства:
Рис.12. Вид таблицы разделов до проведения «экзекуций».
Вот параметры разделов до изменений:
- «cache» первый сектор – 0х0E0000, последний сектор – 0x11FFFF, длина –0х040000 (134217728 байт);
- «system»первый сектор – 0х120000, последний сектор – 0x41FFFF, длина – 0х300000 (1610612736 байт=1,5Гб);
- «userdata»первый сектор – 0х420000, последний сектор – 0x71FFFF, длина – 0х300000 (1610612736 байт=1,5Гб).
При удалении раздела «system» и расширении «cache» это будет означать, что значение из поля «последний LBA сектор размещения раздела» «cache» примет значение из поля «последний LBA сектор размещения раздела» «system», а запись о разделе «system» будет полностью удалена из таблицы разделов:
Рис.13. Вот как выглядит таблица разделов после удаления System и расширения Cache
Видно, что данные о разделе «system» полностью исчезли из таблицы, поле «последний LBA сектор размещения раздела» предыдущего раздела «cache» получило новое значение, а параметры последующего раздела «userdata» остались без изменений. Проверим параметры разделов:
- «cache»первый сектор – 0х0E0000, последний сектор – 0x41FFFF, длина – 0х340000 (1744830464 байт). Т.е. этот раздел УВЕЛИЧИЛСЯ на размер удаленного раздела;
- «userdata»первый сектор – 0х420000, последний сектор – 0x71FFFF, длина – 0х300000 (1610612736 байт=1,5Гб). Этот раздел ОСТАЛСЯ без изменений
Если за счет удаления «system» расширить «userdata», то тогда значение поля «первый LBA сектор размещения раздела»«userdata» примет значение из поля «первый LBA сектор размещения раздела» удаляемого «system»:
Рис.14. Вот как выглядит таблица разделов после удаления раздела System
Видно, что на этот раз изменилось только поле «первый LBA сектор размещения раздела» последующего раздела «userdata». Проверим параметры разделов:
- «cache»первый сектор – 0х0E0000, последний сектор – 0x11FFFF, длина – 0х040000 (134217728 байт);. Т.е. этот раздел ОСТАЛСЯ без изменений;
- «userdata»первый сектор – 0х120000, последний сектор – 0x71FFFF, длина – 0х600000 (3221225472 байт=3Гб). Этот раздел УВЕЛИЧИЛСЯ на размер удаленного раздела.