Atmel AT91SAM7A3 (ARM) - Aufruf eines Software-Interrupts braucht extrem lang

OP #1413914
Hallo,

ich nutze ein etwas älteres AT91SAM7A3-DK Board von Atmel für die 
Portierung einer Firmware auf ARM. Hierfür würde ich gerne 
Software-Interrupts verwenden um vom User-Mode in den Supervisor-Mode zu 
springen. Eigentlich sollte dieser Aufruf mit den nachfolgenden Code nur 
ein paar Zyklen dauern, in Realität benötigt er allerdings etwa 500-700 
ms. Die LED, die hier angesteuert wird, blinkt extrem langsam.

Hat jemand eine Idee woran dies liegen könnte?

LG,
jojob
1
reset_vector:
2
   ldr      pc, =reset_handler      // Reset
3
[...]
4
swi_vector:
5
   ldr      pc, =swi_handler         // Software Interrupt
6
[...]
7
reset_handler:
8
   // Enable Main Oscillator, Set PLL to 96 MHz, Set MCK to 48 MHz, Set up default interrupt handler
9
   // Memory remap
10
   // Stack init
11
   // Copy data section
12
   // Clear bss section
13
   // branch to main
14
[...]
15
swi_handler:
16
   movs   pc, r14

1
int main(void) {
2
   while (1) {
3
      asm("swi #1");
4
      PIOA->PIO_CODR = LED_A;
5
      asm("swi #1");
6
      PIOA->PIO_SODR = LED_A;
7
   }
8
   return 0;
9
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.