Forum: Mikrocontroller und Digitale Elektronik ARM: (PXA270) Fast Interrupt mit Prozess "verknüpfen"


von Christian (Gast)


Lesenswert?

Hi,

ich hoffe das hier ist das richtige Forum. Also ich hab hier einen
PXA270 auf dem 2 Prozesse laufen sollen. Einer zum Messen und einer zum
Versenden der Daten. Der Messprozess soll aufjedenfall höchste Priorität
haben. Ich wollte ihn mit einem FIQ aktivieren. Das Problem ist jetzt,
das ich nicht weis wie ich dem OS oder dem Prozessor sagen kann , das er
bei einem Fiq an einem bestimmten Pin nur den Messprozess und bei allen
sonstigen IRQ's andere Prozesse auslösen soll.

Ich hab in der Reference Manual was von einer Interrupt Vektor Tabelle
gelesen. Kann ich da für den Fiq einfach den Einsprungspunkt einer
Funktion für meinen Messprozess eintragen?

Ich arbeite das erste mal mit Mikrocontrollern (und mit ARM Assembler)
und weis einfach nicht weiter...

danke im voraus.

PS: ich hab diese Frage schon in PC Programmierung gestellt... war wohl 
das falsche Forum.

von Dominic R. (dominic)


Lesenswert?

> wie ich dem OS

Um welches OS handelt es sich denn?

Gruß,

Dominic

von Christian (Gast)


Lesenswert?

Gute Frage, hab ich glatt vergessen. Es ist ein Colibri PXA270 von 
Toradex. Auf ihm ist WinCE 5.0 installiert.

von Christian (Gast)


Lesenswert?

Auf der Herstellerseite gibt es zwar ein Codebeispiel zur 
Interruptbehandlung unter WinCE, aber ich glaube nicht das es auch FIQ 
behandelt. Außerdem ist keine brauchbare Dokumentation vorhanden (der 
Hersteller kann beispielsweise für die Hardware Abstraktion Layer 
defines für WinCE festlegen... das bringt aber nichts wenn es keine 
Übersicht und Beschreibung zu diesen defines gibt).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann wirst Du Dich mit der Devicetreiberentwicklung unter Windows CE 
beschäftigen müssen - um Interrupts "auszuwerten" bedarf es eines 
Interrupthandlers, und so etwas wird unter Windows CE in Devicetreibern 
abgewickelt.

Am OS vorbei selbst in der Interrupttabelle herumzuschreiben ist hier 
wohl keine gute Idee.

von Christian (Gast)


Lesenswert?

Oje... ich hab gar keine Ahnung von Devicedriver Entwicklung. Ich wüsste 
gar nicht was der Treiber alles behandeln soll. Und dann muss ja auch 
die Kommunikation mit anderen Prozessen geregelt werden. Kann ein 
Treiber eigentlich für eine bestimmte Zeit in Echtzeit laufen oder kann 
die Ausführung eines Treibers unterbrochen werden? Die Interrupts kann 
man ja deaktivieren, aber nicht das mir das WinCE noch mit dem 
Prozessscheduler in die Quere kommt.

Ist es vieleicht möglich die Interruptregister so zu konfigurieren das 
ein Interrupt an einem Pin automatisch ein FIQ ist (und dann hoffentlich 
vom OS richtig behandelt wird)?

von Dominic R. (dominic)


Lesenswert?

Kurzes Googlen hat bzgl. Windows CE + FIQ das hier gefunden:
http://msdn2.microsoft.com/en-us/library/ms904915.aspx

Der PXA270 hat einen ziemlich mächtigen Interrupt Controller, mit dem es 
bestimmt möglich ist, einen von einem GPIO Input ausgelösten Interrupt 
als FIQ zu routen - im PXA270 Developer's Manual steht mehr dazu (Kap. 
24 GPIO Controller, Kap. 25 Interrupt Controller).

Gruß,

Dominic

von Christian (Gast)


Lesenswert?

Danke

manchmal kommt man nicht auf die einfachsten suchanfragen. Ich werd es 
jetzt mal mit einer installable ISR und dem IRQ -> FIQ routing 
versuchen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.