системное время что это
Вся правда об ОСРВ. Статья #27. Системное время
Понятие времени в контексте ОСРВ была введена в одной из предыдущих статей, вместе с идеей о связанных со временем функциях, доступных в ОСРВ.
Тик таймера
Все функции, связанные со временем, управляются аппаратными часами. Это простой осциллятор, который генерирует запросы на прерывание с постоянными интервалами. Чтобы номера тактов имели смысл для прикладных программ, частота генератора должна быть известна.
Обработки таймерных прерываний
Прерывания, генерируемые аппаратным таймером, должны обслуживаться определенным образом в обработчике прерываний (англ. Interrupt Service Routine, ISR), в котором реализованы все функции ОСРВ, связанные со временем. Детали обработчика прерываний таймера в Nucleus SE будут рассмотрены в одной из следующих статей.
Функции, связанные со временем
Nucleus RTOS и Nucleus SE содержат несколько механизмов, связанных со временем:
Точность
А сейчас стоит вкратце рассказать о точности системного таймера.
Точность временных функций напрямую зависит от частоты тактового генератора. Например, если импульсы поступают каждые 10 миллисекунд, а задаче приложения необходима задержка в 100 миллисекунд, ей очевидно нужно 10 импульсов. Однако неизвестно, когда был получен предыдущий импульс: это могло произойти только что или почти 10 миллисекунд назад. Поэтому 100-миллисекундная задержка может занять вплоть до 110 миллисекунд.
Очевидный способ решения этой проблемы — повышение частоты генератора. Если импульсы следуют с интервалами в 1 миллисекунду, 100-миллисекундная задержка никогда не займет больше ста одной миллисекунды. Недостатком такого решения будет то, что обработчика прерываний таймера заберет в 10 раз больше процессорного времени, что будет чрезмерным. Разработчик системы должен найти баланс между необходимой точностью таймера и доступными мощностями процессора.
Настройка системного времени
Как и для большинства объектов Nucleus SE, настройка системного времени по большей части управляется директивами #define в файле nuse_config.h. Основным параметром является NUSE_SYSTEM_TIME_SUPPORT, который активирует механизм поддержки системного времени. Количество объектов указывать не нужно: системное время либо активировано, либо нет.
Выбор ненулевого значения является главным активатором системного времени. Этот параметр используется при определении структур данных, о которых будет подробно рассказано далее в этой статье. Кроме того, ненулевое значение активирует настройки API.
Активация API
Каждая функция API (служебный вызов) в Nucleus SE имеет активирующую директиву #define в файле nuse_config.h. Для системного времени такими символами являются:
NUSE_CLOCK_SET
NUSE_CLOCK_RETRIEVE
По умолчанию, им присваивается значение FALSE, таким образом все служебные вызовы отключены, блокируя включение реализующего их кода. Для настройки системного времени в приложении нужно выбрать необходимые служебные вызовы API и присвоить им значение TRUE.
Ниже приведен фрагмент кода из файла nuse_config.h по умолчанию.
При попытке использования служебного вызова API системного времени при выключенном активаторе системного времени произойдет ошибка компиляции. Если ваш код использует вызов API, который не был активирован, произойдет ошибка компоновки, так как код реализации не был включен в приложение.
Служебные вызовы системного времени
Nucleus RTOS поддерживает два служебных вызова, которые относятся к системному времени и обеспечивают следующий функционал:
Служебные вызовы установки и получения системного времени
С системным временем можно выполнять только операции установки в заданное значение и получения текущего значения. Nucleus RTOS и Nucleus SE предоставляют по два базовых вызова API для реализации этих операций.
Интерпретация значения системного времени зависит от приложения, так как является по своей сути счетчиком количества «тактов» часов, которые произошли с момента последнего сброса счетчика. Для использования этой информации должна быть известна частота генератора.
Установка времени
Любая задача может установить системное время при помощи вызова этой функции API.
Вызов для установки системного времени в Nucleus RTOS
Прототип служебного вызова:
VOID NU_Set_Clock(UNSIGNED new_value);
Параметры:
new_value – значение, которое будет присвоено системному времени
Возвращаемое значение: отсутствует.
Вызов для установки системного времени в Nucleus SE
Этот вызов API поддерживает основной функционал Nucleus RTOS API.
Прототип служебного вызова:
void NUSE_Clock_Set(U32 new_value);
Параметры:
new_value – значение, которое будет присвоено системному времени
Возвращаемое значение: отсутствует
Реализация установки времени в Nucleus SE
Код очень прост. Предоставленное значение записывается в NUSE_Tick_Clock внутри критической секции.
Получение системного времени
Задача может получить значение системного времени при помощи этой функции API.
Вызов для получения системного времени в Nucleus RTOS
Прототип служебного вызова:
UNSIGNED NU_Retrieve_Clock(VOID);
Возвращаемое значение: текущее значение системного времени
Вызов для получения системного времени в Nucleus SE
Прототип служебного вызова:
U32 NUSE_Clock_Retrieve(void);
Возвращаемое значение: текущее значение системного времени
Реализация получения времени в Nucleus SE
Код очень прост. Функция возвращает значение NUSE_Tick_Clock, полученное в критической секции.
Структуры данных
Системное время использует одну структуру данных (находящуюся в ОЗУ), которая представляет из себя 32-битное слово.
Настоятельно рекомендую, чтобы код приложения не использовал прямой доступ к этой структуре данных, а обращался к ней через предоставляемые функции API. Это позволит избежать несовместимости с будущими версиями Nucleus SE и нежелательных побочных эффектов, а также упростит портирование приложений на Nucleus RTOS. Подробная информация о структурах данных приведена ниже, чтобы упростить понимание работы кода служебных вызовов и для отладки.
Данные ОЗУ
Структура данных:
NUSE_Tick_Clock – переменная типа U32, в которой хранится счетчик тактов системного времени.
Эта структура данных инициализируется нулём функцией NUSE_Init_Task() при запуске Nucleus SE. Одна из следующих статей будет содержать полное описание процедур запуска Nucleus SE.
Данные ПЗУ
В ПЗУ нет структур данных, связанных с системным временем.
Объем памяти для системного времени
Как и у всех других объектов Nucleus SE, объем памяти, необходимый для системного времени, предсказуем.
Объем памяти в ПЗУ равен 0.
Объем памяти в ОЗУ (в байтах) всегда равен 4.
Нереализованные вызовы API
Все служебные вызовы API Nucleus RTOS, относящиеся к системному времени, имеют эквивалент в Nucleus SE.
Совместимость с Nucleus PLUS
Как и в случае со всеми другими объектами Nucleus SE, моей целью было обеспечение максимально возможной совместимости кода приложений с Nucleus RTOS. Системное время не является исключением и, с точки зрения пользователя, оно реализовано во многом также, как и в Nucleus RTOS. Вызовы API Nucleus RTOS могут быть напрямую перенесены на Nucleus SE.
В следующей статье мы рассмотрим программные таймеры.
Что означает системное время?
Что такое системное время?
Системное время — это текущая дата и время суток. Система отслеживает время, так что ваши приложения имеют свободный доступ к точному времени. Система основывает системное время на всемирном координированном времени (UTC). Основанное на UTC время примерно определяется как текущая дата и время дня в Гринвиче, Англия.
Как работают системные часы?
Чтобы синхронизировать все операции компьютера, используются системные часы — небольшой кварцевый кристалл, расположенный на материнской плате. Системные часы регулярно посылают сигнал всем остальным компонентам компьютера.
Как проверить системное время?
В правом нижнем углу экрана найдите часы. Щелкните часы правой кнопкой мыши и выберите «Настроить дату / время».
Что означает системная дата?
Текущее время дня в компьютере, которое поддерживается батареей, когда компьютер выключен. Он используется для отметки времени всех вновь созданных файлов и активации процессов, зависящих от времени.
Какая польза от системных часов?
Системные часы или системный таймер — это непрерывный импульс, который помогает часам компьютера сохранять правильное время. Он ведет счет количества секунд, прошедших с начала эпохи, и использует эти данные для вычисления текущей даты и времени.
Как установить текущее время?
Установить время, дату и часовой пояс
Можно ли использовать часы реального времени в качестве системных часов?
В некоторых источниках термин часы реального времени взаимозаменяем с термином системные часы. Часы реального времени существуют во многих встроенных системах и отслеживают время, дату, месяц и год. … Обычно они интегрированы с DRAM с батарейным питанием, как показано на рисунке 11.1.
Компьютерные часы точны?
По этой причине большинство компьютеров с Windows настроены на синхронизацию («синхронизацию») своих системных часов с серверами времени в Интернете, которые являются чрезвычайно точными. … Результат: ваши часы Windows — одни из самых точных из имеющихся у вас.
Зачем нужны часы?
Использование (сигнальных) часов в цифровых схемах позволяет синхронизировать все операции в схеме или системе. Часы могут способствовать изменению состояний триггеров. … Цепи, использующие тактовый сигнал для синхронизации, могут стать активными либо по переднему, либо по заднему фронту тактового сигнала.
Как установить системное время и дату на постоянной основе?
Чтобы предотвратить его изменение, отключите синхронизацию времени.
Как установить дату и время?
Обновите дату и время на вашем устройстве Android
В какое время используется crontab?
Формат времени работы Cron
Задание cron запускается каждый раз, когда системные часы показывают 7 утра (7 вечера будет кодироваться как 19). День месяца — 7, что означает, что задание запускается каждый 7-й день месяца. Числовой месяц — 7, что означает, что задание будет выполняться только в июле.
Как можно установить точную дату и время?
Все ПК имеют электронную схему, называемую «часами реального времени», которая отслеживает дату и время. Схема получает питание от батареи, поэтому, когда вы выключаете компьютер, часы продолжают отсчитывать точное время. Операционная система Windows считывает данные часов всякий раз, когда ей требуется текущая дата или время.
Что такое микрофильмирование?
Микрофильм — это миниатюрная фотографическая репродукция документа. … Микрофильм — отличный способ для библиотек хранить множество документов на небольшом пространстве.
