Пытаемся вставить в прошивку бинарные данные для их последующего использования в коде.
Нечасто возникает необходимость включить в прошивку какие-либо файлы. Однако, если это необходимо, то начинается головная боль о том, как это сделать с наименьшими усилиями и максимально красиво.
Если у вас возникла такая задача, прошу прочитать далее, где мы рассмотрим несколько вариантов для решения подобной задачи. Какие-то варианты будут на костылях, а какие-то максимально простые.
Всё описанное ниже было довольно давно, просто сейчас наткнулся на статью в одном из блогов, где автор предлагает использовать онлайн-сервис или программу для решения данной задачи.
Предыстория
Появилась задача написать программу-обновлялку для одного из устройств, которая позволяла бы перенести со старой версии прошивки на новую.
Адресное пространство старой и новой, а так же размер разделов, структура раздела с конфигом и многое другое были не совместимы, а переезд планировался с сохранением всей необходимой информацией. Но это не самое сложное.
Как Запрограммировать Микросхему ⚒️ без программаторов компьютера и обвеса
Необходимо было загрузить прощивку-мигратор, которая при старте обновляет не только статические данные, но и бутлоадер, а это уже какой-никакой, а файл, вот его и пришлось закидывать в прошивку программы-мигратора (на самом деле не только его, но это не важно).
- Исходники программы-мигратора на языке Си;
- Бинарник программы-обновлялки и ещё нескольких других программ (хорошо было бы собирать перед сборкой прошивки), которые необходимо включить в прошивку;
- GCC со всеми вытекающими.
Что делать?
Попробуем рассмотреть варианты, которыми можно выполнить нашу задачу:
- Написать скрипт, который подготовит из бинарника Сишный массив (так себе вариант);
- Написать маленький ассемблерный код, где будет включен наш бинарник (очень простой);
- Использовать Binutils и описать лишь цели в makefile (красивый вариант).
- Самый красивый вариант.
Так себе вариант
Пишем скрипт, который будет при сборке, а может и просто при запуске отдельно, генерировать сишный файл с массивом и константой. Или, чего хуже, использовать какие-то программы с графическим интерфейсом или онлайн-сервисы.
Но в итоге будет что-то вроде этого:
uint8_t updater_data[] = ; size_t updater_data_len = 0x200;
- много ручной работы, скрипт писать, копировать;
- раздувание кодовой базы;
- ненужные файлы в системе контроля версий.
Очень простой
Необходимо написать небольшой ассемблерный файл, который будет компилится вместе с остальными файлами проекта.
Файл должен содержать примерно следующие инструкции.
AREA updater_Section, DATA, READONLY EXPORT updater_data updater_data INCBIN updater.bin updater_end updater_length DCD updater_end — updater_data EXPORT updater_length END
Это ARM ассемблер для кейловского компилятора. Но суть ясна, мы инклудим наш файл и создаем переменную, которая содержит размер файла.
Учимся писать прошивки.
Казалось бы нет ничего проще, но давайте рассмотрим следующий вариант.
Красивый вариант
Не могу утверждать, что это самый красивый и правильный вариант, но это тот, который мне нравиться больше, чем остальные.
Здесь мы не пишем никакой программный код, а лишь при сборке проекта вызываем нужные утилитки с нужными параметрами.
Нужно просто создать цель в makefile
Секцию переименовывать не обязательно, просто мне нравится, что данные будут лежать отдельно.
Далее необходимо в процессе линковки просто подсунуть наш объектный файл.
Теперь разберем как это использовать:
extern const uint8_t _binary___updater_bin_start[]; extern const uint8_t _binary___updater_bin_end[]; void func1(void) < /* Например перебор байтов */ for (uint8_t* p = _binary___updater_bin_start; p < _binary___updater_bin_end; p++) < /* CODE */ >>
Самый красивый вариант
const uint8_t updater_data[] = < #embed uint8_t «updater.bin» >;
Красиво, неправда ли? Но поспешу огорчить такой вариант это лишь предложение для включения в новый стандарт языка Си.
Вместо выводов
Выбирайте вариант, который вам больше всего нравится, а если есть что-то отличное от этого пишите в комментариях.
- Библиотека для Altium Designed. Как использовать библиотеку в виде базы данных.
- Сжимаем образ WSL
CDEblog
Блог инженера-схемотехника, конструктора и немного программиста
Последние публикации
- Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api
- Что было интересного в январе.
- Сжимаем образ WSL
- Включение бинарных файлов в прошивку
- Библиотека для Altium Designed. Как использовать библиотеку в виде базы данных.
Источник: cdeblog.ru
Прошиваем январь 5.1.1
Пpoшивaeм Янвapь 5.1.1. Для этoгo нaм пoнaдoбитcя:
1 USB K-Line aдaптep (зaкaзaл чepeз интepнeт)
2 Kaбeль для пpoгpaмиpoвaния (ктo xoчeт cдeлaть кaбeль caм мoжeтe пocмoтpeть в БЖ кaк этo cдeлaть, a тaк жe кaк cдeлaть диaгнocтичecкий кaбeль)
3 Aккyмyлятop 12в
4 Koмпьютep
5 Пpoгpaммa для пpoшивки. Я выбpaл CombiLoader 2.1.8
6 Caмa пpoшивкa. Я выбpaл для нaчaлa J5D13T77 (Динaмичнaя вepcия. Mягкaя, чeткaя poвнaя paбoтa двигaтeля. Быcтpый нaбop oбopoтoв)
7 Hy и caмoe глaвнoe caм ЭБУ Янвapь 5.1.1 и жeлaниe пpoшить eгo.
Пocлe тoгo кaк выoжил зaпиcь y ceбя в БЖ мнe пoдcкaзaли yдoбнyю вeщь. Чтoб нe тacкaть aккyмyлятop мoжнo oткpыть кpышкy cиcтeмнoгo блoкa и пoдключaть питaниe 12в тaм. Cпacибo зa пoдcкaзкy пoльзoвaтeлю Damer666 Если есть ноутбук будет проще, можно прошить прямо в машине. У меня его нет поэтому прошивал дома.
Пepeд пpoшивкoй нyжнo нacтpoить COM-пopт.
B пpoгpaммe иx 4, COM1, COM2, COM3, COM4, a y мeня USB вxoды нaчинaлиcь c COM19 и чтoб пpoгpaммa yвидeлa K-line aдaптep вcтaвлeнный в COM-пopт нyжнo пepeимeнoвaть пopт в oдин из чeтыpex, я пepeимeнoвaл в COM1. Дeлaeтcя этo чepeз диcпeтчep ycтpoйcтв. Дaлee пoдключaeм кaбeль к ЭБУ: минyc нa 19 кoнтaкт, к-line нa 55, плюc нa 18,47 и чepeз тyмблep нa 27.
Зaтeм вcтaвляeм aдaптep в пopт и пoдключaeм кaбeль к aккyмyлятopy, чepeз 3 ceкyнды включaeм тyмблep пoдaвaя тoк нa 27 кoнтaкт, имитиpyя включeниe зaжигaния и пepeвoдя тeм caмым ЭБУ в peжим пpoгpaммиpoвaния и зaпycкaeм пpoгpaммy.
Haжимaeм нa вклaдкy Янвapь-5/VS-5, зaтeм вклaдкa FLASH и cнизy кнoпкy Чтeниe. Ждeм пoкa пpoгpaммa cчитaeт инфopмaцию c ЭБУ, пocлe этoгo вы yвидитe информацию o вaшeй пpoшивкe.
Дaлee нaжимaeм cвepxy Фaйл, Coxpaнить и coxpaняeм пpoшивкy тy чтo ceйчac ycтaнoвлeнa (ecли пpoшивкa вaм нyжнa).
Teпepь пpиcтyпaeм к caмoй пpoшивкe:
1 Bыключaeм тyмблep
2 Oтключaeм кaбeль oт aккyмyлятopa и зaкpывaeм пpoгpaммy
3 Пoдключaeм кaбeль к aккyмyлятopy
4 Чepeз 3 ceкyнды включaeм тyмблep и зaпycкaeм пpoгpaммy
Haжимaeм фaйл, oткpыть и выбиpaeм нyжнyю пpoшивкy.
Haжимaeм нa вклaдкy Янвapь-5/VS-5, зaтeм вклaдкa FLASH, тaм вы yвидитe информацию o вaшeй новой пpoшивкe.
Haжимaeм Зaпиcь, вылeзeт oкoшкo c пpeдyпpeждeниeм, жмeм OK
Пocлe тoгo кaк зaпиcь нoвoй пpoшивки зaкoнчeнa выключaeм тyмблep, oтключaeм кaбeль oт aккyмyлятopa, зaкpывaeм пpoгpaммy, выключaeм кoмп и дoвoльныe бeжим пpoвepять нoвyю пpoшивкy=)
Пocлe пpoшивки:
1 Heмнoгo живee paзгoняeтcя
2 Bключeниe вeнтилятopa 99, выключeниe 95. Ha cтaндapтнoй былo 105/101
3 Oтceчкa 7500. Ha cтaндapтнoй 6200
4 Oбopoты пpи движeнии нa xoлocтoм xoдy 880-980. Ha cтaндapтнoй 1000-1100. Из-зa тoгo чтo мeньшe cтaли oбopoты мaшинa инoгдa cтaлa пoдepгивaтьcя пpи движeнии, ocoбeннo нa втopoй. Ha cтaндapтнoй былo нopмaльнo, дaжe нa тpeтeй.
Hy и этo пoкa чтo вce из зaмeчeннoгo пocлe пpoшивки. Бyдy дaльшe тecтить.
Источник: www.drive2.ru
Что такое кастомная прошивка на Андроид и как ее установить
Операционная система Android позволяет пользоваться не только официальной прошивкой, но и пользовательской, которая так же называется кастомной.
Точнее, такую возможность дает не ОС, а мобильные устройства, разработанные для этой операционной системы.
Кастомные прошивки Андроид пользуются популярностью уже много лет. Обычно их предпочитают люди, разбирающиеся в процессах установки других ОС и понимающие как преимущества кастомки, так и риски.
Что такое кастомная прошивка на Андроид
Кастомная прошивка Андроид — это неофициальная операционная система, разработанная сторонними разработчиками. Она заменяет Android и предоставляет пользователю совершенно другой опыт эксплуатации.
Неофициальные операционные системы лишены всех ограничений Андроида, а также оснащены другими функциями.
Почти любая кастомка имеет больше возможностей, нежели стандартная операционная система от Google. Разрабатывают такие ОС, как правило, на ядрах Linux.
У пользовательских ОС есть и минусы. В первую очередь, это риск превратить свой аппарат с Android в кирпич, не подлежащий восстановлению.
Если вы четко следуете инструкции по установке и ставите качественную неофициальную операционную систему, то все пройдет хорошо. Но ошибку в таком процессе допустить легко, если вы не делали ничего подобного раньше.
Также недостаток заключается в том, что просто скачать и инсталлировать систему не получится. На установленную ОС необходимо поставить дополнения и приложения, дабы пользоваться устройством было комфортно.
Например, полезный софт от Гугл, такой как Play Market или YouTube. В общем, процесс не то что сложный, но требующий времени и внимания.
Я советую устанавливать кастомную операционную систему только если вы четко понимаете, почему этого хотите и как все нужно сделать. Для этого следует ознакомиться с лучшими пользовательскими операционными системами, а также вникнуть в процесс инсталляции.
6 основных кастомных прошивок
Среди массы ОС я выбрал 6 самых качественных, популярных и функциональных.
LineageOS
Раньше LineageOS называлась CyanogenMod. Это самая популярная пользовательская ОС.
Конфиденциальная, безопасная и стабильно работающая ОС, которая не вызывает у пользователей головных проблем и имеет интуитивно-понятный интерфейс. Есть интерфейс Trust, регулярные обновления и предустановленные эксклюзивные приложения.
PixelExperience
В случае с этой ОС не придется устанавливать сервисы Гугл отдельно, потому что они содержатся в кастомке. Также здесь имеются иконки, анимации, звуки и интерфейс, как в аппаратах Google Pixel. В общем, идеальный вариант для любителей Пикселей!
HavocOS
Большинство неофициальных прошивок не могут похвастаться широким функционалом по кастомизации интерфейса, поэтому HavocOS сильно выделяется среди общей массы.
У пользователя есть множество возможностей для настройки функций и интерфейса. Для тех, кто хочет собрать свою идеальную ОС, советую Havoc.
Resurrection Remix
Последняя версия данной кастомки разработана на основе десятого Андроида и мало чем отличается от официальной ОС. Разница лишь в том, что Resurrection Remix лишена ограничений гугловской прошивки.
crDroid
crDroid позволяет не просто настроить под себя интерфейс и возможности системы, но и поменять назначение кнопок, команд и жестов. Пользуется популярностью у разработчиков, так как на такой кастомке удобно тестировать почти любое ПО.
OmniROM
Еще одна кастомка, основанная на CyanogenMod. Omni работает быстрее большинства пользовательских прошивок, потому что разгружена от множества функций и почти не имеет предустановленного софта. Великолепно работает как на старых, так и на современных девайсах.
Инструкция по установке кастомной прошивки на Android
Итак, вы выбрали пользовательскую ОС и уверены, что хотите ее поставить? Тогда самое время переходить к процессу установки.
Скачивание прошивки
Все операционные системы, созданные сторонними разработчиками, доступны для бесплатной загрузки.
Прошивок для Android множество, мы привели ссылки на самые популярные и качественные из них (надо выбрать ОС именно для вашего устройства, ибо версий каждой множество):
- Linage OS (https://download.lineageos.org);
- OMNI ROM (https://dl.omnirom.org);
- PixelExperience (https://download.pixelexperience.org);
- HavocOS (https://sourceforge.net/projects/havoc-os- сторонний сайт, потому что официальный не открывается в России и некоторых странах);
- Resurrection Remix(https://resurrectionremix.com);
- crDroid(https://crdroid.net).
Лучше скачать архив с системой на компьютер, дабы потом удобнее было взаимодействовать с мобильным устройством и файлы не затерялись среди других.
Загрузка GAPPS
В кастомных операционных системах нет сервисов Google, а они важны для большинства пользователей. Чтобы на вашей пользовательской прошивке были приложения от Гугл, необходимо скачать GAPPS.
Ссылка для загрузки программного обеспечения: https://opengapps.org. Выберете ваш тип ядра, версию операционной системы (например, CyanogenMod версии Android 6), на которой основана кастомка, и вид GAPPS (советую full).
Разблокировка Bootloader
Некоторые мобильные устройства поставляются с заблокированным бутлоадером. К счастью, это относится только к аппаратам, вышедшим 3-4 год назад и позже. Если бренд вашего девайса Sony, Huawei, HTC или Nexus, то разблокировка обязательна. Если же производитель другой, то Bootloader не заблокирован.
Установить TWRP
Теперь требуется инсталлировать на мобильное устройство режим восстановления, через который можно поставить пользовательскую операционную систему.
Процесс инсталляции TWRP идентичен установке любой прошивки: необходимо скачать архив, а затем поставить его на мобильное устройство. Ссылка для загрузки TWRP: https://twrp.me/Devices(надо скачать на компьютер).
Подробнее о том, как перепрошить гаджет, можно узнать в моих предыдущих статьях: про Леново, про Самсунг, про прошивку через компьютер в целом.
Процесс установки
Перейдем к тому, как установить кастомную прошивку на Андроид. Перед этим убедитесь, что скачали подходящую операционную систему и GAPPS, а также поставили TWRP. Ну и в случае с некоторыми производителями должен быть разблокирован бутлоадер.
Установка кастомной прошивки Android:
- Переместите архивы с компьютера на мобильное устройство. Желательно на карту памяти, но если ее нет, подойдет и внутренняя память. Главное, чтобы вы помнили, в какую директорию перенесли оба архива.
- Выключите девайс.
- Перейдите в режим восстановления TWRP. Для этого надо удерживать кнопку активации и клавишу увеличения звука. Комбинация кнопок зависит от бренда аппарата, поэтому прогуглите ее заранее.
- Когда TWRP запустится, выберите пункт “Install”.
- Укажите архив с пользовательской прошивкой, и подтвердите действие.
- Когда процесс завершится, вновь перейдите в пункт “Install” и укажите путь к архиву с GAPPS. Так же подтвердите действие.
- В главном меню TWRP перейдите в раздел “Wipe” и подтвердите действие. Это сброс данных, без которого инсталлировать неофициальную прошивку не получится.
- Перезагрузите аппарат, выбрав “Reboot” в главном меню.
На этом кастомная прошивка Андроид установлена. Обычно первое включение занимает много времени, поэтому не удивляйтесь, если придется ждать 10-15 минут.
1 комментарий
Алексей :
Все эти кастомы работают не полноценно. Все попробовал. Везде существенные недостатки. Урезан софт, видеозапись
отвратительна. Ждём полноценной прошивки