2010-03-01 3 views
3

J'écris du code C pour une puce AVR. Le code est lourd sur les routines de service d'interruption qui attendent sur les ports série, les CAN et les minuteurs. Les ISR écrivent dans des tampons que la boucle principale examine lorsqu'elle leur parvient.Tests unitaires pour le code d'interruption-lourde

Je conçois les tampons afin que les ISR puissent les mettre à jour pendant que la boucle principale les lit. Je veux vérifier que cela fonctionne. J'ai des tests unitaires pour valider le fonctionnement de base, mais je ne sais pas comment tester ce qui se passe si une interruption se déclenche pendant que la boucle principale lit un tampon. Mes tests unitaires sont vraiment basiques - un peu de code dans une section main(). Je cours les tests sur ma machine Linux.

Répondre

3

Fils de discussion? Lancez un thread de haute priorité qui appelle votre ISR à un taux similaire à la réalité. Ensuite, dans votre main, faites le tampon relu encore et encore dans une boucle. Validez que le tampon lu n'est pas corrompu.

(Peut-être est plus d'un test d'intégration d'un test unitaire pur.)

+0

Je pense qu'il peut être beaucoup de travail en utilisant des threads pour simuler le calendrier d'interruption. Je me demande si ce type de test est assez commun qu'il existe un paquet qui l'implémente. – iter