Нужны ли часы реального времени (RTC) для систем реального времени? [закрыто]

11

Предполагая, что мы работаем над системой и оборудованием Linux реального времени, которые состоят из таймеров высокого разрешения, влияет ли RTC на своевременность системы в реальном времени?

Здесь говорится, что это уменьшает использование процессора и памяти, но есть ли способ как-то сравнить разницу?

WWW
источник
13
Сравнение в ссылке просто глупо.
труба
10
Да, @pipe, и вдобавок ко всему, даже цифры абсолютно неверны. Я с удовольствием куплю чип RTC по цене DS12C887 с «ошибкой в ​​1 секунду за 100 лет». На самом деле я куплю столько, сколько позволят мне мои сбережения. Это точность 300ppb. Более 100 лет Это какая-то серьезная частота добра прямо здесь.
Маркус Мюллер
8
Системы реального времени и часы реального времени - разные вещи, и нет никакого сравнения. RTC предназначен для хранения времени, а система реального времени используется для обслуживания в режиме реального времени (не как в UTC, а как в быстроте)
MaNyYaCk
3
@pipe DS12C887, версия 100-летнего плана .
Маркус Мюллер
4
@JimmyB Часы как это для времени , а не время ! Даже если у вас есть эталонная эпоха, мы обычно устанавливаем ее на TAI (или GPS) и применяем соответствующую коррекцию UTC, когда нам требуется UTC. В случае GPS этот параметр коррекции исходит из эфемерид. В этом смысле UTC является своего рода «часовым поясом» - аналогично, вы не сбрасываете свои часы, когда DST вступает в силу, и ждете, пока они не стабилизируются, - ничего не сбрасывается, потому что часы дают вам импульсы, а не метку времени.
Гонки

Ответы:

40

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

Несколько других битов из статьи, чтобы установить, что это следует считать ненадежным:

Почти ничтожно. Порядка 1 сек в 100 лет

1 секунда за 100 лет составляет примерно 317 ppt (да, это части на триллион ). Вы не можете получить такую ​​стабильность часов с любой имеющейся в продаже технологией часов. Даже при достижении 1 секунды в год потребуется, по крайней мере, OCXO, который требует мощной, постоянно включенной печи, регулирующей температуру. Идея, которую вы могли бы получить с устройством, работающим от долговечной батарейки, смешна.

системы реального времени, такие как цифровые часы, система посещаемости, цифровая камера

Ни один из них не является тем, что можно назвать системами реального времени.

R .. GitHub ОСТАНОВИТЬ, ПОМОГАЯ ЛЕД
источник
1
На самом деле эти системы, скорее всего, имеют компоненты реального времени, хотя и «мягкого реального времени», потому что последствия отсутствия / превышения такта обработки невелики. Не в том заблуждении, что подумал автор ссылки.
Грэм
3
@ Грэхем: В некотором смысле они делают, но поля настолько велики, что вы обычно думаете о них не в реальном времени. В конечном счете, любая интерактивная система работает в режиме реального времени, если вы расширите определение достаточно далеко, потому что, когда она не реагирует на минуты или часы, кто-то может предположить, что она вышла из строя. :-) Так что я думаю, что полезно классифицировать что-то как «в реальном времени», когда есть небольшие поля и серьезные последствия для их пропуска.
R .. GitHub ОСТАНОВИТЬ ЛЬДА
3
@R .. Не все системы работают в режиме реального времени, даже с огромными полями. Если система способна зависать бесконечно, она не может быть системой реального времени. Системы должны иметь абсолютные гарантии того, что временной интервал будет занимать только конечный период времени, а зависание (тупик / livelock) по определению бесконечно.
лес
2
Мета-обсуждение о том, что именно представляет собой система реального времени, не входит в раздел комментариев.
труба
1
@ Uwe: На самом деле я все испортил, но теперь, когда я смотрю на это снова, я думаю, что у меня 2 фактора из 10 - не должно ли быть 0,316ppb? Показано как 1s / (100 * secs_per_year), где secs_per_year = 31556952.
R .. GitHub ОСТАНОВИТЬ ЛЬДА
39

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

И ответ на ваш вопрос - нет, это не повлияет на реальное время работы системы.

MaNyYaCk
источник
1
Это короткий и точный ответ на вопрос ИМО.
Rev 1.0
Некоторые федеральные организации, такие как банки, используют 1ns RTC на своих серверах, основанных на атомных часах. Даже намек на их микроволновые каналы изменит время прохождения к приемнику. Быстрый RTC также хорош для многофазных семафоров.
Sparky256
4
Некоторым системам реального времени не нужен таймер, так как они полностью управляются событиями, и нет необходимости для каких-либо событий основываться на времени. Система просто должна реагировать на каждое событие в течение периода времени, выделенного для этого события, в том числе, когда несколько событий происходят очень близко друг к другу. В некоторых случаях может потребоваться вытесняющее ядро. Внешние таймеры могут быть использованы для проверки работоспособности системы в пределах ее временных ограничений.
rcgldr
2
Если вам нужен реальный пример, операционная система Micro -are OS-9 для процессоров Motorola 6809 / Hitachi 6309 - это ОС реального времени. Серия Tandy Color Computer использовала 6809-е и работала под управлением OS-9 (мое первое знакомство с * nix-подобной ОС), и часы реального времени никогда не были стандартным оборудованием в этой системе и не требовались для функционирования OS-9.
zmerch
3

Если ваша система находится в автономном режиме после сброса и имеет RTC, она сможет указать правильные даты в журналах. Журналы могут быть огромными, если вам нужно просмотреть их, и неправильная временная метка сделает вас, ваших разработчиков программного обеспечения и клиентов сумасшедшими, и вообще расследование практически невозможно.

Легко или сложно, низко или высоко в статье, на которую вы ссылаетесь, является своего рода личным мнением. Это сложно и дорого, если вы никогда не делали этого раньше и не имеете четких системных требований и технического задания; и это легко и дешево, когда вы знаете, что вам нужно и какое устройство лучше всего использовать.

анонимное
источник
Вопрос заключается в том, как количественно оценить сокращение времени ЦП и использования памяти RTC по сравнению с отсутствием RTC в системе реального времени. Ваш ответ не отвечает на это.
труба
1
@pipe Это зависит от архитектуры процессора и требований. Это просто невозможно ответить с предоставленной скудной информацией. Мой ответ говорит, почему RTC должен быть там вместо общего бла-бла о том, как это могло бы быть без него. Программист и системный архитектор могут спроектировать хорошую систему и код и плохую систему и код с точки зрения времени, потраченного на синхронизацию.
Аноним
3

В большинстве систем единственным реальным преимуществом периферийного устройства RTC над другими формами учета времени является то, что измерения времени RTC не будут затронуты, когда остальная часть системы перейдет в спящий режим или - в некоторых случаях - будет полностью отключена. Многие периферийные устройства RTC на самом деле спроектированы таким образом, чтобы сделать их непрактичными для большинства целей, кроме записи приблизительного времени суток. Например, многие периферийные устройства RTC (вероятно, большинство, но, возможно, не большинство) ограничены временем сообщения с интервалом в одну секунду, и многие из них, по крайней мере, иногда требуют занятости в ожидании синхронизации при установке будильника или - в в некоторых случаях - даже просто пытаясь прочитать время. Как следствие, обычный способ использования RTC - просто скопировать его значение на более полезные часы при запуске, устанавливая его всякий раз, когда устанавливается «время стены»,

и любые четыре последовательных чтения будут гарантированно содержать два, которые соответствуют (и, следовательно, являются правильными), если между первым и последним не пройдет более 1/32768 секунды. Установка будильника может генерировать ложные события пробуждения, но последовательность:

  • отключить прерывание от защелки
  • установить время пробуждения до 0x7FFFFFFF тиков (около 9 часов) до настоящего времени
  • сбросить схему пробуждения
  • читать часы
  • если вновь прочитанное время указывает на то, что время пробуждения достигнуто, действуйте соответствующим образом
  • включить прерывание от защелки

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

Supercat
источник
«Реальные» RTC также предоставляют функции календаря (день месяца, день недели, високосные годы и т. Д.), Что может быть неудобно для реализации в программном обеспечении.
JimmyB
1
@JimmyB: Программное обеспечение, которое должно делать что-то нетривиальное с датами и временем, обычно так или иначе будет включать такую ​​логику, и возможность сохранять вещи в линейном формате, за исключением случаев, когда пользовательский ввод-вывод будет намного чище, чем преобразование из бесполезного BCD YMDhms к линейному времени каждый раз, когда он читает RTC и конвертирует обратно в бесполезный код при записи.
суперкат
1
@JimmyB: В качестве простого примера, если включить систему в то, что казалось 2016-03-01 00:30, и в последний раз она была включена в 2015-10-01 в 00:30:00, что время было бы? Программное обеспечение должно знать, что в феврале было 29 дней в 2016 году, чтобы определить, что время было 2015-02-29 23:30:00, так что именно покупает аппаратное обеспечение календаря?
суперкат
Чип RTC, указанный в OP, сам по себе правильно обрабатывает високосные годы.
JimmyB
1
@JimmyB: Если система включается в первый раз после перехода на летнее время, программное обеспечение должно быть в состоянии установить часы на один час назад. Если это происходит между полуночью и 1:00 утра, это, в свою очередь, потребует перенастройки календаря на день, что, в свою очередь, потребует понимания календарей. Действительно, если не требуется, чтобы пользователь вручную установил день недели, а также дату, самый простой способ применить летнее время - это работать с линейными датами.
суперкат
3

Похоже, это проблема терминологии, связанной с использованием термина «в реальном времени».

Часы реального времени

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

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

Альтернативой часам реального времени было бы использование программного обеспечения и внутренних таймеров, управляемых системными часами. Такой подход работоспособен (оригинальный IBM PC работал таким образом), но не особенно стабилен; он также потеряет информацию о дате / времени в любой момент, когда операционная система завершит работу, зависнет или произойдет сбой.

Система реального времени

Когда термин «в реальном времени» применяется к компьютерной системе или приложению, он описывает систему, которая реагирует на события реального мира за очень короткое, детерминированное время - часто всего за несколько миллисекунд, иногда меньше, с определенным порядком. одновременных входов. Системы реального времени используются для таких вещей, как управление машиной - робототехника, симуляции и игры. Хотя приложение реального времени может использовать информацию о текущем времени и дате, приложение не «в реальном времени» только потому, что оно использует текущее время и дату.

Часы реального времени против таймеров с высоким разрешением

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

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

Энтони Х
источник
1
В качестве небольшой подсказки «самое короткое [...] из возможных» не считается в реальном времени. Реальное время - это отклик в детерминистическом времени или с определенным порядком, если несколько событий происходят одновременно.
awjlogan
0

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

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

Что касается того, что означает RTC, я не могу сказать наверняка сам. Я знаю, что Linux - распространенный инструмент во встроенном мире, но я не уверен, насколько хорошо он работает для всех приложений реального времени. Многопоточность может сделать время выполнения недетерминированным, однако, когда аппаратное обеспечение значительно превышает требования к производительности, многие решения будут работать нормально даже в приложениях реального времени.

Тогда есть критически важные и низкоэффективные приложения. Одна желательная вещь здесь является детерминированным и часто более низким решением сложности. Здесь RTC можно использовать, очевидно. Linux может предоставлять специальный доступ к связанным с ним прерываниям. Мне кажется, что для детерминированного реального времени вам требуются не только rtc, но и прерывания или доступ к ним.

маршал ремесло
источник
1
Как именно соединение RTC со сторожевым таймером может гарантировать, что часы остаются «в фазе с различными вещами»?
Дмитрий Григорьев
Хорошо, если вы используете внешний источник тактовых импульсов, вы зависите от этого источника, а также от схемы, соединяющей его, например, емкостное сопротивление и сопротивление или полное сопротивление. Так что это описывается гармоническими колебаниями, решением которых является волна, а затем посмотрите фазовый угол и т. Д., А также применением микропроцессора, чтобы ответить на все ваши вопросы. К сожалению, все это необходимо учитывать во многих приложениях.
маршал ремесло
0

Вам понадобятся часы реального времени, если вы полагаетесь на безопасную связь с другими компьютерами в Интернете (не обязательно на 100%, но если у вас нет ссылки на местное время, вам нужно доверять чему-то другому, и вы можете ' доверять сертификатам, если вы не знаете дату).

Так что нет, он вам не нужен для всех систем реального времени. Однако, в зависимости от вашего приложения, вы все равно можете выбрать RTC в качестве наиболее энергоэффективного способа получения исправления хорошего времени после нахождения в состоянии низкого энергопотребления.

Шон Хулихейн
источник
Это не совсем так. Вы можете, например, доверять сертификату (особенно прикрепленному), даже если срок его действия истек или теоретически был выдан в будущем. Однако, как правило, лучше получить исправление NTP, прежде чем пытаться стать клиентом SSL; Естественно, что схемы безопасности для NTP должны быть спроектированы так, чтобы они работали без необходимости разумного представления о времени.
Крис Страттон
4
Чрезмерно преувеличенный и в то время как преувеличение - согревающая и красивая вещь, если она формирует главное сообщение, тогда это неправильно. Ни один из режимов работы шифров принципиально не требует времени или даты.
Пол Ушак