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

Последовательность запуска: различия между версиями

м (Запуск моделей на базе Neptune LT)
 
(не показано 6 промежуточных версий 3 участников)
Строка 1:Строка 1:
Функции процессора телефонов Motorola серии P2K выполняет микросхема Neptune. Существует несколько её версий (LT, ULS, LTE, LTE2), различающихся, в первую очередь, содержимым внутреннего ПЗУ - irom.
+
== Общие сведения ==
 +
Функции процессора телефонов Motorola серии [[P2K]] выполняет микросхема [[Neptune]]. Существует несколько её версий ([[LCA|LT]], [[ULS]], [[LTE]], [[LTE2]]), различающихся, в первую очередь, содержимым внутреннего ПЗУ - [[irom]].
 
Процессор начинает работать сразу после включения питания. Включение питания происходит при:
 
Процессор начинает работать сразу после включения питания. Включение питания происходит при:
 
# Установке аккумуляторной батареи в телефон
 
# Установке аккумуляторной батареи в телефон
 
# Подключении зарядного устройства
 
# Подключении зарядного устройства
 
# Нажатии на клавишу отмены вызова
 
# Нажатии на клавишу отмены вызова
При подаче напряжения питания схема POR (Power-on Reset, сброса при включении питания) срабатывает, и ядро ARM7TDMI-S (далее MCU, Microcontroller Unit) начинает выполнение программы с адреса 0x00000000 в режиме RESET. Одновременно начинает выполнение ядро DSP56600 (далее DSP). <br>
+
При подаче напряжения питания схема POR (Power-on Reset, сброса при включении питания) срабатывает, и ядро ARM7TDMI-S (далее [[MCU]]) начинает выполнение программы с адреса 0x00000000 в режиме RESET. Одновременно начинает выполнение ядро DSP56600 (далее [[DSP]]).
DSP всегда начинает работу с кода, записанного в irom, и этот адрес постоянен. Что касается MCU, то конфигурация его адресного пространства зависит от уровня на выводе MOD Neptune:
+
 
# Если на выводе MOD высокий логический уровень, по адресу 0x00000000 находится irom, а по адресу 0x10000000 находится микросхема внешней памяти, идентифицируемая по сигналу выбора CS0 (активному на низкий уровень).
+
== Начало работы ==
# Если на выводе MOD низкий логический уровень, по адресу 0x00000000 находится микросхема внешней памяти, подключенная к CS0, а по адресу 0x10000000 - irom.
+
[[DSP]] всегда начинает работу с кода, записанного в [[irom]], и этот адрес постоянен. Что касается [[MCU]], то конфигурация его адресного пространства зависит от уровня на выводе MOD [[Neptune]]:
 +
# Если на выводе MOD высокий логический уровень, по адресу 0x00000000 находится [[irom]], а по адресу 0x10000000 находится микросхема внешней памяти, идентифицируемая по сигналу выбора CS0 (активному на низкий уровень).
 +
# Если на выводе MOD низкий логический уровень, по адресу 0x00000000 находится микросхема внешней памяти, подключенная к CS0, а по адресу 0x10000000 - [[irom]].
 
Вывод MOD снабжён подпорным резистором, так что если он не подключен, на нём наблюдается высокий логический уровень. В моделях телефонов с микросхемой Neptune LT этот вывод через внешний резистор малого сопротивления подключен к общему проводу. У всех моделей к CS0 подключена микросхема флеш-памяти. <br>
 
Вывод MOD снабжён подпорным резистором, так что если он не подключен, на нём наблюдается высокий логический уровень. В моделях телефонов с микросхемой Neptune LT этот вывод через внешний резистор малого сопротивления подключен к общему проводу. У всех моделей к CS0 подключена микросхема флеш-памяти. <br>
Таким образом, на моделях с Neptune LT первым получает управление Boot Core (буткор) первого уровня, а во всех остальных моделях - стартовый код в irom. Рассмотрим их функции и порядок их действий. <br>
+
Таким образом, на моделях с [[LCA|Neptune LT]] первым получает управление Boot Core (буткор) первого уровня, а во всех остальных моделях - стартовый код в irom. Рассмотрим их функции и порядок их действий.
 +
 
 +
== Запуск моделей на базе Neptune LT ==
 
Буткор первого порядка выполняет следующие функции:
 
Буткор первого порядка выполняет следующие функции:
 
# Инициализирует процессор
 
# Инициализирует процессор
# Проверяет наличие буткора второго порядка; при его отсутствии инициализирует USB, и телефон определяется как "Blank LCA Neptune" с интерфейсом Motorola Boot.
+
# Проверяет наличие буткора второго порядка; при его отсутствии инициализирует USB, и телефон определяется как "Blank LCA Neptune" с интерфейсом [[Motorola Boot]].
 
# Запускает буткор второго порядка
 
# Запускает буткор второго порядка
 
Буткор второго порядка:
 
Буткор второго порядка:
# Проверяет наличие прошивки; при её отсутствии инициализирует USB, и телефон определяется как "Flash LCA Neptune" с интерфейсом Motorola Flash
+
# Проверяет наличие прошивки; при её отсутствии инициализирует USB, и телефон определяется как "Flash LCA Neptune" с интерфейсом [[Motorola Flash]]
 
# Запускает прошивку
 
# Запускает прошивку
При замыкании +1,875 Вольта (питания процессора) на точку MOD по адресу 0x00000000 оказывается irom, в котором находится функциональный аналог буткора первого порядка. Этот приём называется "тест-поинт" и на LCA-моделях (Neptune LT) используется для начальной заводской прошивки телефона, а также для его восстановления в случае порчи буткора первого или второго порядка. <br>
+
При замыкании +1,875 Вольта (питания процессора) на точку MOD по адресу 0x00000000 оказывается [[irom]], в котором находится функциональный аналог буткора первого порядка. Этот приём называется "[[TestPoint|тест-поинт]]" и на [[LCA|LCA-моделях]] используется для начальной заводской прошивки телефона, а также для его восстановления в случае повреждения буткора первого или второго порядка.
У моделей на других версиях Neptune вывод MOD никуда не подключен (но выведен в качестве тестовой площадки на плату), поэтому на них управление первым получает стартовый код в irom. Этот стартовый код выполняет следующие действия:
+
 
 +
== Запуск моделей на базе других версий Neptune ==
 +
У моделей на других версиях Neptune вывод MOD никуда не подключен (но выведен в качестве тестовой площадки на плату), поэтому на них управление первым получает стартовый код в [[irom]]. Этот стартовый код выполняет следующие действия:
 
# Инициализирует процессор
 
# Инициализирует процессор
 
# Инициализирует интерфейс внешней памяти - включает CS0
 
# Инициализирует интерфейс внешней памяти - включает CS0
# Проверяет наличие Boot Loader (бутлоадера, бута) на микросхеме флеш-памяти; при его отсутствии запускается бут, встроенный в irom
+
# Проверяет наличие [[Boot loader]]а на микросхеме флеш-памяти; при его отсутствии запускается [[Boot loader|бут]], встроенный в irom
# Проверяет цифровую подпись Boot Loader. При отрицательном исходе проверки запускается бут, встроенный в irom
+
# Проверяет цифровую подпись [[Boot loader]]а. При отрицательном исходе проверки запускается [[Boot loader|бут]], встроенный в [[irom]]
# Проверяет наличие прошивки. При её отсутствии запускается бут с флеш-памяти
+
# Проверяет наличие прошивки. При её отсутствии запускается [[Boot loader|бут]] с флеш-памяти
# Проверяет цифровую подпись прошивки. При отрицательном исходе проверки запускается бут, встроенный в irom. Логика этого шага непонятна.
+
# Проверяет цифровую подпись прошивки. При отрицательном исходе проверки запускается [[Boot loader|бут]], встроенный в [[irom]]. Логика этого шага непонятна.
 
# Запускает прошивку
 
# Запускает прошивку
Бутлоадер, встроенный в irom, выполняет следующие действия:
+
 
# Инициализирует USB; телефоны на основе Neptune ULS определяются как "Blank ULS Neptune" с интерфейсом Motorola Boot, остальные модели - как "S Blank Neptune LTE/LTE2" с интерфейсом Motorola Flash
+
== Немного о бутлоадерах ==
 +
[[Boot loader]], встроенный в [[irom]], выполняет следующие действия:
 +
# Инициализирует USB; телефоны на основе [[ULS|Neptune ULS]] определяются как "Blank ULS Neptune" с интерфейсом [[Motorola Boot]], остальные модели - как "S Blank Neptune LTE/LTE2" с интерфейсом [[Motorola Flash]]
 
# Собственно выполняет прошивание.
 
# Собственно выполняет прошивание.
Бутлоадер из флеш-памяти выполняет следующие действия:
+
[[Boot loader]] из флеш-памяти выполняет следующие действия:
 
# Инициализирует контроллер питания и дисплей
 
# Инициализирует контроллер питания и дисплей
 
# Определяет версию и состояние прошивки
 
# Определяет версию и состояние прошивки
 
# Отображает на дисплее свою версию и версию прошивки, сообщения об ошибках (при их наличии)
 
# Отображает на дисплее свою версию и версию прошивки, сообщения об ошибках (при их наличии)
# Инициализирует USB; телефон определяется как "S Flash Neptune LTE/LTE2" (на телефонах с Neptune ULS как такового бутлоадера в флеш-памяти нет).
+
# Инициализирует USB; телефон определяется как "S Flash Neptune [[LTE]]/[[LTE2]]" (на телефонах с [[ULS|Neptune ULS]] как такового [[boot loader]]а в флеш-памяти нет).
Заголовок бутлоадера, находящегося в флеш-памяти, содержит указатели на:
+
 
# Точку входа в бутлоадер
+
== Структура прошивки ==
# Сертификат подписи бутлоадера
+
Заголовок [[boot loader]]а, находящегося в флеш-памяти, содержит указатели на:
 +
# Точку входа в [[boot loader]]
 +
# Сертификат подписи [[boot loader]]а
 +
# [[PDS]]
 +
# [[CG5|Конфигурацию оборудования]]
 
# Заголовок прошивки
 
# Заголовок прошивки
 
Заголовок прошивки содержит указатели на:
 
Заголовок прошивки содержит указатели на:
 
# Точку входа в прошивку
 
# Точку входа в прошивку
# CG1, CG3, CG4, CG7 (при её наличии), CG15 (при её наличии), CG18. Заголовок CG18 содержит указатель на сертификат подписи прошивки.
+
# [[CG1]], [[CG3]], [[CG4]], [[CG7]] (при её наличии), [[CG15]] (при её наличии), [[CG18]]. Заголовок [[CG18]] содержит указатель на сертификат подписи прошивки.
В ряде бутлоадеров для LTE-моделей (и всех бутлоадерах для LTE2-моделей) в поле для указателя на заголовок прошивки записан указатель на подменный заголовок, содержащий следующие данные:
+
 
# В качестве точки входа в прошивку - адрес кода дополнительной проверки прошивки, лежащего внутри бута
+
== Варианты ==
# В качестве указателей на кодовые группы - произвольные данные (возможно, 0xFFFFFFFF), кроме указателя на CG18 - он содержит указатель на подменный заголовок CG18, лежащий внутри бута и указывающий на сертификат подписи бута.
+
В ряде [[boot loader]]ов для [[LTE|LTE-моделей]] (и всех [[boot loader]]ах для [[LTE2|LTE2-моделей]]) в поле для указателя на заголовок прошивки записан указатель на подменный заголовок, содержащий следующие данные:
Таким образом, вместо проверки прошивки irom во второй раз проверяет бут и запускает в нём код дополнительной проверки. Этот код проверяет подпись прошивки и в случае отрицательного исхода запускает собственно бутлоадер.
+
# В качестве точки входа в прошивку - адрес кода дополнительной проверки прошивки, лежащего внутри [[Boot loader|бута]]
 +
# В качестве указателей на кодовые группы - произвольные данные (возможно, 0xFFFFFFFF), кроме указателя на CG18 - он содержит указатель на подменный заголовок [[CG18]], лежащий внутри [[Boot loader|бута]] и указывающий на сертификат подписи [[Boot loader|бута]].
 +
Таким образом, вместо проверки прошивки [[irom]] во второй раз проверяет [[Boot loader|бут]] и запускает в нём код дополнительной проверки. Этот код проверяет подпись прошивки и в случае отрицательного исхода запускает собственно [[boot loader]].
 +
 
 +
== См. также ==
 +
* [[TestPoint]]

Текущая версия на 16:03, 22 февраля 2010

Общие сведения

Функции процессора телефонов 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.

См. также