2010-03-01 4 views
3

Я пишу код C для чипа AVR. Этот код тяжел для подпрограмм прерывания, которые ждут последовательные порты, АЦП и таймеры. ISR записывают в буферы, которые основной цикл анализирует, когда они добираются до них.Модульные тесты для кода с прерывистым кодом

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

Мой модульный тест действительно базовый - некоторый код в main() finction. Я запускаю тесты в своем ящике Linux.

ответ

3

Темы?

Запустите высокоприоритетную нить, которая называет ваш ISR в некоторой степени похожей на реальную вещь. Затем, в основном, повторите чтение буфера снова и снова в цикле. Убедитесь, что чтение буфера не повреждено.

(Может быть, это скорее интеграционный тест, чем модульное тестирование чистого.)

+0

Я ожидаю, что это может быть много работы с использованием потоков для имитации прерывания синхронизации. Интересно, достаточно ли этот тип тестирования, что существует пакет, который его реализует. – iter

 Смежные вопросы

  • Нет связанных вопросов^_^