Какая часть исходного кода Android определяет начальное время Android, когда нет источника времени? - PullRequest
0 голосов
/ 15 января 2019

Я инженер, в настоящее время работающий с настройкой / синхронизацией системного времени в Android P.

Когда мы собираем Android и загружаем его в первый раз, мы видим, что начальное время уже установлено (правильное время или нет). Я понятия не имею, где искать начальную настройку времени без какого-либо источника времени (Wi-Fi, GPS и т. Д.). Грубое предположение состоит в том, что, возможно, эту временную ссылку можно получить из информации о времени Linux, но, как я уже сказал, это всего лишь предположение, и я не знаю, как я могу доказать / проверить код для этого также.

Может ли кто-нибудь дать мне просветление? Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Как инженер-электронщик, я постараюсь ответить на этот вопрос более реалистичным способом.

В основной плате есть специальная часть (RTC), которая предназначена только для отслеживания времени. Как заявил @Lie Ryan, у него есть собственная батарея и относительно большой конденсатор. Кроме того, есть специальный чип, который в основном функционирует как счетчик. Вы можете инициализировать его, загружать новые данные и т. Д. Этот чип питается от специальной батареи (обычно очень маленькой). Чип может получать данные от кристалла и процессора. Как только система собрана и батарея установлена, даже в основной системе нет батареи, она начинает считать. Значение, хранящееся в нем, продолжает расти. Он принимает частоту кристалла в качестве опорной частоты, делает его тактовый сигнал, и использует его в качестве опорного тактового сигнала. Значение счетчика увеличивается при каждом фиксированном числе колебаний кристалла (тактовый сигнал). Когда вы включаете систему, предполагая, что система настроена на считывание реального времени из RTC, она считывает значение, сохраненное в этом чипе, и декодирует его в формате, который был установлен системой.

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

0 голосов
/ 15 января 2019

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

RTC обычно питается от собственной батареи / суперконденсатора, поэтому он будет работать, даже если вы отключите основную батарею.

В базовой файловой системе устройства Linux это устройство обычно отображается как / dev / rtc *. Документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...