Файл вторичного загрузчика sbl не найден

Обновлено: 06.07.2024

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

avatar.jpg (88.29 KB, Downloads: 69)

2020-02-27 07:17:17 Upload

1. Что это? - Программатор, Образ или Программа?

На самом деле, по моими изучениями, это не программа, а программатор (для накопителей eMMC) и образ (для накопителей UFS)

• Накопители eMMC

Для данных накопителей, Fastboot, или загрузчик (объясняю так, чтоб вы поняли) является программатором, под названием appsboot.mbn, а на самом деле, этот Fastboot, называется ABOOT, или ABL, или Android Bootloader, который адаптируется, в зависимости от того, какие команды получает от PBL=Основной загрузчик (О нём попозже), то есть, если мы выполняем команду входа в Fastboot, тогда, Основной загрузчик, отправляет команду в форме кодовых блоков, к Вторичным загрузчикам (SBL) в зависимости от производителя, может быть или один, или два, или три, или четыре вторичных загрузчика, которые отправляют дальше команду к ABL. Но, ирония судьбы, в том что эти Вторичные Загрузчики, запакованы в один программатор, под названием sbl.mbn. На Xiaomi, их два в каждой прошивке, в одном программаторе, под названием sbl2.mbn Далее, ABL, принимает команду, в кодовые блоки и заходит в Fastboot.

Но, если мы выполняем Запуск телефона, тогда, получается очень интересная схема:
PBL, всегда стоит на готове, для выполнения команд, даже если телефон выключен. При нажатии кнопки питания, выполняется команда запуска, тоже в кодовые блоки. При этом, PBL дает команду запуска, далее, команду принимает программатор SBL, который разделяется по двум загрузчикам: один для подтверждения команд, второй, для выполнения и отправки команд дальше, потом, команду, принимает ABOOT, или ABL, затем ABL принимает команду, считает её, подтверждает её и отправляет к ядру Kernel, который проверяет, подтверждает и запускает распаковку RAM диска, после чего, RAM диск, выполняет инициализацию раздела DATA, который, в свою очередь, выполняет запуск Android.

• Накопители UFS

Для данных накопителей, чуть по разному, так как ABL, является образом, а вместо SBL (Вторичный загрузчик) здесь роль передачи команд в кодовые блоки, является Образ XBL, или, он называется External Bootloader или по-русски, Внешний Загрузчик. И так, для входа в Fastboot, изначально, PBL, дает команду для входа в Fastboot, к образу XBL, XBL - это один загрузчик, который, проверяет, выполняет и передает команду в форме кодовых блоков к образу ABL, который выполняет вход в Fastboot.

Для обычного запуска смартфона, PBL, даёт команду образу XBL, который, проверяет, выполняет и передает команду запуска к образу ABL, который, проверяет, выполняет и передает команду запуска, ядром Kernel, который, выполняет запуск образа DTBO, или Data Bootloader (загрузчик образа User Data/Раздел DATA), который, выполняет распаковку RAM Диск, далее, RAM диск, выполняет команду инициализации раздела Data, далее, производится запуск Android.

2. Почему производитель блокирует загрузчик

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

3. Как проходит разблокировка загрузчика на Xiaomi

Вы начали разблокировку загрузчика, через утилиту Mi Unlock. Но вам интересно, что же происходит за кулисами этого процесса ? Давайте изучаем !

Конечно, изначально, Вы должны входить под Вашем Именем в ваш Mi Аккаунт, как на телефоне, так и в утилите Mi Unlock. Потом, вводите смартфон в Fastboot и подключайте его к ПК, далее, вы кликните по кнопке Unlock и ждете, но за кулисами, происходит, данный процесс:

Изначально, проверяется какое у вас устройство, выполняются команды:

fastboot getvar product
fastboot getvar soc-id
fastboot getvar soc_id
fastboot getvar board_version

После чего проверяется, статус загрузчика (Разлочен/блокирован) выполняется одну из команд:

fastboot oem LKS или
fastboot oem device-info

fastboot oem unlock, или команды:

fastboot flashing unlock
fastboot flashing unlock critical

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

Далее, утилита Mi Unlock, получает результаты от устройства и отправляет их не серверах Xiaomi. После чего, перезапускается устройство, выполняется команда:

4. Сколько типов загрузчика есть в прошивке Android. И за чео они отвечают.

Их несколько, давайте я вам их представляю:

•PBL=Primary Bootloader(Основной Загрузчик) Он отвечает за всю прошивку. В прошивке он в форме образа, под названием boot.img, что на накопители eMMC, что на накопители UFS.

•SBL=Secondary Bootloader (вторичный загрузчик) он отвечает за проверку и передачи команд от PBL. Их могут от одного, до четырех загрузчиков, которые запакованы в один программатор, под названием sbl.mbn (на Xiaomi два вторичных загрузчиков: один для проверки и выполнения команд, второй, для передачи команд к ABOOT. Данный программатор, работает только с накопителями eMMC.

•XBL= External Bootloader (Внешний Загрузчик) здесь, чуть по другому, он один проверяет, выполняет и передает команду к ABL. XBL, является образом, под названием xbl.img. данный образ, работает, только с накопителями UFS.

•ABL=ABOOT=Android Bootloader/Fastboot (Загрузчик Android) он отвечает, за запуска рекавери, за запуска системы (через ядро Kernel) за прошивки смартфона. Для накопители eMMC, ок является программатором, под названием appsboot.mbn, а для накопителей UFS, является образом под названием abl.img

•DTBO=Data Bootloader (Загрузчик раздела/образа DATA/userdata.img) он отвечает за запуска раздела/образа данных смартфона, для того, чтоб дальше запустить систему Android. Он является образом под названием dtbo.img.

P.S. Данная тема, является продолжением этой темы

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

Спасибо за просмотр и До Встречи в Mi Community .

+ Сервисная процедура "Чтение коэффициентов коррекции топливных форсунок", "Изменение коэффициентов коррекции топливных форсунок" для:

Mazda BT-50 2.5 WL-CD/3.0 WE-CD 2007 МГ
Ford Ranger/Everest/Endeavour 2.5 WL-CD/3.0 WE-CD 2007 МГ

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

+ Сервисная функция "Сервисный спуск ABS" для автомобилей с ESP:

Данная функция была тщательно проверена только на моделях Fiesta Mk7 и Focus Mk3. На Fiesta Mk7 пользователь, который менял тормозную жидкость, жаловался, что жидкость не проходила в насос до тех пор, пока он не нажал педаль тормоза (хотя по инструкции нельзя трогать педаль во время процедуры). Мы не знаем, относится ли данная проблема только к этому автомобилю, или есть какая-то специфика модели. На Focus Mk3 процедура была выполнена без проблем. Для других моделей также необходимо соблюдать осторожность при выполнении данной процедуры.

+ Сервисные процедуры "Статическая регенерация сажевого фильтра (DPF)", "Cброс данных самообучения DPF", "Сброс данных самообучения датчика дифференциального давления" для:

Mondeo Mk4 2.2 TDCi (Евро 5) 2011 МГ
Galaxy/S-Max 2.2 TDCi (Евро 5) 2010 МГ
Focus/C-Max Mk3 2.0 TDCi 2011 МГ

Данная процедура была проверена на Mondeo Mk4, и проверка показала, что на данном авто процедура не стартует, код ошибки "некорректные начальные условия". Процедура была тщательно проверена и никаких ошибок не найдено. Т.е. процедура реализована правильно. Требуется проверка на других автомобилях той же модели с целью сбора статистики. FORScan Site Admin Posts: 2798 Joined: Fri Jun 13, 2014 2:21 am

Post by FORScan » Wed Oct 08, 2014 3:02 am

Выдана версия FORScan 2.1.21 beta со срочными исправлениями ошибок идентификации и профиля испанского языка. FORScan Site Admin Posts: 2798 Joined: Fri Jun 13, 2014 2:21 am

Замечания к версии FORScan v2.1.22

Post by FORScan » Tue Oct 28, 2014 5:34 am

Данная выдача была форсирована по просьбе пользователей адаптера CanTieCar. Разработчик адаптера реализовал специальный режим FORScan, который позволяет работать с MS-CAN. Мы реализовали поддержку этого режима. Протестировано на прошивке CANtieCAR3_RC_BW03000650_FW03001618.rfw.
- неправильная инициализация протокола CAN, которая могла приводить к проблемам подключения на некоторых моделях Мазда Данное исправление может помочь пользователям Мазда с китайским ELM327 Bluetooth адаптером, которые испытывают проблемы с подключением или идентификацией автомобиля в FORScan. FORScan Site Admin Posts: 2798 Joined: Fri Jun 13, 2014 2:21 am

Post by FORScan » Thu Oct 30, 2014 3:29 am

+ Сервисная процедура "Калибровка инжекторов" для:

Mazda 6 2.0 RF-T 2002-2004 МГ
Mazda MPV 2.0 RF-T 2002-2004 МГ
Mazda 5 2.0 RF-T 2007 МГ
Mazda Bongo 2.0 RF-T 2007 МГ

Данная функция нуждается в проверке на двигателях 2.0 RF-T 2007 МГ. Что касается двигателей RF-T 2002-2004 МГ - на них функция была проверена, и обнаружена следующая проблема для китайских ELM327 bluetooth адаптеров: из-за специфики реализации протокола модуля PCM на этих моделях, значительное время отклика китайских ELM327 bluetooth адаптеров может приводить к потери соединения с PCM. Было сделано исправление для этой проблемы, однако не было возможности это исправление протестировать, т.к. пользователь, который обратился с этой проблемой, уехал из города на две недели) Данная функция проверена на 2.0 RF-T 2007 МГ и RF-T 2002-2004 МГ, все работает. FORScan Site Admin Posts: 2798 Joined: Fri Jun 13, 2014 2:21 am

FORScan Lite v1.2.2 для iPhone (ядро 2.1.21)

Post by FORScan » Sat Nov 08, 2014 4:26 pm

FORScan Lite v1.2.2 для iPhone (ядро 2.1.21)

1. "Lite" означает что в этой версии нет тестов и сервисных функций.

2. "(ядро 2.1.21)" означает, что данная версия использует то же самое ядро (основной функционал), что и FORScan для Windows v2.1.21

3. FORScan Lite для iPhone требует WiFi адаптер. Известно, что bluetooth устройства требуют специальной сертификации от Apple, абсолютное большинство адаптеров этой сертификации не имеют.

4. Данная версия платная (около $5), однако все, кто помогал нам с развитием проект (переводчики, бета-тестировщики, просто пользователи которые помогали находить ошибки и устранять проблемы, улучшая приложение) могут получить его бесплатно. Мы планируем начать принимать такие запросы по email с 10 ноября 2014.

FORScan Site Admin Posts: 2798 Joined: Fri Jun 13, 2014 2:21 am

Замечания к версии FORScan v2.1.23

Post by FORScan » Thu Nov 20, 2014 2:15 pm

Эта функция была добавлена в результате изучения проблемы, возникающей на Focus Mk3 1.6 TDCi в результате выполнения функции сброса всех данных самообучения. Описание проблемы на английском здесь:

Современные дизели Common Rail используют так называемый пилотный впрыск - впрыскивание небольшой порции топлива прямо перед основным впрыском. Это позволяет уменьшить шум взрыва в цилиндре и вообще улучшить работу двигателя. Количество топлива для пилотного впрыска зависит от многих условий (режим работы, износ и т.д.), поэтому к этому параметру применяются методы адаптации (самообучения). В некоторых случаях эти данные самообучения должны быть сброшены и переинициализированы (например, если заменен один или несколько инжекторов). Некоторые модули управления двигателем могут вычислять начальные значения для пилотного впрыска, использую коды C2I инжекторов (поэтому важно программировать инжекторы в PCM после замены). Но некоторые PCM требуют также дополнительных процедур инициализации. По каким-то причинам, сервисная функция "Сброс всех данных самообучения" для Focus Mk3 выполняет некорректную инициалиазцию этих значений. Данная функция прежде всего была добавлена для исправления этой проблемы.

+ Сервисная функция "Сброс данных самообучения минимального импульса впрыскивания (MDP)" для:
Galaxy 2.0 TDCi Евро 5 2010 МГ
Mondeo Mk4 2.0 TDCi Евро 5 2007-2011 МГ
Kuga 2.0 TDCi TDCi Евро 5 2008 МГ
Focus Mk3/CMax 2.0 TDCi 2011 МГ Минимальный импульс впрыскивания (Minimum drive pulse - MDP) также является важным параметром для пилотного впрыска. MDP означает минимальный импульс, который нужно подать на инжектор, что бы он впрыснул что-то в цилиндр. Поскольку пилотный впрыск оперирует очень маленькими порциями топлива, калибровка MDP необходима для точного управления впрыском.
* Улучшения в процедуре чтения DTC - теперь явно выделяются модули, в которых FORScan не смог прочитать ошибки Давно собирались это сделать. Проблема: если FORScan по каким-то причинам не может прочитать коды DTC в каком-то модуле (а это возможно, например, для модулей управления последнего поколения в случае медленного адаптера ELM327 ), никаких ошибок в лог не пишется. Если перечитать ошибки вручную, FORScan покажет некий диалог с ошибкой, но без упоминания о том, в каком модуле (или модулях) произошла ошибка). В результате пользователь может оказаться дезинформированным: полагать, что в каком-то модуле ошибок нет, ххотя на самом деле FORScan просто не смог их прочитать. В версии 2.1.23 эта проблема, наконец, решена: теперь в случае возникновения такой ситуации, FORScan будет показывать ошибку как в списке DTC, так и в логе.

* Увеличен таймаут для сервисной процедуры статической регенерации DPF для:
Mazda 5 2.0 RF-T 2005/2007 МГ
Mazda 6 2.0 RF-T 2005 МГ
Mazda 3 2.0 RF-T 2006 МГ
Mazda Bongo 2.0 RF-T 2007 МГ

* Убран таймаут в сервисной функции статической регенерации DPF для последнего поколения автомобилей Ford и Mazda


+ Португальский язык
+ Процедура конфигурирования и программирования "Сброс/конфигурация модуля" для модулей EPB и RCM автомобилей:

Сказали спасибо

andrey32rus(12-9-2016 17:11) Varelik(23-7-2016 07:40) elektrik990(12-7-2016 12:30) 063(12-7-2016 11:32)


  • Мне сказали 177 раз
  • Я сказал 123 раз


  • Мне сказали 221 раз
  • Я сказал 92 раз

Focus/CMax Mk3/3.5 (все рынки) 2011-2017
Kuga/Escape Mk2 (все рынки) 2013-2017
Mondeo Mk4 2007-2014
SMax/Galaxy 2006-2014
Transit 2006-2017
Transit Connect 2014 МГ
Ranger 2011 МГ

Внимание: этой функции требуется файл вторичного загрузчика (SBL), который нужно загружать отдельно. См. замечания к релизу
+ Сервисная функция "Сброс флага аварии" в модулях RCM и BCM для:

Mondeo Mk4 2007-2014
Galaxy/SMax 2010-2014

+ Сервисные функции для модуля ABS/ESP: "Калибровка датчика продольного ускорения", "Калибровка датчика поперечного ускорения","Калибровка датчика давления", "Калибровка датчика угла поворота рулевого колеса" для:

Focus Mk3/CMax (американский рынок) 2012-2016
Escape/Kuga 2013-2017
Transit Connect 2014-2017

+ Сервисные функции для модуля ABS/ESP: "Калибровка датчика продольного ускорения", "Калибровка датчика поперечного ускорения","Калибровка датчика давления", "Калибровка датчика скорости рысканья", "Калибровка датчика угла поворота рулевого колеса" для:

Mondeo Mk4 2007-2014
SMax/Galaxy 2006-2014

+ Сервисные функции для модуля ABS/ESP: "Сброс/конфигурация модуля" (отсутствует в дилерском сканере!), "Сброс системы мониторинга давления в шинах","Калибровка датчика продольного ускорения", "Калибровка датчика поперечного ускорения","Калибровка датчика давления", "Калибровка датчика скорости рысканья" для:

+ Сервисная функция "Программирование PATS" для:

+ Сервисная функций "Сервисный спуск ABS" для:

F-150 2004-2006
Crown Victoria 2005-2011 МГ
Lincoln Town Car 2005-2011 МГ
Lincoln Mark LT 2006 МГ
Mercury Grand Marquis 2005-2011 МГ

+ Сервисная функция "Калибровка мотора очистителя ветрового стекла" для:

Focus Mk3/3,5 2011-2017 (все рынки)
Kuga/Escape 2013-2017 (все рынки)
Transit Connect 2014-2017 (все рынки)

Сказали спасибо



  • Мне сказали 148 раз
  • Я сказал 57 раз


  • Мне сказали 576 раз
  • Я сказал 639 раз
[size=13.3333px]+ Бразильская версия португальского языка
+ Китайский язык (традиционный)
+ Обновление базы поддерживаемых моделей
+ Процедура программирования и конфигурации "Сброс/конфигурация модуля" для модуля PCM (требуется для инициализации PCM после относящихся к нему изменений в центральной конфигурации) для:

Focus Mk3 2.0 EcoBoost 2011 МГFocus Mk3 2.0 TDCi 2011 МГFocus Mk3.5 2.0 EcoBoost 2015 МГMondeo Mk4 2.0 TDCi (Stage V) 2007-2011 МГMondeo Mk5 1.6 TDCi 2015 МГGalaxy/SMax 2.0 TDCi (Stage V) 2010 МГFiesta 1.0 EcoBoost 2013 МГTransit Connect 1.6 EcoBoost 2014 МГKuga Mk1 2.0 TDCi (Stage V) 2008 МГKuga Mk2 1.5/2.0 EcoBoost 2013 МГKuga Mk2 2.0 TDCi 2013 МГKuga Mk2 2.5 TiVCT 2013 МГEcosport 2.0 Duratec 2014 МГ+ Функция программирования и конфигурации "Запись показаний одометра" для:

Mondeo Mk4 2007-2011 МГGalaxy/S-Max 2006-2010 МГВнимание! Функция не проверялась на реальном автомобиле!
+ Сервисная функция "Программирование PATS" для:

Ranger/Mazda B-series/Troller (P375) 2011 МГMazda 2 (Japan Market) 2002-2005 МГMazda 5 (All markets) 2005-2007 МГMazda MX-5 (All markets) 2005-2010 МГMazda 6 (European market) 2002-2005 МГMazda 6 (General market) 2.3 L3 2003-2008 МГMazda Atenza 2.3 L3 2002-2005 МГMazda 8/MPV 2006-2013 МГ+ Сервисная функция "Калибровка камеры заднего вида" для:

Falcon FG Mk2(спасибо Nigel (NFV) - Australian Ford Forums)
+ Некоторые параметры конфигурации добавлены для модулей BCM и IPC сл.автомобилей:

Fusion 2013-2017 МГLincoln MKZ 2013-2017 МГMustang 2015-2017 МГ(спасибо DanMc85 - 2GFusions)
* улучшения в процедуры регенерации DPF
- ошибка, приводящая к пропаданию некоторых важных параметров, таких как PID "Injector Pilot Learn Cylinder 1..4" для Focus Mk3/3,5, Mondeo Mk4, Galaxy/S-Max, Transit Connect с двигателем 1.6 TDCi (может быть актуально и для других параметров и автомобилей)
- ошибка в конфигурировании некоторых модулей для некоторых новых моделей автомобилей (обнаружена для Mondeo 2015, Explorer 2015). данная ошибка присутствует в IDS Standard
- ошибки в процедуре конфигурирования и программирования "Центральная конфигурация"
- ошибка запуска статической регенерации DPF на некоторых моделях Mazda 3 с двигателем Y6
- ошибка в функции программирования PATS для Ford KA 1.3 Duratec 8V 2000 МГ
- ошибка в сервисной функции "Сброс системы мониторинга состояния аккумуляторной батареи", которая проявилась на некоторых моделях автомобилей (обнаружена для Fusion 2014, но могла присутствоват и на других моделях)
- ошибка в сервисной функции сброса EGR для Transit Connect 1.8 TDCi и некоторых других моделей

Я работаю над lpc 1768 SBL, который включает следующий код для перехода к пользовательскому приложению.

Он работал без ошибок. После добавления кучи памяти в код, машина застревает. Я опробовал разные значения для кучи. Некоторые из них работают. После некоторой глубокой отладки я мог обнаружить, что машина не застревает, когда есть значение, которое делится на 64, это первые местоположения файла bin приложения.

Когда я выбираю кучную память как 0x00002E90, она создает базу стека как 0x10005240. Тогда размер стека + размер стека (0x2900) дает value = 0x10007B40. Я обнаружил, что это загружается в первые местоположения файла bin приложения. Это значение делится на 64, и код работает без застревания.

Но, когда я выбираю кучу памяти как 0x00002E88, он генерирует базу стека как 0x10005238. Тогда размер стека + размер стека (0x2900) дает value = 0x10007B38. Это значение не делится на 64 и код застревает.

В этом случае разборка выглядит следующим образом.

enter image description here

При переходе с адреса 0x0000 2000 он переходит в жесткий обработчик ошибок. Но в более раннем случае он не переходит к жесткой ошибке. Это продолжается и работает.

Я не могу понять инструкцию DCW и почему она идет к жесткой ошибке. Может ли кто-нибудь сказать мне причину этого?

спросил(а) 2016-03-07T16:04:00+03:00 5 лет, 8 месяцев назад

Выполнение векторной таблицы - это то, что вы делаете на более старых частях ARM7/ARM9 (или больших Cortex-A), где векторы являются инструкциями, а первая запись будет переходом к обработчику сброса, но на Cortex-M векторная таблица чистые данные - первая запись - это ваш начальный указатель стека, а вторая запись - адрес обработчика сброса - поэтому попытка выполнить это может привести к ужасному сбою.

Как бы то ни было, в этом случае вы действительно можете уйти с выполнением большей части этой векторной таблицы по чистой случайности, потому что макет памяти приводит к тому, что каждое полуслово flash-адресов становится довольно безобидным:

Пока вы не перепутаете все оставшиеся NOP до 0x20d8, где вы получите реальную точку входа. Однако убийца - это указатель начального стека, потому что благодаря тому, что оперативная память выше, вы получаете следующее:

Нижний байт 0x7bxx - это то, где закодирован базовый регистр, поэтому, изменяя адрес, у вас есть crapshoot относительно того, какой регистр есть, и, кроме того, независимо от того, остается ли какое-либо значение нежелательной почты в качестве действительного адреса для загрузки. Тебе повезло?

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

Анализ загрузчика исходного кода платформы Qualcomm для Android sbl1 (1)

Процесс загрузки платформы Qualcomm 8k более сложный, я также столкнулся с некоторыми проблемами некоторое время назад и подробно изучил его. Однако, хотя это очень сложно, нам нужно переместить очень мало вещей: модемной стороне в основном нужно переместить код sbl1 (полное имя: Secondary boot loader), а код APPSBL должен переместиться на стороне ap (я не знаю об этой части, пожалуйста, обратитесь к :Анализ загрузочного исходного кода), другие сделаны Qualcomm, и даже некоторые из них мы не можем увидеть код. Сегодня мы проанализируем sbl1, который играет ключевую роль за несколько секунд до загрузки. Этот код находится в boot_images \ на стороне модема.

Начать процесс

boot arch

Во-первых, давайте взглянем на блок-схему процесса начального загрузчика Qualcomm, которая в основном состоит из трех частей: ap, RPM и модема. Поскольку моя работа в основном связана с ap, я не понимаю коды RPM и модемной стороны. Если у меня есть время, я могу изучить его позже. Блок-схема выглядит следующим образом:


Как видно из приведенного выше рисунка, процесс запуска системы в основном состоит из следующих шагов:

Система включена или перезапущена.

В чипе Cortex-a53 выполняется PBL на стороне ap, образ sbl1 загружается с загрузочного устройства в TCM, и изображение проверяется, а затем переходит на sbl1 для продолжения выполнения.

sbl1 инициализирует ddr, загружает образ QSEE и образ QHEE с загрузочного устройства в DDR и проверяет образ. QSEE выполняет и устанавливает безопасную среду. QHEE - настройка VMM, конфигурация SMMU и службы управления доступом xPU.

sbl1 загружает образ микропрограммы RPM с загрузочного устройства в код RAM и проверяет образ.

sbl1 загружает образ HLOS APPSBL с загрузочного устройства в ddr и проверяет образ.

sbl1 переходит к QSEE-> QHEE.

QHEE информирует сторону RPM перейти к встроенному ПО RPM и перейти к HLOS APPSBL для выполнения. Сторона RPM начинает выполнять прошивку RPM.

QHEE переходит к HLOS APPSBL для инициализации системы.

HLOS APPSBL загружает и проверяет ядро ​​HLOS.

Файловая система загружается ядром для завершения запуска всей системы Android.

HLOS APPSBL - это загрузчик на стороне ap, смотрите:Анализ загрузочного исходного кода

RPM

Модемная сторона - это, главным образом, код, связанный с радиочастотной сетью. Я не изучал или не понимал его. Код на стороне RPM не был изучен особо. Документы Qualcomm представляют его следующим образом:

sbl1 анализ процесса

Далее я буду следовать коду sbl1 и кратко изложу ключевой процесс. Эта часть кода находится на стороне модема. Несколько важных документов, которые я обычно привлекаю:

Начните с файла ввода sbl1.s, как показано ниже:

вход sbl1: sbl1.s

Путь к коду этой части находится в: boot_images / core / boot / secboot3 / hw / msm8916 / sbl1 / sbl1.s. Этот файл управляет процессором и в основном выполняет следующие операции:

  • Настройте оборудование и продолжите процесс загрузки.
  • Инициализировать ddr.
  • Загрузите операционную систему Trust_Zone.
  • Загрузите прошивку RPM.
  • Загрузите APPSBL и продолжите процесс загрузки.

Ключевой исходный код выглядит следующим образом:

sbl1_main_ctl

Эта функция находится в boot_images \ core \ boot \ secboot3 \ hw \ mdm9x45 \ sbl1 \ sbl1_mc.c. В основном она завершает инициализацию ОЗУ и другие задачи. Обратите внимание, что эта функция никогда не возвращается. Часть ключевого исходного кода выглядит следующим образом: я добавил китайские иероглифы, чтобы объяснить ту часть, на которую, я думаю, мы должны обратить внимание:

sbl1_config_table

sbl1_config_table - это структурный массив, в котором хранятся параметры конфигурации и функции выполнения, необходимые для загрузки QSEE, RPM, APPSBL и других образов, которые находятся в boot_images \ core \ boot \ secboot3 \ hw \ msm8909 \ sbl1 \ sbl1_config.c. Код ключа выглядит следующим образом:

load_qsee_pre_procs

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

load_qsee_post_procs

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

pm_chg_charger_detect_state

Функция pm_chg_charger_detect_state - очень важная функция в проекте запуска, которая будет контролировать состояние батареи и затем определять процесс запуска. Отношения вызова и анализ заключаются в следующем:

pm_chg_sbl_charging_state_entry

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

pm_chg_process_sbl_charger_states

Функция pm_chg_process_sbl_charger_states также является очень важной функцией в процессе запуска. В этой функции есть бесконечный цикл для обновления состояния зарядки или выключения. Она вызывается функцией pm_chg_sbl_charging_state_entry (см. Выше отношение вызова). Проблема перезапуска, возникающая за несколько секунд до подключения зарядного устройства, вероятно, является проблемой в этой части. код шоу, как показано ниже:

Интеллектуальная рекомендация


WECHAT MILLY WAY POINT CAMENT CARD - СОВРЕМЕННЫЕ СТРАНИЦЫ ПРОГЛЯЮТНОЕ ЗНАЧЕНИЕ (Запрос)

WECHAT Small Pass Pass Value и значение приобретения: 1. Установите способ настройки идентификатора идентифицирует значение параметра, передаваемое после прыжка; 2, используя метод Data-XXXX для идент.


Текущая задача Узел больше экземпляров


[Linux] Программирование сетевых сокетов UDP

Что такое протокол UDP Протокол UDP называетсяПротокол пользовательских датаграмм UDP - протокол транспортного уровня Без установления соединения, ненадежная передача, ориентированная на дейтаграмму П.



Основная идея обработки больших данных - разделяй и властвуй

Разделяй и властвуй - «разделяй и властвуй» Как мы все знаем, компьютеры очень быстрые и используются людьми. Однако независимо от того, насколько быстрым является компьютер, способность о.

Читайте также: