Hallo, ich bin gerade dabei mich in die ARM-Architektur einzuarbeiten und habe einige Fragen zu den Interrupts: Wie werden Interrupts in die Pipeline hinzugefügt? Werden diese an letzter Stelle hinzugefügt, oder wird ein Interrupt sofort ausgeführt? Die Frage stellt sich mir, da ich einige Stellen im Code habe, die auf gemeinsame Variablen zugreifen und ich hier die Interrupts kurzzeitig deaktivieren will. Auf was muss ich hier achten? Und kennt jemand eine C bzw. Header-Datei um auf den CP-15 zuzugreifen(Enable/Disable ICache,DCache & MMU, Invalidate Cache, TLB, Instruction Memory Barrier, ...) Danke
Mars schrieb: > Wie werden Interrupts in die Pipeline hinzugefügt? Werden diese an > letzter Stelle hinzugefügt, oder wird ein Interrupt sofort ausgeführt? Ein Interrupt wird immer dann ausgeführt, wenn ein Befehl die Execution Stage der Pipeline verlässt. > Die Frage stellt sich mir, da ich einige Stellen im Code habe, die auf > gemeinsame Variablen zugreifen und ich hier die Interrupts kurzzeitig > deaktivieren will. Auf was muss ich hier achten? Auf nichts. Beim ARM7 gibt es da Besonderheiten, vom ARM9 ist mir nichts dergleichen bekannt. > Und kennt jemand eine C bzw. Header-Datei um auf den CP-15 > zuzugreifen(Enable/Disable ICache,DCache & MMU, Invalidate Cache, > TLB, Instruction Memory Barrier, ...) Leider nicht. Gruß Marcus http://www.doulos.com/arm
Mars schrieb: > Und kennt jemand eine C bzw. Header-Datei um auf den CP-15 > zuzugreifen(Enable/Disable ICache,DCache & MMU, Invalidate Cache, TLB, > Instruction Memory Barrier, ...) Ist bei jedem Compiler anders.
Hallo Marcus, danke für deine Antwort. Rein aus Interesse, wie sieht dies beim ARM7 aus? @A. K. Aber auch nur wie Inline-Assembler eingebettet wird (ob jetzt asm() oder __asm { } oder ...).
Ja, aber nur darum geht es dabei doch, zumal das grad bei GCC einerseits ausserordentlich flexibel und leistungsfähig andererseits etwas gewöhnungsbedürftig ist. Ausserdem kann's ja sein, dass sich in einer Entwicklungsumgebung sowas schon fertig findet.
Natürlich hast du bei den ASM-Einzeilern Recht, allerdings sollte es nicht so schwer sein per define für gcc, IAR und Keil angepasste ASM-Statements zu erzeugen. Abgesehen davon gibt es ja auch kompliziertere Funktionen um zB. eine VA in eine PA umzurechenn oder für eine Instruction Memory Barrier.
Mars schrieb: > danke für deine Antwort. Rein aus Interesse, wie sieht dies beim ARM7 > aus? http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3783.html http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3784.html Gruß Marcus http://www.doulos.com/arm/
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.