1 / 56

ESI Lektion 7-8

ESI Lektion 7-8. ESI – Lektion 7-8. ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden Microcontrollers ARM Busse Externe Speicherschnittstelle. ARM Stacks. Memory Map des NXP LPC2138. 4.0 GB. 0xFFFF FFFF. AHB Peripherals. 3.75 GB. 0xF000 0000.

justis
Download Presentation

ESI Lektion 7-8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ESI Lektion 7-8

  2. ESI – Lektion 7-8 ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden Microcontrollers ARM Busse Externe Speicherschnittstelle

  3. ARM Stacks

  4. Memory Map des NXP LPC2138 4.0 GB 0xFFFF FFFF AHB Peripherals 3.75 GB 0xF000 0000 VPB Peripherals 3.5 GB 0xE000 0000 3.0 GB 0xC000 0000 Reserved for External Memory 2.0 GB 0x8000 0000 Boot Block Reserved for On-Chip Memory Stack Pointer On-Chip Static RAM 0x4000 0000 1.0 GB Reserved for Special Registers Main Code 0x3FFF 8000 Reserved for On-Chip Memory ExceptionVectors On-Chip Non-Volatile Memory 0.0 GB 0x0000 0000

  5. System & User FIQ Abort IRQ Undefined Supervisor R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R7_fiq R7 R7 R7 R7 R7 R8_fiq R8 R8 R8 R8 R8 R9_fiq R9 R9 R9 R9 R9 R10_fiq R10 R10 R10 R10 R10 R11_fiq R11 R11 R11 R11 R11 R12_fiq R12 R12 R12 R12 R12 R13_fiq R13_abt R13_irq R13_und R13 R13_svc R14_fiq R14_abt R14_irq R14_und R14 R14_svc R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) CPSR CPSR CPSR CPSR CPSR CPSR SPSR_fiq SPSR_abt SPSR_irq SPSR_und SPSR_svc ARM7 Stack Pointer Register Stack-Pointer

  6. ARM7 Stackpointer im RAM

  7. Cortex-M3 Stackpointer im RAM RAM MSP PSP

  8. ARM7 Current Processor Status Register (CPSR) Condition Code Flags: N = NegativeZ = Zero C = Carry Over V = Overflow (Ergebnis grösser als Platz im Register) F = 1 FIQ disableI = 1 IRQ disable T = 1 Thumb mode Betriebszustand:FIQIRQ Supervisor UserUndefined

  9. ARM7 Initialisieren der Stack Pointer direkt im Startup.s // Setup Stack for each mode LDR R0, =Top_Stack // Enter Undefined Instruction Mode and set its Stack Pointer MSR CPSR_c, #Mode_UND|I_Bit|F_Bit //Switch to Undefined, disable Interrupt MOV SP, R0 SUB R0, R0, #UND_Stack_Size // Enter Abort Mode and set its Stack Pointer MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit //Switch to Abort, disable Interrupt MOV SP, R0 SUB R0, R0, #ABT_Stack_Size // Enter FIQ Mode and set its Stack Pointer MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit //Switch to FIQ, disable Interrupt MOV SP, R0 SUB R0, R0, #FIQ_Stack_Size

  10. ARM7 Initialisieren der Stack Pointer im uVision

  11. Cortex-M3 Stack Push • Stack Pointer zeigt immer auf die letzten Daten die abgespeichert wurden • Wird vor einer Push Operation dekrementiert

  12. Kopieren von mehreren Registern mit einem Befehl Abspeichern von mehreren Registern auf den Stack STMFD R13!, {[registers], R14} Zurückholen der Register vom Stack: LDMFD R13!, {[registers], PC}

  13. Cortex M3 Interrupt Controller (NVIC)

  14. Cortex-M3 Blockdiagram

  15. Cortex-M3 Exception Vectors

  16. Cortex-M3 Interrupt Stacking

  17. Cortex-M3 Stack While Fetch

  18. Cortex-M3 Interrupt Stacking

  19. Cortex-M3 Interrupt Stacking Bei jedem Interrupt werden 8 x 4 Bytes gestacked = 32 Bytes

  20. Übung1: Stacking Was sind die Inhalte der Coretex-M3 Register unmittelbar nach Rückkehr in das Hauptprogramm? Füllen Sie die Lücken unten aus. Während der Interruptroutine enthielt das Stack Pointer Register den Wert 0x30000000DF

  21. Übung 1: Stacking - Lösung Was sind die Inhalte der Coretex-M3 Register unmittelbar nach Rückkehr in das Hauptprogramm? Füllen Sie die Lücken unten aus. Während der Interruptroutine enthielt das Stack Pointer Register den Wert 0x30000000DF

  22. Cortex-M3 Interrupt Situationen • Tail Chaining Interrupts • Ein Interrupt gleicher oder niedrigerer Priorität folgt unmittelbar nach einem Interrupt • Pre Empt Interrupts • Ein Interrupt höherer Priorität der signalisiert wird, während ein interrupt niedrigerer Priorität initiiert wird, wird noch vor Ausführung des niedriger priorisierten Interrupts vorgeschoben • Nested Interrupts • Ein Interrupt höherer Priorität unterbricht einen laufenden Interrupt niedrigerer Priorität

  23. Tail Chaining Situation 1 Cortex-M3 Interrupt mit gleicher oder niedrigerer Priorität folgt sofort im Anschluss

  24. Tail Chaining Situation 2 Cortex-M3 Zweiter Interrupt folgt kurz nachdem oder während des Abladens des Stacks in die Register

  25. Pre-empt Interrupt Cortex-M3 Spät ankommender, höher priorisierter Interrupt kann füherem Interrupt vorgeschoben werden

  26. Cortex-M3 Nested Interrupt

  27. Übung 2: NVIC Priorität Die Priorität von drei Interrupt Routinen ist: INT1 = höchste, Int3 = niedrigste Übung 2a) Der Stackpointer ist vor Eintritt in Interrupt Routine 2 0x300000FF Während der Ausführung von Routine 2 wird Interrupt 1 aktiviert. Beschreiben Sie was passiert: Was ist der Wert des Stackpointers während der Ausführung von Interrupt Routine 1 ? Übung 2b) Der Stackpointer ist vor Eintritt in Interrupt Routine 2 0x300000FF Während der Ausführung von Routine 2 wird Interrupt 3 aktiviert. Beschreiben Sie was passiert: Was ist der Wert des Stackpointers während der Ausführung von Interrupt Routine 3 ?

  28. Übung2: NVIC Priorität - Lösung Übung 2a) Vor Ausführung von Routine2 werden die Register gestacked,der Stackpointer wird um 32 Bytes dekrementiert. Da Interrupt 1 höhere Priorität hat, wird Interrupt Routine2 unterbrochen, und die Register wieder gestacked, die Stack Adresse wird noch mal um 32 Bytes dekrementiert SP: 0x300000FF - 2 * 32 Byte = 0x300000BF Übung 2b) Vor Ausführung von Interrupt 2 wird der Stack um 32 Bytes dekrementiert. Interrupt 3 hat niedrigere Priorität, Interrupt 2 wird nicht unterbrochen. Nach Ausführung von Interrupt2 folgt unmittelbar Interrupt3, es erfolgte kein weiters stacking, da Interrupt 3 im Anschluss kommt. SP: 0x300000FF - 32 Byte = 0x300000DF

  29. ARM System Peripherals

  30. Takt Erzeugung ARM7 Core Core Teil InterruptController SRAM/Flash System Teil Bus/Systeme A/D – D/AConverter I2C/SPIController General Purpose I/O UART Pulse Width Modulator Real TimeClock Blockdiagram des NXP LPC2138

  31. Vectored Interrupt Controler ARM 7 Local Bus Advance High Performance Bus AHB/VPB Bridge Program Code/DataFlash/RAM VLSI Peripheral Bus ON Chip Peripherals Interne Busse im LPC2138 AMBA-Bus

  32. Speicherbereichs-Aufteilung LPC2138 4.0 GB 0xFFFF FFFF AHB Peripherals 3.75 GB 0xF000 0000 VPB Peripherals 3.5 GB 0xE000 0000 3.0 GB 0xC000 0000 Reserved for External Memory 2.0 GB 0x8000 0000 Boot Block Reserved for On-Chip Memory On-Chip Static RAM 1.0 GB 0x4000 0000 Reserved for Special Registers 0x3FFF 8000 Reserved for On-Chip Memory On-Chip Non-Volatile Memory 0.0 GB 0x0000 0000

  33. Speicherbereichs-Aufteilung des VPB

  34. Externe Speicherschnittstellen

  35. Blockdiagram EBI Atmel AT91SAM7

  36. Features eines modernen EBI • Min. 23 Adressleitungen (je nach Konfiguration bis 32 Mbyte adressierbar) • 16- oder 32-bit Datenbusbreite • Steuert • SRAM • SDRAM • DDRAM2 • PROM • EEPROM • Flash • Compact Flash • NAND Flash • Fehlerkorrekturschaltung eingebaut (ECC)

  37. Addressaufteilung eines Atmel AT91X40

  38. Verbinden von 8-bit Speichern

  39. Verbinden von 16-bit Speichern

  40. Adressieren von Speichern Schreiben von 16-bit Datenauf 16-bit externen Bus Schreiben von 16-bit Daten auf 8-bit externen Bus Low Aktiv!

  41. Adressieren von Speichern Low Aktiv! Schreiben von 8-bit Daten auf 16-bit externen Bus in little Endian

  42. Übung3: Bestimmen der Enable Signale

  43. Übung3: Lösung

  44. Übung4: Verbinden von Speichern

  45. Übung4: Lösung

  46. Speicherzugriffs-Zyklen(Keine Wait States, schnellst möglicher Zugriff) Prozessor gibt Adressen aus Prozessor speichert Daten MCKI ADDR NCS NRD ODER NWE NWE = Low aktives Write Enable

  47. SRAM Read Cycle

  48. Ein programmierter Wait State Prozessor gibt Adressen aus Prozessor speichert Daten min. 6 ns min. 6 ns MCKI ADDR NCS NRD ODER NWE 1 zusätzlicher Zyklus

  49. Externes Wait Signal Prozessor fügt Wait ein wennNWAIT = 0 Prozessor speichert Daten MCKI ADDR WAIT NCS NRD ODER NWE 1 Wait State

  50. SRAM Write Cycle

More Related