Gast
#328616
Wenn man ARM7+VIC mit nested Interrupt betreiben will: Ist es überhaupt möglich, das mit dem VIC korrekt durchzuführen? Der VIC hat zwar Prioritäten und diese wirken sich auf den Vektor aus, aber ohne nested Interrupts ist das nicht mehr als die Priorisierung der AVRs. Wenn man nun das Interrupt-Nesting wie von ARM und Philips beschrieben durchführt, ist m.E. die Priorisierung nicht vollständig korrekt. Beispielszenario: - Interrupt für Vektor #10 liegt an. - VIC liefert Vektor 10 und sperrt alle IRQs ab 10. - Handler für 10 schaltet IRQs wieder ein (nesting). - Interrupt für Vektor #5 liegt an. - VIC liefert Vektor 5 und sperrt alle IRQs ab 5. - Handler für 5 läuft durch. - Handler für 5 schreibt als Acknowledge ins Vektorregister. - Der Acknowledge gibt mangels Alternative alle IRQs wieder frei. - Handler für 5 returned, nun sind die IRQs wieder eingeschaltet. - Nun sind wir wieder im Handler für 10. ==> zu diesem Zeitpunkt kommen alle Interrupts durch, es sollten aber bei korrekter Handhabung der Prioritäten nur die diejenigen < 10 durchkommen dürfen <== Für korrekte Handhabung benötigt man m.E. etwas vergleichbar dem Stack für die laufende Priorität von Atmels ARM7. Zum VIC fehlt in der ARM-Doku und bei Philips die präzise Beschreibung der Arbeitsweise der Prioritätslogik. Und auch sonst habe nirgends etwas zu diesem Problem gefunden.