Модульные тесты для кода с интенсивным прерыванием - PullRequest
3 голосов
/ 02 марта 2010

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

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

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

1 Ответ

4 голосов
/ 02 марта 2010

Тема

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

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

...