Открыть главное меню

Последовательность запуска

Общие сведенияПравить

Функции процессора телефонов Motorola серии P2K выполняет микросхема Neptune. Существует несколько её версий (LT, ULS, LTE, LTE2), различающихся, в первую очередь, содержимым внутреннего ПЗУ - irom. Процессор начинает работать сразу после включения питания. Включение питания происходит при:

  1. Установке аккумуляторной батареи в телефон
  2. Подключении зарядного устройства
  3. Нажатии на клавишу отмены вызова

При подаче напряжения питания схема POR (Power-on Reset, сброса при включении питания) срабатывает, и ядро ARM7TDMI-S (далее MCU) начинает выполнение программы с адреса 0x00000000 в режиме RESET. Одновременно начинает выполнение ядро DSP56600 (далее DSP).

Начало работыПравить

DSP всегда начинает работу с кода, записанного в irom, и этот адрес постоянен. Что касается MCU, то конфигурация его адресного пространства зависит от уровня на выводе MOD Neptune:

  1. Если на выводе MOD высокий логический уровень, по адресу 0x00000000 находится irom, а по адресу 0x10000000 находится микросхема внешней памяти, идентифицируемая по сигналу выбора CS0 (активному на низкий уровень).
  2. Если на выводе MOD низкий логический уровень, по адресу 0x00000000 находится микросхема внешней памяти, подключенная к CS0, а по адресу 0x10000000 - irom.

Вывод MOD снабжён подпорным резистором, так что если он не подключен, на нём наблюдается высокий логический уровень. В моделях телефонов с микросхемой Neptune LT этот вывод через внешний резистор малого сопротивления подключен к общему проводу. У всех моделей к CS0 подключена микросхема флеш-памяти.
Таким образом, на моделях с Neptune LT первым получает управление Boot Core (буткор) первого уровня, а во всех остальных моделях - стартовый код в irom. Рассмотрим их функции и порядок их действий.

Запуск моделей на базе Neptune LTПравить

Буткор первого порядка выполняет следующие функции:

  1. Инициализирует процессор
  2. Проверяет наличие буткора второго порядка; при его отсутствии инициализирует USB, и телефон определяется как "Blank LCA Neptune" с интерфейсом Motorola Boot.
  3. Запускает буткор второго порядка

Буткор второго порядка:

  1. Проверяет наличие прошивки; при её отсутствии инициализирует USB, и телефон определяется как "Flash LCA Neptune" с интерфейсом Motorola Flash
  2. Запускает прошивку

При замыкании +1,875 Вольта (питания процессора) на точку MOD по адресу 0x00000000 оказывается irom, в котором находится функциональный аналог буткора первого порядка. Этот приём называется "тест-поинт" и на LCA-моделях используется для начальной заводской прошивки телефона, а также для его восстановления в случае повреждения буткора первого или второго порядка.

Запуск моделей на базе других версий NeptuneПравить

У моделей на других версиях Neptune вывод MOD никуда не подключен (но выведен в качестве тестовой площадки на плату), поэтому на них управление первым получает стартовый код в irom. Этот стартовый код выполняет следующие действия:

  1. Инициализирует процессор
  2. Инициализирует интерфейс внешней памяти - включает CS0
  3. Проверяет наличие Boot loaderа на микросхеме флеш-памяти; при его отсутствии запускается бут, встроенный в irom
  4. Проверяет цифровую подпись Boot loaderа. При отрицательном исходе проверки запускается бут, встроенный в irom
  5. Проверяет наличие прошивки. При её отсутствии запускается бут с флеш-памяти
  6. Проверяет цифровую подпись прошивки. При отрицательном исходе проверки запускается бут, встроенный в irom. Логика этого шага непонятна.
  7. Запускает прошивку

Немного о бутлоадерахПравить

Boot loader, встроенный в irom, выполняет следующие действия:

  1. Инициализирует USB; телефоны на основе Neptune ULS определяются как "Blank ULS Neptune" с интерфейсом Motorola Boot, остальные модели - как "S Blank Neptune LTE/LTE2" с интерфейсом Motorola Flash
  2. Собственно выполняет прошивание.

Boot loader из флеш-памяти выполняет следующие действия:

  1. Инициализирует контроллер питания и дисплей
  2. Определяет версию и состояние прошивки
  3. Отображает на дисплее свою версию и версию прошивки, сообщения об ошибках (при их наличии)
  4. Инициализирует USB; телефон определяется как "S Flash Neptune LTE/LTE2" (на телефонах с Neptune ULS как такового boot loaderа в флеш-памяти нет).

Структура прошивкиПравить

Заголовок boot loaderа, находящегося в флеш-памяти, содержит указатели на:

  1. Точку входа в boot loader
  2. Сертификат подписи boot loaderа
  3. PDS
  4. Конфигурацию оборудования
  5. Заголовок прошивки

Заголовок прошивки содержит указатели на:

  1. Точку входа в прошивку
  2. CG1, CG3, CG4, CG7 (при её наличии), CG15 (при её наличии), CG18. Заголовок CG18 содержит указатель на сертификат подписи прошивки.

ВариантыПравить

В ряде boot loaderов для LTE-моделей (и всех boot loaderах для LTE2-моделей) в поле для указателя на заголовок прошивки записан указатель на подменный заголовок, содержащий следующие данные:

  1. В качестве точки входа в прошивку - адрес кода дополнительной проверки прошивки, лежащего внутри бута
  2. В качестве указателей на кодовые группы - произвольные данные (возможно, 0xFFFFFFFF), кроме указателя на CG18 - он содержит указатель на подменный заголовок CG18, лежащий внутри бута и указывающий на сертификат подписи бута.

Таким образом, вместо проверки прошивки irom во второй раз проверяет бут и запускает в нём код дополнительной проверки. Этот код проверяет подпись прошивки и в случае отрицательного исхода запускает собственно boot loader.

См. такжеПравить