Тестирование Windows XP на выполнение задач реального времени

Тема в разделе "WASM.WIN32", создана пользователем rnPeace, 15 ноя 2006.

  1. rnPeace

    rnPeace New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    2
    Разрабатываю модель тестирования Windows XP на выполнение задач реального времени.
    Принцип модели - внешнее устройство(Atmega16 + макетная плата с RS232 интерфейсом) соединен с ПК через com порт.
    Устройство по своему системному времени(встроенный real time clock) засекает время и отправляет запрос на некое обслуживание, Windows принимает запрос, запускает поток с неким эмулированием обслуживания, после завершения выдает контроллеру сигнал окончания, тот находит разницу между временем запроса и временем ответа, что и есть время обслуживания.

    Модель создает несколько таких операций и строит график разниц этих времен.

    Обслуживание выполняю в режиме пользователя на realtime приоритетах и в режиме ядра в DPC. Оцениваю стабильность временных характеристик в обоих режимах.

    Меня интересуют Ваши коментарии и предложения по методу тестирования.
    Возник вопрос - в режиме ядра в DPC при не загруженной системе разница между итерациями включает в себя такую величену как 781мкс, есть ли у кого нибуть идеи, что это за время? Прикрепил скриншоты в обоих режимах.
    Буду рад всем ответам
     
  2. ubil

    ubil New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2004
    Сообщения:
    203
    Адрес:
    ODESSA:)
    Я как-то увлекался чем-то подобным - у меня получалось вполне стабильно ловить прерывания LPT с периодом в 100us, причем ловил прерывания в User Mode. 781 - что-то много, возможно можно сэкономить на лишнем создании потока, лучше его возобновлять по событию.
     
  3. Gennadij

    Gennadij New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    3
    Было подобное, работал из User-mode.
    CreateFile("COM1").
    Настройка параметров COM-порта функциями API.
    Вечный кайф ~20 раз в секунду по обмену данными.
    Кольцо работы с COM-портом веделял в отдельный поток.
    Передавал сообщения между потоками разными способами:
    - по Event, которым запускалась процедура COM-порта (WaitSingleObject - точно не помню). Ответ - WM_COMMAND
    основному окну програмы;
    - неименоваными каналами.
    Да, читать/писать в порт ReadFile, WriteFile.
    Успехов!