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

Изменения

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

17 байт убрано, 15:50, 25 февраля 2009
Нет описания правки
:Функции процессора телефонов Motorola серии P2K выполняет микросхема Neptune. Существует несколько её версий (LT, ULS, LTE, LTE2), различающихся, в первую очередь, содержимым внутреннего ПЗУ - irom.:Процессор начинает работать сразу после включения питания. Включение питания происходит при:1) # Установке аккумуляторной батареи в телефон2) # Подключении зарядного устройства3) # Нажатии на клавишу отмены вызова:При подаче напряжения питания схема POR (Power-on Reset, сброса при включении питания) срабатывает, и ядро ARM7TDMI-S (далее MCU, Microcontroller Unit) начинает выполнение программы с адреса 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. Рассмотрим их функции и порядок их действий.
Буткор первого порядка выполняет следующие функции:
1) # Инициализирует процессор2) # Проверяет наличие буткора второго порядка; при его отсутствии инициализирует USB, и телефон определяется как "Blank LCA Neptune" с интерфейсом Motorola Boot.3) # Запускает буткор второго порядка
Буткор второго порядка:
4) # Проверяет наличие прошивки; при её отсутствии инициализирует USB, и телефон определяется как "Flash LCA Neptune" с интерфейсом Motorola Flash5) # Запускает прошивку:При замыкании +1,875 Вольта (питания процессора) на точку MOD по адресу 0x00000000 оказывается irom, в котором находится функциональный аналог буткора первого порядка. Этот приём называется "тест-поинт" и на LCA-моделях (Neptune LT) используется для начальной заводской прошивки телефона, а также для его восстановления в случае порчи буткора первого или второго порядка.
У моделей на других версиях Neptune вывод MOD никуда не подключен (но выведен в качестве тестовой площадки на плату), поэтому на них управление первым получает стартовый код в irom. Этот стартовый код выполняет следующие действия:
1) # Инициализирует процессор2) # Инициализирует интерфейс внешней памяти - включает CS03) # Проверяет наличие Boot Loader (бутлоадера, бута) на микросхеме флеш-памяти; при его отсутствии запускается бут, встроенный в irom4) # Проверяет цифровую подпись Boot Loader. При отрицательном исходе проверки запускается бут, встроенный в irom5) # Проверяет наличие прошивки. При её отсутствии запускается бут с флеш-памяти6) # Проверяет цифровую подпись прошивки. При отрицательном исходе проверки запускается бут, встроенный в irom. Логика этого шага непонятна.7) # Запускает прошивку:Бутлоадер, встроенный в irom, выполняет следующие действия:1) # Инициализирует USB; телефоны на основе Neptune ULS определяются как "Blank ULS Neptune" с интерфейсом Motorola Boot, остальные модели - как "S Blank Neptune LTE/LTE2" с интерфейсом Motorola Flash2) # Собственно выполняет прошивание.:Бутлоадер из флеш-памяти выполняет следующие действия:1) # Инициализирует контроллер питания и дисплей2) # Определяет версию и состояние прошивки3) # Отображает на дисплее свою версию и версию прошивки, сообщения об ошибках (при их наличии)4) # Инициализирует USB; телефон определяется как "S Flash Neptune LTE/LTE2" (на телефонах с Neptune ULS как такового бутлоадера в флеш-памяти нет).:Заголовок бутлоадера, находящегося в флеш-памяти, содержит указатели на:1) # Точку входа в бутлоадер2) # Сертификат подписи бутлоадера3) # Заголовок прошивки:Заголовок прошивки содержит указатели на:1) # Точку входа в прошивку2) # CG1, CG3, CG4, CG7 (при её наличии), CG15 (при её наличии), CG18. Заголовок CG18 содержит указатель на сертификат подписи прошивки.:В ряде бутлоадеров для LTE-моделей (и всех бутлоадерах для LTE2-моделей) в поле для указателя на заголовок прошивки записан указатель на подменный заголовок, содержащий следующие данные:1) # В качестве точки входа в прошивку - адрес кода дополнительной проверки прошивки, лежащего внутри бута2) # В качестве указателей на кодовые группы - произвольные данные (возможно, 0xFFFFFFFF), кроме указателя на CG18 - он содержит указатель на подменный заголовок CG18, лежащий внутри бута и указывающий на сертификат подписи бута.:Таким образом, вместо проверки прошивки irom во второй раз проверяет бут и запускает в нём код дополнительной проверки. Этот код проверяет подпись прошивки и в случае отрицательного исхода запускает собственно бутлоадер.
27
правок