Где находится bootloader. Что такое Bootloader на Android

22.04.2019

В любом устройстве под управлением ОС Android есть загрузчик, отвечающий не только за корректный запуск системы, но и за ее обновление это Rereboot to Bootloader. Он контролирует ядро операционки, чтобы она загружалась в нормальном режиме. Производители девайсов блокируют возможность установки стороннего софта или даже обычных обновлений.

Таким образом, по умолчанию, Rereboot to Bootloader заблокирован и устройство запрограммированно лишь на загрузку системы, разрешенной компанией. Это происходит по двум основным причинам:

  • ограничение прав владельцев на изменения. Благодаря блокировке bootloader производитель может диктовать пользователям использование определенных версий ОС, пресечь попытки установки нелегального софта;
  • обеспечение безопасности. Продавец устройства может добавлять свои программы, которые возможно, содержат рекламу или вирусы. Данные махинации могут быть по ошибке приписаны компании-производителю, поэтому она заботится о своем имидже. Думаю вы поняли, что это Rereboot to Bootloader в ОС Андроид и теперь разберём разблокировку загрузчика.

Для того чтобы сделать это, можно воспользоваться универсальным методом. Извлечь аккумулятор из смартфона, затем вставить назад и зажать регулятор громкости на позиции “-” вместе с питанием. Через несколько секунд устройство перезагрузится в нужное состояние. Если в первой строчке видна надпись RELOCKED, вводится команда fastbootoemlock с помощью специальной утилиты adb, Odin или Bootloader Unlock .

Для всех известных моделей в сеть выложены специальные приложения, выполняющие функцию разблокировки Rereboot to Bootloader. В случае, если в процессе работы возникнут трудности, смотрите видео с несколькими альтернативными способами:

Не стоит забывать, что во время изменений в BIOS система откатится до заводских настроек.

Преимущества и недостатки разблокировки Rereboot to Bootloader

Пользуясь функцией Rereboot to Bootloader, следует осознавать ответственность, которая ложится на ваши плечи.


Однако загрузчик очень полезен в целом ряде случаев. Рекомендуется активировать Bootloader для таких целей:

  • прошивка любой операционной системы, способной установиться на ваше устройство;
  • установка любых приложений, патчей, дополнительных модулей и ядер;
  • обновление до новой версии Android и откат к более старой;
  • создание резервных копий текущего состояния системы;
  • возможность установить несколько параллельных систем.

Поэтому очень важно знать о значении опции Rereboot to Bootloader на Андроид и понимать что это такое.

Вконтакте

Одноклассники

Многие из вас не раз сталкивались с ситуацией, когда для получения root прав на Android планшете или смартфоне, установки новой прошивки, восстановления системы и прочих вещей, нужно было подключать его к компьютеру и выполнять ряд команд adb или fastboot, через окно командной строки (терминала).

Большинство вводят эти команды, не понимая, что они означают, просто следуя найденной в сети инструкции. И если вы хотите получить более полное представление о том, что происходит при их выполнении, то сегодня мы познакомимся с десяткой основных команд, которые должен знать каждый продвинутый пользователь Android.

Но перед тем как чем начать ознакомление с этими командами, напомню, что прежде чем ваш планшет или смартфон смог их выполнять, вы должны позаботиться, чтобы на вашем компьютере был установлен Android SDK , а на самом планшете или смартфоне, в меню его настроек была включена опция «Отладка USB ».

Как установить Android SDK, содержащий в себе программы adb и fastboot, читайте в этом материале .

Также напомню, что в Android 4.2 и выше, пункт «Отладка USB» скрыт, и как получить к нему доступ, вы можете почитать .

Для тех, кто забыл, как запустить окно командной строки в Windows напомню, что проще всего это сделать, нажав на «Пуск», после чего в окне поиска нужно будет ввести cmd и нажать клавишу «Enter».

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

1. Команда adb devices

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

Если все нормально, то после ввода команды adb devices в окне командной строки Windows или терминала Linux, вы должны увидеть строку с текстом List of devices attached, после которой будет строка, состоящяя из серийного номера вашего устройства и его состояния - offline или online:

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

2. Команда adb push

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

Вот пример копирования видеофайла superfreak.mp4 с компьютера на устройство, в папку /sdcard/Movies с помощью команды adb push superfreak.mp4 /sdcard/Movies/

Для пользователей Windows хочу напомнить, что в Android при указании пути к файлам и папкам используется прямой слэш - /, а не обратный, как вы привыкли.

3. Команда adb pull

Если команда adb push используется для передачи файлов на Android устройство, то adb pull используется для копирования файлов с устройства на компьютер. Так же как и в предыдущем случае, вы должны указать путь, откуда вы хотите взять файл на устройстве и путь, куда вы хотите этот файл поместить на компьютере. Второй путь указывать не обязательно, если вы хотите, чтобы файл попал в папку, из которой вы запускали программу adb.

Вот пример копирования файла superfreak.mp4 из папки /sdcard/Movies/ вашего планшета или смартфона на рабочий стол Windows 8 пользователя Jerry, C:\Users\Jerry\Desktop

Если вы хотите, чтобы файл попал в папку, из которой вы запускали adb, просто введите команду adb pull /sdcard/Movies/superfreak.mp4

4. Команда adb reboot

Эта команда часто используется в процессе получения root прав или установке нового программного обеспечения, когда нужно принять те изменения, которые мы сделали на нашем устройстве. После того, как вы введете команду adb reboot, ваш планшет или телефон перезагрузится.

Также эта команда важна тем, что её можно размещать внутри скриптов, что позволяет перезагружать устройство после выполнения всех необходимых операций автоматически.

5. Команды adb reboot-bootloader и adb reboot recovery

С помощью adb можно не просто перезагружать Android устройство, но и перезагружать его в загрузчик (bootloader). Этот режим нужен для того, чтобы мы могли разблокировать загрузчик, что необходимо для получения root прав и дальнейшей установки альтернативных прошивок.

Некоторые устройства можно загрузить в bootloader с помощью определенной комбинации клавиш при их включении, но зачастую команда adb reboot-bootloader - это единственный способ получить доступ к загрузчику.

Точно также, программу adb можно использовать для получения доступа к меню восстановления планшета или смартфона или рекавери (recovery). Это можно сделать с помощью команды adb reboot recovery

6. Команда fastboot devices

Если вы перегрузили свой планшет в режим загрузчика (bootloader) то он перестанет принимать команды adb. В этом режиме с устройством мы можем общаться с помощью программы fastboot.

С помощью команды fastboot devices вы можете узнать, может ли ваше устройство принимать команды от этой программы в режиме загрузчика. Так как fastboot является очень мощным инструментом, некоторые производители Android устройств не предоставляют доступа для этой программы в режиме загрузчика.

Так же, как и в случае с adb, после ввода команды fastboot devices вы должны увидеть серийный номер вашего устройства.

Зачастую причиной неработоспособности fastboot является отсутствие необходимых Windows драйверов вашего устройства.

7. Команда fastboot oem unlock

Некоторые производители (например, HTC или Asus) выпускают специальные утилиты, позволяющие разблокировать загрузчик их планшетов и смартфонов, после чего на них можно будет устанавливать альтернативные рекавери, такие как ClockworkMod или TWRP и прошивки от независимых разработчиков (кастомные прошивки).

Однако во многих случаях, разблокировать загрузчик Android устройства можно с помощью программы fastboot. Сделать это очень просто – когда ваш планшет или телефон находится в режиме bootloader (пункт 5), достаточно в окне командной строки ввести следующую команду: fastboot oem unlock.

После этого вам нужно будет следовать инструкциям, которые будут отображены на экране вашего планшета или смартфона.

Внимание! После выполнения команды fastboot oem unlock, ваше устройство будет полностью очищено от установленных вами программ и ваши персональные данные будут также удалены.

8. Команда adb shell

Команда adb shell зачастую приводит в замешательство некоторых начинающих пользователей.

Есть два пути использования этой команды. Если вы просто введете в окне командной строки текст adb shell и нажмете клавишу «Enter», то вы «попадете» в режим терминала, или командную оболочку вашего Android устройства, где вы сможете выполнять любые команды Android shell.

Ниже вы можете увидеть результат выполнения команды ls в среде Android shell

Этот режим хорошо известен пользователям Linux и Mac компьютеров. Если вы знакомы с командами оболочки bash, то проблем с работой в этом режиме у вас не будет. В противном случае я не рекомендую пользоваться режимом adb shell, до тех пор, пока вы не будете понимать, назначение всех его команд, так как в этом режиме вы имеете полный доступ к файлам на вашем устройстве и можете случайно нанести непоправимые изменения в операционной системе.

Второй способ использования adb shell - это выполнение единичной команды Android shell с помощью такой конструкции: adb shell <команда>. Например вы можете изменить права доступа к файлу с помощью команды типа «adb shell chmod 666 /data/имя файла»

9. Команда adb install

С помощью программы adb вы можете не просто копировать файлы на устройство и обратно. Эта программа также позволяет устанавливать приложения на Android устройства в виде apk файлов. Для этого существует команда adb install. Она немного похожа на команду push: вы должны указать путь, где находится файл с приложением, которое вы хотите установить. Поэтому проще всего сначала скопировать apk файл в папку с программой adb, после чего установку программы вы можете произвести с помощью команды adb install ИмяФайлаПриложения.apk

Если вам нужно обновить приложение, то в этом случае нужно использовать ключ -r и команда будет выглядеть так: adb install -r ИмяФайлаПриложения.apk.

С помощью ключа -s вы можете устанавливать приложения на карту памяти (если ваша прошивка позволяет делать это). Ключ -l позволяет заблокировать приложение при установке (установив его в папку /data/app-private). Существуют и другие ключи для более продвинутых функций, но их описание – это тема отдельной статьи.

10. Команда adb uninstall

И наконец, вы можете удалять приложения с вашего планшета или телефона. Для этого нужно использовать команду adb uninstall ИмяФайлаПриложения.apk

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

Бонус: Команда adb sideload

Эта команда очень пригодится владельцам планшетов и смартфонов Nexus – с помощью неё они смогут обновлять официальную прошивку на своих устройствах. Другими словами, если ваш смартфон или планшет не получил обновления по-воздуху, вы можете скачать новую прошивку с официального сайта, и обновить устройство «вручную».

После того, как вы скачаете файл с прошивкой на компьютер и подключите планшет или телефон к нему, вам нужно будет перезагрузить свое устройство в режим рекавери, выбрать пункт "Apply update from ADB" , а затем на компьютере в окне командной строки ввести следующую команду: adb sideload xxxxxxxx.zip, где xxxxxxxx.zip – это имя zip файла c прошивкой.

Более подробную инструкцию о том, как обновить прошивку Nexus устройств вручную вы найдете в этом материале .

Похожие материалы:

Привет, друзья. Сегодня, можно сказать, спонтанный пост случился, о чем он будет, вы уже могли догадаться из заголовка. Все дело в том, что как раз сегодня пришла посылка из США, и я стал обладателем новенького Google LG Nexus 4. И теперь у меня есть сразу два Нексуса – Samsung Galaxy Nexus и LG Nexus 4 – может быть, я даже напишу обзор сравнение, если вам интересно, но сегодня не об этом.
Да, кому интересно, а я уверен, что многим – цена вопроса 12к рублей с доставкой! Но я опять не об этом…

Да, Pure Android 4 прекрасен сам по себе – удобен, быстр и почти идеален. Обратите внимание, что я говорю именно о том андроиде, который установлен в гуглофонах Nexus, а не всех других телефонах (htc, Samsung, sony и т.д.), т.к. они серьезно переработаны и изменены, увы, не в лучшую сторону. Так что может быть лучше, чем и так почти идеальная прошивка? Улучшенная кастомная прошивка, конечно же!

Поэтому сегодня я первый раз включил телефон только для того, чтобы убедиться, что он вообще работает. Когда я убедился в этом, я его выключил и занялся «плясками с бубном». По горячим следам расскажу о том, как на Nexus 4 разблокировать Bootloader, установить recovery и прошить любую прошивку.

На самом деле все эти пляски с бубном не такие уж и пляски и даже почти не с бубном =) Я, как опытный уже юзер, чувствовал себя уверенно, не переживал и даже не делал никаких бекапов. Как оказалось, все нижеописанные процедуры полностью идентичны тем процедурам, что я проделывал год назад над Galaxy Nexus. Все будет просто, я обещаю!

Для начала надо немного подготовиться и скачать необходимые драйвера:
Качаем драйвера usb_driver.rar – пригодятся для подключения устройства в режиме bootloader к нашему PC. А так же скачиваем архив adb.rar – содержит файлы Fastboot и ADB.

Распаковываем архив Fastboot and ADB в корень диска C, должно получиться C:\adb.
Драйвера тоже распаковываем в корень диска C, получится C:\usb_driver.

Теперь в бой!

Установка драйверов и разблокировка Bootloader в LG Nexus 4

Сперва надо разблокировать Bootloader, без этого ничего не получится сделать.

Существуют различные решения и даже программы, которые позволяют сделать разблокировку, получить root и установить рекавери в один клик, но я как-то не доверяют такому подходу, ибо процедура-то тонкая. Хотя я все же попробовал сегодня воспользоваться программой NEXUS 4 TOOLKIT 1.3, но, как оказалось, скачать можно только базовую версию, а обновление доступно только после оплаты, а без обновления не доступен выбор поддержки android 4.2.2. Короче – не наш вариант!

Три простых шага и никаких понтов:


Все просто, правда?

Установка кастомного recovery на LG Nexus 4

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

В качестве recovery я рекомендую TWRP Team Win Recovery Project. Посмотреть описание и особенности можно на XDA в оф.теме для NEXUS 4 , там же всегда есть актуальная версия. На момент написания данного поста, самая новая версия это 2.4.4.0. Вот удобная прямая ссылка на скачивание. Скачали? Отлично, поехали дальше.

У нас есть файл openrecovery-twrp-2.4.4.0-mako.img. Если вы его закинете в папку c:\adb и переименуете в twrp.img так будет проще на следующем шаге.


Ну вот, bootloader разблокирован, recovery установлен. Осталось самое простое – установить новую прошивку. Кстати, root нам не нужно получать, если собираемся ставить кастомную прошивку, root там уже будет по умолчанию.

Установка кастомной прошивки на LG Nexus 4

За почти год использования моего предыдущего Samsung Galaxy Nexus я перепробовал целую кучу разных прошивок, частенько перепрошивался, проводил всякие эксперименты. И знаете, однажды я нашел идеальную прошивку, прошивку мечты – это ParanoidAndroid. Я просто не могу ничего другого кроме этой прошивки рекомендовать. Но, так или иначе – выбор за вами, процедура установки разных прошивок идентична.

Примерно вот так может выглядеть ваш Nexus 4 после установки ParanoidAndroid:

Вот видео-обзор этой же прошивки , но тем, кто сам лично ParanoidAndroid не юзал, мало что будет понятно:

Итак, с прошивкой мы определились, надо ее скачать. Оф.тема разработчиков прошивки , там же описание, ссылки и новые версии. Скачать саму прошивку можно в разделе mako на goo.im , а так же необходимо будет скачать Google Apps в соответствующем разделе на goo.im .

Прошивку и gapps скачали, теперь их надо как-то залить на телефон. Если телефон нормально виден в проводнике, то пропускаем блок текста ниже, если не получается попасть в память телефона через проводник, то читайте.

Тут небольшая загвоздочка может возникнуть, но только если вы не читаете этот пост – потому что у меня все загвоздки решаются, и я об этом обязательно пишу!

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

Не знаю почему, но Windows решила установить при подключении включенного телефона ADB драйвера (имеется в виду не fastboot, а именно запущенная система android). Может это я как-то что-то не то сделал, но факт есть факт — папки телефона в проводнике не видно. Я думал, что каких-то драйверов не хватает, долго гуглил, ничего не нашел. Решил воспользоваться суровым способом: Заходим в диспетчер устройств, видим «Android device что-то там ADB» – просто нажимаем на него правой кнопкой и выбираем Удалить. Отключаем телефон и сразу подключаем обратно – Windows должна заново определить устройство и установить на него правильные драйвера. Мне это помогло, и в проводнике появилась необходимая папка Nexus 4!

Выбираем папку Nexus 4 / Внутренняя память / Download и туда закидываем архивы, в моем случае это pa_mako-3.10-11MAR2013-131748.zip и pa_gapps-full-4.2-20130308.zip. В вашем случае это будут уже более новые версии, в маркировках разобраться совсем не трудно.

Когда все архивы закачаны, отключаем телефон от компьютера и выключаем. Нам необходимо снова попасть в recovery mode, для этого зажимаем Volume Down + Power пока не включится fastboot, где кнопками громкости выбираем Recovery mode и жмем Power.

Если вдруг случилось так, что вы увидели не главный экран TWRP (его опознать очень просто, сомнений в этом не будет точно), а увидели лежащего на спине андроида с красным треугольником, то есть выход, а как без него!

Для этого держим зажатой кнопку Power пока телефон не выключится. Опять загружаемся в fastboot, подключаем телефон по USB и проделываем заново сценарий по установке recovery. Когда рекавери установлен, не перезагружаемся, а кнопками громкости находим пункт Recovery mode и выбираем его кнопкой питания. Теперь-то точно запустится TWRP, а значит следуем инструкции ниже.

Увидим главный экран TWRP , жмем на верхнюю правую кнопку Wipe, а потом Factory Reset – это удалит все данные на телефоне!

После полного сброса, необходимо вернуться на предыдущий экран и нажать на верхнюю левую кнопку Install. На открывшемся экране из списка папок выбираем Download, а затем нажимаем сначала на файл прошивки pa_mako, потом Add More Zips и сразу выбираем файл pa_gapps и наконец делаем Swipe to Confirm Flash. Сейчас прошьются сразу и прошивка и приложения Google Apps, около минуты ожидания и мы должны увидеть надпись Successful. Очень важно подчистить все кеши, для этого выбираем кнопку Wipe cache/dalvik. Все готово – нажимаем Reboot System.

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

Собственно это и все! Успехов вам друзья. Если у вас появились какие-то вопросы или предложения по поводу процесса прошивки или по поводу ParanoidAndroid – пожалуйста, пишите в комментариях.

На заметку: О том, как получить доступ в меню разработчика на любой прошивке.

Открываем настройки, выбираем пункт «О телефоне» в самом низу, прокручиваем экран до пункта «Номер Сборки», там будет написано JDQ39, что соответствует версии android 4.2.2, у вас может быть написано и что-то другое, это не важно. Жамкаем на эту строку 7 раз подряд. Как итог – должно появиться сообщение «Вы стали разработчиком!» Вот оказывается как легко можно стать разработчиком под androind =))) Возвращаемся обратно в меню настроек, видим новый пункт «Для разработчиков».

UPD: Если вдруг телефон превратился в «кирпич» — что делать?

Мало ли что бывает… Вот как сегодня, например, коллега купил себе такой же Nexus 4 и отдал его мне, чтобы я установил кастомную прошивку. Да нет проблем – сказал я и пошел следовать своей же инструкции, написанной выше. Случилось странное – все данные (zip файл образа прошивки, например), которые я залил на внутренний накопитель для последующей прошивки после сброса, они удалились, самоуничтожились по какой-то неизвестной причине.

Короче, телефон превратился в кирпич, т.е. не включается, а делать что-то ведь надо. Посему проще всего накатить на телефон Factory Image, т.е. заводской образ, чтобы телефон был похож на то, что вы видели, впервые открывая упаковку. И вот инструкция:

  1. Предполагается, что драйвера у вас уже установлены и телефон подключается к компьютеру, когда он в режиме fastboot. А так же загрузчик разблокирован. Короче, полностью проделаны все шаги под заголовком «Установка драйверов и разблокировка».
  2. Теперь скачиваем официальный образ телефона отсюда https://developers.google.com/android/nexus/images#occam На данный момент актуальная версия это 4.3 (JWR66V), жмем Link напротив и скачиваем.
  3. У нас скачался архив occam-jwr66v-factory-08d2b697.tgz, внутри него еще один архив occam-jwr66v-factory-08d2b697.tar, а внутри несколько файлов и еще один архив image-occam-jwr66v.zip – он-то нам и нужен, берем и переносим image-occam-jwr66v.zip в папку C:\adb
  4. Открываем командную строку и пишем:
    cd c:\adb жмем Enter;
    fastboot erase boot жмем Enter;
    fastboot erase cache жмем Enter;
    fastboot erase system жмем Enter;
    fastboot erase userdata жмем Enter;
    fastboot reboot-bootloader жмем Enter;
    fastboot -w update image-occam-jwr66v.zip жмем Enter и ждем.
    После последней операции телефон должен сам перезагрузиться и включиться.
  5. Теперь ваш телефон как новый:) А вы можете повторить то, что не получилось. А именно залить zip-архивы в память телефона и попробовать их прошить заново. Кстати, мы recovery не трогали в процессе восстановления, так что TWRP у вас остался, а значит выключаем телефон, жмем Volume Down + Power, выбираем recovery и вперед!

Ну вот, теперь уж точно все!

До связи друзья. И извините, что перестал часто писать про SEO, обещаю исправиться в ближайшее же время.

С уважением, Александр Алаев

Приветствую всех на нашем сайте и сегодня мы после небольшого перерыва вернемся к теме микроконтроллеров. А если быть совсем точным, то мы начинаем обсуждать одну очень интересную и важную тему, а именно использование bootloader’а (загрузчика) при программировании контроллеров. Сегодня мы разберем теоретическую часть – зачем нужен, как он работает и что это вообще такое. Следующая статья будет посвящена целиком и полностью практике. Забегая вперед скажу, что мы напишем свой для любимых микроконтроллеров STM32 😉

Итак, простыми словами, – это специальная программа, которая располагается в памяти микроконтроллера и может самостоятельно перепрограммировать его. Давайте для лучшего понимания процесса посмотрим как вообще выполняется программа, прошитая в микроконтроллер, и где она располагается.

Как вы помните из статьи, посвященной Flash-памяти микроконтроллеров STM32 , основная пользовательская программа начинается с первой страницы памяти, а точнее с адреса 0х08000000 . То есть при подаче питания контроллер сразу же убегает по этому адресу)

При использовании загрузчика все выглядит несколько иначе. Основная программа записывается уже по другим адресам и располагается начиная, например, с адреса 0х0800A000 . А область памяти (0х08000000 0х0800А000 ) целиком и полностью отдается bootloader’у . В итоге в flash-памяти контроллера у нас как бы находятся две полноценные программы. При включении устройства управление получает (поскольку он находится в области, начинающейся со “стартового” адреса 0х08000000 ), а при дальнейшей работе , выполнив все свои задачи передает управление нашей основной программе, которая располагается по адресу 0х0800А000 (этот адрес мы взяли для примера). Вот небольшая схемка для демонстрации работы загрузчика:

Вроде бы понятно как устроено, но возникает вопрос – зачем все это надо?

Давайте разбираться…

Первостепенной задачей bootloader’а является программирование микроконтроллера. Он не просто выполняет какие-то действия, а затем передает управление основной программе (переходит на адрес, который соответствует началу основной программы), он, в первую очередь, самостоятельно записывает эту основную программу в flash-память по нужным адресам.

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

Небольшое отступление от основной темы… Поясню, что я тут имею ввиду под “файлом программы”.

Когда мы создаем проект (Keil, IAR – без разницы), то на выходе (после сборки проекта) мы получаем скомпилированный файл для прошивки в микроконтроллер. Чаще всего мы использовали .hex файл программы. Так вот именно этот файл нам и нужен в данном случае. Но именно hex-файл не совсем подходит для наших целей, поскольку помимо кода нашей программы он несет в себе дополнительную служебную информацию. Чтобы ее не обрабатывать и не вытаскивать из hex-файла нужный нам код, который bootloader должен записать во flash, мы в настройках компилятора во вкладке Output попросим его генерировать нам вместо hex-файла bin-файл . Бинарник, в отличие от hex , содержит в себе только последовательный код программы и ничего больше. То есть bootloader’у остается только читать байты из bin-файла и записывать их во flash-память. То есть в нашем примере задачей загрузчика является чтение байт из файла на карте памяти и запись их по адресам, начиная с 0х0800A000 . Вот псевдокод для наглядности:

Конечно, это сильно упрощенная версия загрузчика 😉 Тут мы в вечном цикле пытаемся открыть файл с программой, как только это нам удается (пользователь записал на карту долгожданный файл) программирует flash-память и перескакивает на адрес записанной им же программы. После этого контроллер начинает выполнять пользовательскую программу. Еще раз повторюсь, это всего лишь псевдокод для примера, нормальный, работающий мы обязательно напишем в следующей статье)

Все это, конечно, очень интересно, но по-прежнему, непонятно, зачем нужны все эти сложности….

С этим на самом деле все просто – вот, например, первая ситуация – есть огромное количество устройств, на заводе работники прошили в каждый контроллер (например, при помощи ST-Link) на каждой плате , который при подключении к плате флэшки (в заранее предусмотренный разъем) ищет на ней файл прошивки и выполняет программирование. Основную программу, конечно же, тоже можно прошить вместе с bootloader’ом через ST-Link. Но тонкость тут в том, что проект bootloader’а остается всегда неизменным и перепрошивать его не надо, а вот версия основной программы может обновляться кучу раз в процессе тестирования устройств. И тут уже гораздо проще один раз подключить ST-Link и прошить загрузчик, а впоследствии просто скидывать новую версию основной программы на флэшку и втыкать ее в готовое устройство, где перепрошивкой займется , чем по сто раз бегать от одной платы к другой, втыкать ST-Link, при этом перенося с собой ноутбук с ST-Link Utility… Как видите, польза загрузчика очевидна 😉

Вторая ситуация еще лучше это демонстрирует. Устройство уже выпущено и куча экземпляров распродана пользователям. Как бы хороша не была финальная версия программы никто не застрахован от неожиданного появления ошибок в процессе эксплуатации. И тут уже человек, купивший устройство, точно не сможет разобрать его и подпаяться, чтобы выполнить перепрошивку через программатор. То есть программу обновить просто нереально. Совсем другое дело, если изготовители предусмотрели встроенный bootloader. Пользователь может без проблем скинуть на карту памяти или на флэшку скачанный бинарник и подключить карту/флэшку к устройству. Изготовителю остается только выкладывать новые версии прошивок на своем сайте =) В этом на самом деле кроется куча возможностей – изготовитель устройств может спокойно выпустить девайс на рынок с базовой прошивкой, которая реализует все нужные функции, но не содержит всяких приятных графических вещей или возможности подключения к ПК (зависит от того, что это за устройство). Производителю не нужно ломать голову над тем, чтобы выпустить с первого раза идеальную прошивку, в которой будет реализовано абсолютно все, что только можно, ведь он знает что встроенный без проблем поможет пользователю в будущем обновить программу.

В общем, о пользе и применениях загрузчика можно говорить очень и очень долго…;) Помимо упомянутых возможностей обновления прошивки при помощи флэшки или карты памяти, может использовать какой-нибудь из интерфейсов передачи данных, например SPI, I2C или USART.

В общем-то, вроде бы мы разобрались с теоретической частью, посвященной использованию bootloader’а , но давайте еще один момент обсудим в этой статье – а именно аппаратный загрузчик микроконтроллеров STM32.

У STM32 уже есть , который инженеры ST поместили в специально отведенную область памяти микроконтроллера (System Memory ). Удалить его оттуда нельзя, да и незачем =) Для того, чтобы ввести контроллер в режим загрузчика необходимо подать определенные сигналы на ножки BOOT0 и BOOT1. После этого микроконтроллер готов принимать по USART новую прошивку. Для этого необходимо подключить плату к ПК, скачать специальную софтинку от ST – Flash Loader Demonstrator и загрузить в нее свой файл прошивки.

Я, честно говоря, аппаратным загрузчиком предпочитаю не пользоваться по нескольким причинам. Во-первых, прошивка никак не шифруется, что для коммерческих устройств зачастую недопустимо. Если я использую свой собственный , то я могу сделать с bin-файлом все, что угодно, например, поменять определенные байты местами. Если такой файл попадет в руки конкурентов, то это ничего не даст, поскольку только мой знает как расшифровать бинарник. При использовании аппаратного botloader’а такое невозможно – Flash Loader Demonstrator принимает bin-файл в исходном виде, то есть все байты в нем не зашифрованы. Во-вторых, пользователю будет необходимо подключать свою плату к ПК и скачивать дополнительный софт для перепрошивки устройства, и это не очень хорошо. Чем проще устройство в использовании, тем лучше 😉 Но есть и плюсы аппаратного bootloader’а – он не занимает flash-память. При использовании своего загрузчика нужно иметь ввиду, что и загрузчик и основная программа должны поместиться в flash-памяти. С аппаратным bootloader’ом такой проблемы нет – он расположен в специальной области памяти, использовать которую программист не может.

Давайте на этом на сегодня и закончим, не пропустите статью, посвященную практической реализации загрузчика!

– это, по сути, тот же компьютер, который и работает по похожим принципам. При включении у него также сначала стартует специальная программа, подобная компьютерному BIOS-у и происходит опрос имеющихся устройств. Лишь после этого запускается собственно операционная система, всю красоту которой мы видим на экране. На компьютере мы можем при старте компьютера нажать клавишу Delete или F2 и попасть в настройки BIOS , а уж там при желании можно много чего сделать. Но возможно ли это на смартфоне? Да, на большинстве устройств можно зайти в эти настройки до старта операционной системы, и сделать это очень просто.

Использование функции Reboot to Bootloader на устройствах Android.

Что такое Reboot to Bootloader на устройстве с Android

В переводе с английского «bootloader» означает «загрузчик». Эта важнейшая часть программного обеспечения любого смартфона или планшета запускает ядро операционной системы и другие важные программы. Этот загрузчик срабатывает сразу после того, как вы включаете свой телефон, и он прошел этап тестирования. Работа его не видна, но очень важна. Слово «reboot» означает «перезагрузка». Что такое «reboot to bootloader» для Android в таком случае? Это значит промежуточный этап между стартом устройства и запуском загрузчика. Именно в этой точке вы находитесь, когда заходите в BIOS компьютера – он уже прошёл этап тестирования и вполне работает, но операционная система еще не запускалась. В смартфоне или планшете на базе Android тоже есть возможность войти в меню Reboot to Bootloader – эта функция так и называется. Для этого нужно выключить устройство, а затем включить его, удерживая одновременно кнопки включения и уменьшения громкости. На устройствах Samsung вместо громкости можно удерживать кнопку Home. На некоторых аппаратах эта функция заблокирована и войти в меню не получится. Используя возможности этой функции, вы действуете на свой страх и риск. Так можно безвозвратно испортить своё устройство!

Чем может быть полезна функция Reboot to Bootloader

После запуска этой функции вы увидите меню, которое на разных устройствах может отличаться. Все надписи в нём на английском языке. Управление осуществляется кнопками регулировки громкости – для перемещения по пунктам вверх и вниз, кнопкой Home для выбора пункта и боковыми кнопками, если около них есть варианты выбора. В меню обычно есть пункты, где можно посмотреть детальную информацию по имеющимся устройствам, протестировать их работу или работу всей системы. Также здесь можно разблокировать загрузчик, исправить программные ошибки, и даже загрузить другую прошивку. Обычно, чтобы получить Root-права , устанавливают какую-нибудь стороннюю программу, но она не гарантирует результата. Получить эти права можно, просто разблокировав загрузчик. Также появляется возможность отладить приложения и деинсталлировать даже неудаляемые обычными средствами – под ними могут скрываться некоторые вирусы. Можно очистить кэш – скопление множества «мусорных» файлов, которые постоянно накапливаются при работе системы. Иногда это помогает, когда устройство работает со сбоями и часто «глючит». Наконец, в этом меню есть возможность откатить устройство к заводским настройкам и вернуть ему былую стабильность и работоспособность.

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

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

Всё это означает, что использовать функцию Reboot to Bootloader может только лишь человек, обладающий нужными навыками и знаниями, а не обычный пользователь.