Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

School of Engineering ESI Lektion 7-8. School of Engineering ESI – Lektion 7-8 ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden.

Ähnliche Präsentationen


Präsentation zum Thema: "School of Engineering ESI Lektion 7-8. School of Engineering ESI – Lektion 7-8 ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden."—  Präsentation transkript:

1 School of Engineering ESI Lektion 7-8

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

3 School of Engineering ARM Stacks

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

5 School of Engineering ARM7 Stack Pointer Register Stack- Pointer

6 School of Engineering ARM7 Stackpointer im RAM

7 School of Engineering Cortex-M3 Stackpointer im RAM MSP PSP RAM

8 School of Engineering Betriebszustand: FIQ IRQ Supervisor User Undefined F = 1 FIQ disable I = 1 IRQ disable T = 1 Thumb mode Condition Code Flags: N = Negative Z = Zero C = Carry Over V = Overflow (Ergebnis grösser als Platz im Register) ARM7 Current Processor Status Register (CPSR)

9 School of Engineering // 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 ARM7 Initialisieren der Stack Pointer direkt im Startup.s

10 School of Engineering ARM7 Initialisieren der Stack Pointer im uVision

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

12 School of Engineering 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 School of Engineering Cortex M3 Interrupt Controller (NVIC)

14 School of Engineering Cortex-M3 Blockdiagram

15 School of Engineering Exception TypeAddress OffsetException Vector 18-2550x48-0x3FFIRQ #2-239 170x44IRQ #1 160x40IRQ #0 150x3CSYSTICK 140x38PendSV 130x34reserved 120x30Debug Monitor 110x2CSVC 7-100x1C-0x28Reserved 60x18Usage fault 50x14Bus fault 40x10MemManage fault 30x0CHard fault 20x08NMI 10x04Reset 00x00Starting Value for MSP Cortex-M3 Exception Vectors

16 School of Engineering Cortex-M3 Interrupt Stacking

17 School of Engineering Cortex-M3 Stack While Fetch

18 School of Engineering Cortex-M3 Interrupt Stacking

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

20 School of Engineering Übung1: Stacking SpeicheradresseDaten 0x300000FF0x11111111 0x300000FB0x400000FE 0x300000F70x12FFFFF8 0x300000F30x14FFFFFF 0x300000EF0x55555555 0x300000EB0x44444444 0x300000E70x33333333 0x300000E30x22222222 0x300000DF0x11111111 0x300000DB0x5a5a5a5a pc lr r12 r3 r2 r1 r0 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 School of Engineering Übung 1: Stacking - Lösung SpeicheradresseDaten 0x300000FF0x11111111 0x300000FB0x400000FE 0x300000F70x12FFFFF8 0x300000F30x14FFFFFF 0x300000EF0x55555555 0x300000EB0x44444444 0x300000E70x33333333 0x300000E30x22222222 0x300000DF0x11111111 0x300000DB0x5a5a5a5a pc 0x12FFFFF8 lr 0x14FFFFFF r12 0x55555555 r3 0x44444444 r2 0x33333333 r1 0x22222222 r0 0x11111111 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 School of Engineering 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 School of Engineering Tail Chaining Situation 1 Interrupt mit gleicher oder niedrigerer Priorität folgt sofort im Anschluss Cortex-M3

24 School of Engineering Tail Chaining Situation 1 Interrupt mit gleicher oder niedrigerer Priorität folgt sofort im Anschluss Cortex-M3

25 School of Engineering Tail Chaining Situation 2 Zweiter Interrupt folgt kurz nachdem oder während des Abladens des Stacks in die Register Cortex-M3

26 School of Engineering Pre-empt Interrupt Spät ankommender, höher priorisierter Interrupt kann füherem Interrupt vorgeschoben werden Cortex-M3

27 School of Engineering Cortex-M3 Nested Interrupt

28 School of Engineering Ü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 ?

29 School of Engineering Ü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

30 School of Engineering ARM System Peripherals

31 School of Engineering Blockdiagram des NXP LPC2138 Core Teil System Teil ARM7 Core Pulse Width Modulator A/D – D/A Converter Interrupt Controller Real Time Clock I2C/SPI Controller UART SRAM/Flash Bus/Systeme Takt Erzeugung General Purpose I/O

32 School of Engineering Interne Busse im LPC2138 ARM 7 AHB/VPB Bridge ON Chip Peripherals Program Code/Data Flash/RAM Local Bus Advance High Performance Bus VLSI Peripheral Bus Vectored Interrupt Controler AMBA-Bus

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

34 School of Engineering Speicherbereichs-Aufteilung des VPB

35 School of Engineering Externe Speicherschnittstellen

36 School of Engineering Blockdiagram EBI Atmel AT91SAM7

37 School of Engineering 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)

38 School of Engineering Addressaufteilung eines Atmel AT91X40

39 School of Engineering Verbinden von 8-bit Speichern

40 School of Engineering Verbinden von 16-bit Speichern

41 School of Engineering Adressieren von Speichern Ausgegebene Adresse A3..A0Datenbits D7..D0 0x0006 0b0110D7..0 0x0005 0b0101D7..0 0x0004 0b0100D7..0 0x0003 0b0011D7..0 0x0002 0b0010D7..0 0x0001 0b0001D7..0 0x0000 0b0000D7..0 Ausgegebene Adresse A3..A0DatenbitsNWR1 Write Enable NWR0 Write Enable D15..8D7..0 0x000c 0b1100D15..8D7..000 0x000a 0b1010D15..8D7..000 0x0008 0b1000D15..8D7..000 0x0006 0b0110D15..8D7..000 0x0004 0b0100D15..8D7..000 0x0002 0b0010D15..8D7..000 0x0000 0b0000D15..8D7..000 Schreiben von 16-bit Daten auf 16-bit externen Bus Schreiben von 16-bit Daten auf 8-bit externen Bus Low Aktiv!

42 School of Engineering Adressieren von Speichern Ausgegebene Adresse A3..A0DatenbitsNWR1 Write Enable NWR0 Write Enable D15..8D7..0 0x0006 0b0110D7..0 10 0x0005 0b0101D15..8 01 0x0004 0b0100D7..0 10 0x0003 0b0011D15..8 01 0x0002 0b0010D7..0 10 0x0001 0b0001D15..8 01 0x0000 0b0000D7..0 10 Schreiben von 8-bit Daten auf 16-bit externen Bus in little Endian Low Aktiv!

43 School of Engineering Übung3: Bestimmen der Enable Signale

44 School of Engineering Übung3: Lösung

45 School of Engineering Übung4: Verbinden von Speichern

46 School of Engineering Übung4: Lösung

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

48 School of Engineering SRAM Read Cycle

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

50 School of Engineering Externes Wait Signal NWE NRD NCS ADDR MCKI ODER 1 Wait State Prozessor fügt Wait ein wenn NWAIT = 0 Prozessor speichert Daten WAIT

51 School of Engineering SRAM Write Cycle

52 School of Engineering Aufeinander folgende Lese und Schreibzyklen

53 School of Engineering Early Read Cycle NWE NRD NCS ADDR MCKI ODER 1 zusätzlicher Zyklus Prozessor gibt Adressen aus Prozessor speichert Daten Early Read Normal Read 10 ns

54 School of Engineering EBI Steuerregister

55 School of Engineering Für jedes Chip Select, gibt es ein Chip Select Register (Atmel-ARM) Datenbusbreite 10 = 8-bit 01 = 16-bit Number of Wait States Wait States eingeschaltet Seitengrösse 00 = 1 M Byte 01 = 4 MByte 10 = 16 MByte 11 = 64 MByte Data Float Output Time Chip Select Enable Base Address (höchste Bits der Basis Adresse) Byte Write Access Type

56 School of Engineering Übung5: EBI Chip Select Register CS0CS1CS2 Page Size:16M Base Address:0x010000000x020000000x03000000 Von:0x010000000x020000000x03000000 Bis:0x01FFFFFF0x02FFFFFF0x03FFFFFF CS0CS1CS2 Page Size:64M Base Address:0x10000000 Von: Bis:

57 School of Engineering Übung5-Lsg: EBI Chip Select Register CS0CS1CS2 Page Size:16M Base Address:0x010000000x020000000x03000000 Von:0x010000000x020000000x03000000 Bis:0x01FFFFFF0x02FFFFFF0x03FFFFFF CS0CS1CS2 Page Size:64M Base Address:0x100000000x140000000x18000000 Von:0x100000000x140000000x18000000 Bis:0x13FFFFFF0x17FFFFFF0x1BFFFFFF


Herunterladen ppt "School of Engineering ESI Lektion 7-8. School of Engineering ESI – Lektion 7-8 ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden."

Ähnliche Präsentationen


Google-Anzeigen