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.
> wie ich dem OS
Um welches OS handelt es sich denn?
Gruß,
Dominic
Gute Frage, hab ich glatt vergessen. Es ist ein Colibri PXA270 von Toradex. Auf ihm ist WinCE 5.0 installiert.
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).
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.
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)?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.