Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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
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
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
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
2008 Jiri Spale, Programmierung eingebetteter Systeme 5
NetX500: PinOut#1
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, …)
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
2008 Jiri Spale, Programmierung eingebetteter Systeme 8
Interrupts - Unterbrechungen
2008 Jiri Spale, Programmierung eingebetteter Systeme 9
Interrupt-Arten
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
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.
2008 Jiri Spale, Programmierung eingebetteter Systeme 12
Interrupt-A
blauf
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
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
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).
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
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
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
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
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
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
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
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
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
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
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