26
2008 Jiri Spale, Programmierung eingebetteter Systeme 1 NetX500 Eingesetzt im Praktikum Philosophie Evaluation Bord: NXSB100 oder NXHX500-RE oder NetStick/NXHX Controller: netX 500 Prozessorkern: ARM926EJ

netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 1

NetX500Eingesetzt im Praktikum

Philosophie

Evaluation Bord: NXSB100 oder NXHX500-RE oder NetStick/NXHX

Controller: netX 500

Prozessorkern: ARM926EJ

Page 2: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 2

NetX500: wichtigste Eigenschaften#1Kern •200 MIPS ARM 926 CPU • Unterstützung von Windows CE und Linux• Boot-Optionen via FLASH, serial EPROM, MMC, DRAM oder UART • Hardware zur Vermeidung des Flaschenhalseffektes • Real-time clock• Extended temperature range

Entwicklungsumgebung

• Debug and Development Environment support by HITEX

Debuggen

• JTAG Debug Interface

Page 3: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 3

NetX500: wichtigste Eigenschaften#2

Speicher• 128 KByte interner RAM für kleine Anwendungen • 16 KByte RAM mit eigener Spannungsversorgung für nicht-flüchtige Daten • 32 KByte Boot ROM • SDRAM controller für große Speicher • SRAM und FLASH interface• DRAM als Schnittstelle zum Host-Controller

Page 4: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 4

NetX500: wichtigste Eigenschaften#3Interfaces – Anschluß von Peripherien• 2x 100 MBit/s Ethernet • Unterstützung von Real-time Eth-Protokole:

EtherCAT, Ethernet/IP, Powerlink, PROFINET, SERCOS-III • Feldbus Controller für ASI, CAN, InterBus, PROFIBUS master and slave• 3-Phasen Motor PWM, 1-Phase Drehmelder-PWM• 2 10Bit ADUs, jeder mit sample/hold und 4-Kanal-Eingangsmultiplexer • Extension bus zum Anschluss von Peripherien für stand alone applications• USB interface, konfigurierbar als Host oder Device, 8 Pipes • 3 UARTs, 16550 kompatibel • SPI mit separaten Input- und Output-FIFOs, voll interrupt driven• I2C Interface • Watchdog• Boundary Scan

Page 5: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 5

NetX500: PinOut#1

Page 6: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 6

NetX500: PinOut#2Der Chip hat 345 Füßchen (Pins), manche davon haben 3-fache Funktion – wie kann man sich da drin auskennen?

Technical Data Reference Guide, S. 39:(Pinbezeichnung mittels Matrix 21x21, z.B. AA5, Y5, …)

Page 7: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 7

Speicher

Static RAM, Blöcke 1-4Jeder Block: eigenes Interfacezum Data Switch- Parallelität

Static RAM, Block 5Extra Vorsorgung zur SpeicherungNicht-flüchtiger Variablen

Boot-Loader, rcX-Funktionen

SRAM oder FLASH, Blöcke 1-3Jeder Block: 64MByte oder

32MWords oder 16MDwords

SDRAM8 – 256 MB

0x 0001 000032k

SRAM20x 0001 7FFF

0x 0000 800032k

SRAM10x 0000 FFFF

32kSRAM00x 0000 7FFF

Inte

rna

lE

xte

rna

l

0x 0020 000032kBoot ROM

0x 0020 7FFF

0x 0030 000016kBackup RAM

0x 0030 3FFF

0x 0000 0000

0x 0001 800032k

SRAM30x 0001 FFFF

0x 0010 0000Internal PeripherialRegister Block

0x 001F FFFF

0x 1000 00008k

Tightly coupledData Memory

0x 1000 1FFF

0x 2000 0000Extension Bus

0x 2FFF FFFF

0x 8000 0000SDRAM

0x BFFF FFFF0x C000 0000

SRAM 0/Flash

0x C7FF FFFF0x C800 0000

SRAM 1/Flash

0x CFFF FFFF0x D000 0000

SRAM 2/Flash

ExternalBus

0x D7FF FFFF

0x FFF0 0000Internal PeripherialRegister Mirror

0x FFFF FFFF

GrößeBereichAdresse

Page 8: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 8

Interrupts - Unterbrechungen

Page 9: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 9

Interrupt-Arten

Page 10: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 10

Traps (Fangstellen)Merkmale:• Unterbrechungen der Ablaufsteuerung, durch Trap-Handler gesteuert• automatische Prozeduraufrufe, verursacht durch

Programm-Ausführung• ausgelöst durch Exceptions, welche durch Hardware oder

Mikroprogramme erkannt werden.

Beispiele:• Gleitkommaüberlauf• Schutzverletzung• Stapelüberlauf• Page-Faults

Funktionsweise (Beispiel):Aktion: Überlauf Reaktion: Programmausführung gestoppt, Steuerung an den Anfang des

Trap-Handlers (Prozedur) übergeben

Page 11: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 11

Interrupts - FunktionsweiseMerkmale:• Prozeduraufrufe (Interrupt Service Routine, ISR), verursacht durch

externe (unvorhersehbare) Ereignisse• durch Interrupt-Handler gesteuert• Nach Abarbeitung derISR - Kontrolle zurück an das Programm • Der interne Zustand des Prozessors (IP, Register, ...) muss exakt

wiederhergestellt werden.

Unterschied Trap/InterruptTrap: synchron mit Programm – erkannt erst nach der Befehlsausführung Int: asynchron mit Pgm – Eregnisse kommen während Befehlabarbeitung

In mancher Literatur werden Traps als eine Art Interrupts verstanden.

Page 12: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 12

Interrupt-A

blauf

Page 13: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 13

Interne und externe InterruptsExterne – asynchron• nichtvektorisierte

- ISR startet ab einer festen Adresse

• vektorisierte- eine wahlfreie ISR-Startadresse dynamisch zugeordnet- die Startadresse wird durch die CPU vom Datenbus gelesen

unter Verwendung eines dedizierten Protokolls

Interne – synchron• Software-Interrupts

- aufgerufen per Maschinenbefehl- Startadressen in der Interrupt-Vektor-Tabelle eingetragen

• Execution-Traps- Reaktion auf interne Fehler

Page 14: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 14

Interrupts - Zustandsicherungskonzeptetotale Sicherung aller bislang nicht automatisch gesicherten Register

• der CPU-Status des unterbrochenen Programms wird komplett eingefroren • auch die invarianten Anteile werden gesichert,

der Programmzustand ist damit leicht zugreifbar • weit verbreitet bei Allzweckbetriebssystemen (z.B. UNIX & Co.)

partielle Sicherung der im weiteren Verlauf nicht gesicherten Register

• der CPU-Status des unterbrochenen Programms wird teilweise eingefroren • es wird nur der wirklich von Änderungen betroffene Anteil gesichert • der Programmzustand ist damit nicht leicht zugreifbar • weit verbreitet bei Spezialzweckbetriebssystemen

Page 15: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 15

Alternative zu Interrupts - PollingPolling - zyklisches Abfragen von einen oder mehreren E/A-Devices• zur Feststellung der Kommunikationsbereitschaft bzw. • zum Einholen von Kommunikationswünschen.

Vorteile des Pollings• Einfach zu Implementieren• Kommunikationsanforderungen erfolgen

synchron zum Programmablauf

Nachteile des Pollings• Hoher Programm-Overhead• Die meisten Anfragen an die Geräte

sind unnötig• Priorisierung bei zeitgleichen Anfragen

erfordert zusätzlichen Zeitaufwand• Je mehr Geräte am Bus hängen, um so

mehr steigt Reaktionszeit

Nachteile > Vorteile =>asynchrone Kommunikation mit den Geräten durch die Hardware bevorzugt(Interrupts).

Page 16: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 16

netX: Interrupt-Struktur- 32 Interrupt-Quellen

- 16 davon können vektorisiert werden- Interrupt-Priorität konfigurierbar- Intterrupt-Typ (IRQ oder FIQ) konfigurierbar- alle Interrupts maskierbar.

VIC

ARMHigh-speedbus

ARM CPU: 2 Interrupt-Eingänge:• FIQ – fast interrupt request

• ISR-Aufruf ohne Latenzzeit• i.d.R. nur 1 im System, Int-Quelle wählbar

• IRQ – general purpose interruptalle anderen INTs an IRQ angeschlossen

IRQ kommt – welche Quelle war das?⇒ mögliche Lösung: alle Quellen geODERt

besser: via VIC, Vector Interrupt Controller

Page 17: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 17

VIC- Hoch optimisierte Controller-Software- 3 Levels von Interrupt-Diensten:

1. FIQ - schnellste Reaktion2. vektorisierte IRQ3. nichtvertorisierte IRQ - langsamste Reaktion

Jede INT-Quelle kann jeder der 3 Levels zugeordnet werden

Page 18: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 18

Reserviert27-31

Power failRTC_POK26

From internal Phy0 or Phy1Phy0/Phy125

Motion synchronization channel 0-3 / IRQ 12-15SYNC0-321-24

Communication channel 0-3 / IRQ 0-11XPEC0-317-20

GPIO 1-14 / Counter 1-4GPIO16

SDRAM/Extension Bus HOST15

LCD ControllerLCD14

Not implemented yetI2C13

SPI InterfaceSPI12

USB InterfaceUSB11

10: auch zur DiagnoseUART 0-28-10

Watchdog abgelaufenWatchdog7

Externer interruptIRQ 0 via GPIO156

System Time seconds5

System Time nano seconds4

Timer/Counter 1-31-3

ARM-Standard-KonfigurationReserviert für Software Interrupts0

AnmerkungQuelleInterrupt Interrupt-Quellen

Page 19: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 19

FIQ = Fast IRQ #1

Merkmale:• Jede Interrupt-Quelle kann als FIQ deklariert werden• Ideales System: nur eine einzige FIQ-Quelle im System

(Theoretisch sind mehrere FIQ möglich ⇒ Verlangsamung)• Immer die höchste Priorität• Lässt sich per SW zu IRQ degradieren

Register:• VIC Interrupt Select Register – Einstellung, welche INT-Quelle ist FIQ• VIC FIQ Status Register – Abfrage des FIQ-Auslösers (bei mehreren FIQ-Quellen)• VIC Interrupt Enable Register - Freigabe

Page 20: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 20

FIQ = Fast IRQ #2

Falls FIQ ausgelöst…• Prozessor wechselt in FIQ-Modus• ISR startet. Auf Adr. 0x1C (FIQ Vektor) muss Jump in FIQ-ISR, bzw.

Startadresse des C-Programms für die FIQ-ISR liegen

Verlassen der FIQ-ISR:• vor dem Verlassen müssen alle Interrupt Status Flags resettet werden(reset = Eintrag von log.1, nicht log.0)Anderenfalls wird der FIQ kontinuierlich immer wieder ausgelöst

Page 21: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 21

Vektorisierte IRQ #1

Slot0…..Slot15

Hardware Lookup Table,bedient durch VIC

16 Slots- Vector Address Register

- Channel Field: Zuordnung Int-Quelle - Slot- Enable Bit

- Vector Control Register- enthalten die Startadressen der jeweiligen ISR

Priorität:Slots mit niedrigerer Nummer – höhere Prio

VIC Vector Address Register

Page 22: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 22

Vektorisierte IRQ #2Zusammenarbeit CPU – VIC:Während VIC den Inhalt des VIC Vector Address Register berechnet,ARM CPU übergibt Steuerung auf Adresse, die in 0x18 gespeichert ist(IRQ-Vektor). Dort steht BefehlLDR PC,[PC,#-0xFF0]

Funktionsweise: 0x00000018 // aktuell abgearbeitete Pgmspeicher-Pos.+ 0x00000008 // PC um 8 voraus wg. Pipeline- 0x00000FF0

0xFFFFF030 // Kopie vom VIC VectorAddrReg (0x1FF030)

Verlassen der vIRQ-ISR:• vor dem Verlassen müssen alle Interrupt Status Flags resettet werden(reset = Eintrag von log.1, nicht log.0) – wie bei FIQ• Dummy Write in den VIC Vector Address Reg – Mitteilung „Ende“ an VIC

Page 23: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 23

Nichtvektorisierte IRQFIQ und vekt. Ints können bedienen 1+16=17 Int Quellen.Gesamtanzahl von netX-Int-Quellen = 27

Die restlichen Quellen können als nichtverktorisierte IRQ bedient werden.Für alle n.v.Ints – nur 1 gemeinsame ISR verfügbar. VIC Default Vector Address Register – dort startet diese ISR.VIC IRQ Status Register – Info über den Int-Auslöser

Feststellung der Int-Quelle –in der der ISR (am Anfang )

Verlassen der nvIRQ-ISR:• vor dem Verlassen müssen alle Interrupt Status Flags resettet werden(reset = Eintrag von log.1, nicht log.0) – wie bei vIRQ• Dummy Write in den VIC Vector Address Reg – Mitteilung „Ende“ an VIC

Page 24: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 24

Interrupts per SW auslösenMittelsVIC Software Interrupt Registers-Auslösen des Interrupts auf jedem der Kanäle, z.B. für Testzwecke.

Nicht vertauschen mit SWI – software Interrupt Instruction

Priorirät:Max1. FIQ2. Int Vector 0-153. Nonvectored IRQsMin

Page 25: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 25

Interrupts per SW auslösenMittelsVIC Software Interrupt Registers-Auslösen des Interrupts auf jedem der Kanäle, z.B. für Testzwecke.

Nicht vertauschen mit SWI – software Interrupt Instruction

Priorirät:Max1. FIQ2. Int Vector 0-153. Nonvectored IRQsMin

Page 26: netx-sys-mem-int - webuser.hs-furtwangen.despale/forall/PES/Vorlesung/ppt/netx...2008 Jiri Spale, Programmierung eingebetteter Systeme 6 NetX500: PinOut#2 Der Chip hat 345 Füßchen

2008 Jiri Spale, Programmierung eingebetteter Systeme 26

netX Interrupts Latenzzeiten•FIQInterrupt Sync+ Worst Case Instruction execution+ Entry to first Instruction= FIQ Latency = 12 cycles = 60nS @ 200MHz

•IRQInterrupt sync+ worst case instruction execution+ Entry to first instruction+ Nesting= IRQ Latency = 25 cycles = 125nS @ 200MHz