Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: драйвер Real Time Clock (типо int 70 b DOS )  (Прочитано 20050 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dzinas
Гость
« : 26-06-2008 20:05 » 

Пожалуйста помогите найти материал для драйвера Real Time Clock
 
Записан
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #1 : 27-06-2008 06:55 » 

RTC драйвер? Какая ОС? там же просто 2 порта для записи и 2 порта для чтения. Какого рода информация нужна?
Записан
dzinas
Гость
« Ответ #2 : 27-06-2008 07:52 » 

Извините, если не точно выразился, имею в виду Real Time Clock  - IO ports 70h/71h,
который  был в ДОС, есть и в Windows.
Там есть 3 прерывания :
       периодическое, будильник и по обновлению часов.
Для очень быстрого компютера
периодическое прерывание может произойти быстрее 1 милисекунды.
Имел в виду драйвер для этого.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 27-06-2008 09:33 » 

dzinas, сурьезно... боюсь этот таймер активно используется операционкой...  и перепрограммировать его - наверное не очень хорошая мысль. устройство "CMOS и часы": 70-71 порт + одно прерывание.

хотя возможно получится за него зацепится, но опять же - "возможно".. штатно - попытаться повесить прерывание на тот же порт. но боюсь ОС не позволит.
совсем штатно - DPC Timer как раз от него должен считаться, но там разброс параметров соответственно больше.
а нештатно... напрямую лезть в таблицу прерываний, и подменять вектор на свой.

а вам зачем? по моим многочисленным опытам такое разрешение таймера в винде - бессмысленно и беспощадно)

Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #4 : 27-06-2008 10:40 » 

Однажды несколько лет наэад я пробовал RTC на W98, там сразу можно было
попасть в R0 и перехватить с IDTR вектор прерыванич для RTC, тогда шло все.
Прерывание там правильно - одно - но источника 3, и все происходят по
разным временам. Вот я и захотел попробовать то же в XP. Но как добратся
до IDTR из Kernel Mode ?
А кстати через RTC хороший PC может обработать до 125 микросекунд прерывания.
Вот и прошу помощи.)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 27-06-2008 11:02 » 

а в чем проблемма до нее добраться?) точно так же зайти в ring-0 и вперед... аль не так?)

вобще идея интересная... а то меня вечно терзают... всякими вопросами дурацкими... по поводу реализации RT обработки в винде)
 Перекур
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #6 : 27-06-2008 11:38 » 

 в настоящий момент - стыдно, но не захожу в R0 W2000 >= Жаль
А в 95.98 все легко было - 6 или 8 комманд сам переход по моему
занимал и все.

С RTC периодические 1 милисек. прерывания принимались в
Пентюм II 300 MHZ и винда не запиралась Улыбаюсь
А сейчас техника - зверь.

Вообще у меня кружитса идея внутреннего монитора,
живущего на RTC вне пределах ОС. Может идея по себе
бонапартовская, но ... Улыбаюсь

RTC принимает IRQ (одно) - но от установленного периода
(до 125 микро), от обновления часов (до 60 раз в сек)
от любой установки будильника.
 
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 27-06-2008 12:36 » 

поищи на "RTX Ardence" под Windows. идея не так уж и плоха)))

в r-0 зайти - драйвером, идея интересная, поэтому могу даже обертку такого драйвера написать... на голом "С")

правда увы - ничто не ново под луной... боюсь в сравнении с тем же RTX ... Краснею
там уже все есть...
доступ к сопроцессору в ring-0.
таймеры по 1мкс
менеджер процессов
менеджер памяти
возможность доступа к аппаратным ресурсам, без конфликтов с винями.
и главное - интерфейсы в винь.
правда цена этой игрушки сумма с четырьмя нулями... Быть такого не может
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #8 : 27-06-2008 14:16 » 

конечно, обертку для драйвера хотел бы, както неуютно это место пока для меня Улыбаюсь
Кинул глаз, поверхностно на RTX, если правильно понял - там пишут

    Ardence RTX is a software solution that gives developers deterministic control of Windows XP-    based systems that require a high level of performance and scalability.

Также там говорится про -  hard threads, про в виртуальной машине Real Time, где
раскручены Dedicated  и не Dediceted 2003.

В обсуждаемом случае - контроль W через RTC Monitor - програмное решение -
нелезущие в W и гарантирующее MAX время, перерезывая накопленные гордиевские узлы Улыбаюсь
 
Так быстро разогрели разговор, даже тепло Улыбаюсь
Записан
sanjaaaa
Гость
« Ответ #9 : 28-06-2008 03:56 » 

    Так ведь кроме RTC в компе есть системный таймер 8253/8254. Его частота счёта - 1193180 Гц. Т. е. реально измерять время с разрешением 0.8 мкс. И прерывание от него есть. Правда он 16 битный (max измеряемое время ~ 55 мс). Самое точное измерение времени - счётчик тактов проца (команда RDTSC помещает в EAX, EDX количество тактов от включения компа).
    А вообще интересно что используется в современных компах в качестве таймера. Даже разрешение системных функций винды - 100 нс. Факт что не таймер. 
Записан
dzinas
Гость
« Ответ #10 : 28-06-2008 08:01 » 

часть чипсета - 8253 - оттого и зовется системны таймером, что через него все крутится вертится
( насколько я понимаю), практически он бывает несколько милисекунд.
RDTSC хорош для измерения интервала. По моему реализация RTC тоже в чипсете,
100 наносекунд - это уйма времени для кучи команд на современном компютере - легко
посчитать. А меня очень интересует скелет драйвера по прерыванию или доступу к
регистру IDTR.
Записан
sanjaaaa
Гость
« Ответ #11 : 29-06-2008 05:32 » 

Цитата
( насколько я понимаю), практически он бывает несколько милисекунд.

      Практически и теоретически он всегда считает на частоте - 1193180 Гц. И по его переполнению возможно прерывание IRQ0. Программируется он записью в него начального значения счёта. Т. о. можно менять частоту генерации прерывания. Но скорее всего IRQ0 как раз использует Windows для переключения задач. Поэтому перепрограммировать этот таймер я бы не стал.

Цитата
100 наносекунд - это уйма времени для кучи команд

       Я имел в виду что например виндовая функция KeQuerySystemTime возвращает результат в 100 нс интервалах.  Таймером 8253/8254 так точно время не измерить. Поэтому скорее всего в винде используются другие таймеры. Например APIC - таймер, ACPI - таймер, HPET - таймер. Частоты этих таймеров больше и на прерывания они вешаются.
       Вполне возможно что не все они используются виндой, какой нибудь из них можно использовать для своих целей без вреда для системы.
Записан
dzinas
Гость
« Ответ #12 : 29-06-2008 07:18 » 

Если говорим про 8253,  да он всегда считает физически на частоте - 1193180 Гц,
и эта опорная частота в разной упаковке пользуется во многих функциях винда,
но я хотел бы вернутся к изначальному вопросу
   Real Time Clock,
который физически ни как не связывается с вышеупомянутым таймере (IRQ0) и работает
отдельно через IRQ8.
IRQ0,IRQ8 линии запроса прерывания а не само прерывание.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 30-06-2008 08:51 » 

dzinas, про RTX - не только перечисленное. фактически он позволяет часть кода переносить на уровень Ring-0, причем может блокировать выполнение самой windows. а так же обладает жестким планированием потоков. грубо говоря пока вы управление не вернете - больше ни ни один поток выполнятся не будет)


теперь насчет обертки. Вопрос - что там хочется иметь?
потому что на самом деле, "пустая" обертка драйвера состоит из пары функций DriverEntry/Unload)
ну еще могут быть Create/Read/write/close фунции. и еще DeviceIOControl функции.
опишите процесс как он вам видится? я так понимаю нужен кусок кода куда можно вставить __asm{} ? 
что то еще?

sanjaaaa, про RDTSC.
этот крайне полезный но чрезвычайно капризный счетчик, ведет себя крайне нестабильно на новых компах.
по крайней мере на Sony-ноутах с Core Duo - явно врет. причем независимо от установленной схемы управления питанием.
я пытался его использовать в приложении для отсчета пауз. в общем не работает как надо и все тут!
в драйвере использовал KeStallExecutionProcessor()

и кстати! на новый матерях - функция QueryPerformanceFrequency возвращает не частоту RDTSC счетчика(по идее равную частоте проца), а частоту ACPI таймера (3579545 Гц).

PS насчет 100нс - опять же, таймер то такой есть... но реально в видне - разброс его DPC до единиц мкс. так что это все - на будущее.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #14 : 30-06-2008 13:31 » 

при исследованиях RTC, о коих начинали говорить, винда нужна для приома на оработчик прерывания.
То что R0 может работать на C - по моему недоразумение Улыбаюсь
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 01-07-2008 08:07 » 

ничего не понял...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #16 : 01-07-2008 10:24 » 

звините за нескладную формулировку в разговоре. Конкретно ситуация такова.
Эсть некоторые идеи по поводу применения RTC в среде 2000. Нужен нормальный скелет
драйвера, работающего на прерываниях в Ассеблере. В данный момент интересует
лишь: минимум - kernel mode driver,
      максимум - достать IDTR из KERNEL MODE.


Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 01-07-2008 11:29 » 

что значит "скелет драйвера работающего на прерываниях" да еще и в ассемблере?)
и при чем тут вообще прерывания?

насчет достать IDT: sidt/lidt - никто не отменял, в чем проблемма то?))
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #18 : 01-07-2008 15:12 » 

RTC надо SIDT. попробуйте поковырять.
Wikipedia CPU

At a minimum, any CPU with this type of architecture will support at least two distinct operating modes, and at least one of the modes will provide completely unrestricted operation of the CPU. The unrestricted mode is usually !!!called kernel mode, but many other designations exist (master mode, supervisor mode, privileged mode etc.)!!! . Other modes are usually called user modes, but are occasionally known by other names (slave mode etc.).

Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 02-07-2008 12:27 » 

гы)
PS так это оказывается я ковырятся буду)))
« Последнее редактирование: 02-07-2008 14:07 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dzinas
Гость
« Ответ #20 : 03-07-2008 06:43 » new

спасибо за помощь, Ваши замечания ценны. Ждите новостей  с RTC Ага
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines