Модульный тест ISR для встроенного голого металла - PullRequest
0 голосов
/ 20 февраля 2020

Хотя на целевом оборудовании могут работать разные системы модульного тестирования, у меня совершенно другой вопрос.

Я хочу провести модульное тестирование синхронизации данных между ISR и основным (и только) поток, возможно на стороне P C.

Концепция довольно проста: поскольку ISR не может быть прерван, я строю небольшую магистраль, чем использую / создаю данные, которые ISR хочет получить во всех oop, и для каждого l oop основное будет прервано в следующей строке (или лучше для каждой инструкции atomi c), а результат / согласованность результата проверены.

Грубое принуждение всех возможных комбинаций должно занять очень мало времени и дать достойное тестовое покрытие, без необходимости работать на аппаратном обеспечении и пропустить некоторую ситуацию «почти никогда, но когда это случается, это идет бум».

Пока у меня была пара идей :

  1. в двоичном файле сборки, для каждой строки «главного», добавьте переход к функции батута, которая решит, нужно ли запускать ISR
  2. каким-то образом взаимодействовать с эмулятором, таким как qemu (это также должно гарантировать, что если инструкция ASM не является атомарной по своей природе c может быть разделена)

Есть ли что-нибудь там? Если нет, то в его подходе что-то не так?

...