2. Luento: Laitteistorajapinta Arto Salminen, arto.salminen@tut.fi
Agenda Arkkitehtuuri Keskeytysjärjestelmä Oheislaiteliitynnät Oheislaitepiirejä
Arkkitehtuuri Rekisterirakenteet ja keskeytysjärjestelmä 8-64 bittisiä suorittimia RISC ARM, MIPS CISC x86
von Neumann John von Neumann, First Draft of a Report on the EDVAC, 1945. In W. Aspray and A. Burks, editors, Papers of John von Neumann on Computing and Computer Theory, vol 12 in the Charles Babbage Institute Reprint Series for the History of Computing. MIT Press, 1987.
von Neumann vs Harvard von Neumann arkkitehtuurin pullonkaula on suorittimen ja muistin välinen tiedonsiirtoväylä. Siksi Harvard-arkkitehtuuria käytetään yleisesti esim. signaalisuorittimissa
Yksinkertainen kone Suoritin Kontrolliyksikkö ALU Rekisterit Muisti
Load-Store arkkitehtuuri
Akku
Tilajärjestelmä Suoritusoikeudet Rekisterisarjat ARM User, FIQ, IRQ, Supervisor, System, Undefined
Keskeytysjärjestelmä Ohjelmavirhekeskeytys Ohjelmoitu keskeytys Ulkoinen keskeytys Käynnistys
Toiminta keskeytyksen tullessa 1. Tallennetaan tila 2. Selvitetään keskeytyksen syy 3. Palvellaan keskeytys 4. Palautetaan tila ja jatketaan suoritusta
Keskeytyksen havaitseminen 1 0
Keskeytyksen palveleminen Tallennetaan ohjelmalaskuri ja tilaliput Joskus myös rekisterisetti vaihdetaan toiseksi Kielletään muut samantasoiset keskeytykset Hypätään keskeytysvektorin osoittamaan palvelualiohjelmaan
Ohjelmisto tunnistaa keskeyttäjän Oheislaitteilla yhteinen IRQ-linja Ohjelmisto käy lukemassa oheislaitteiden tilarekisterit
Esimerkki keskeytyspalvelusta void UART0Handler (void) irq { BYTE IIRValue, LSRValue; volatile BYTE Dummy = Dummy; IIRValue = U0IIR; IIRValue >>= 1; /* skip pending bit in IIR */ IIRValue &= 0x07; /* check bit 1~3, interrupt identification */ if ( IIRValue == IIR_RLS ) /* Receive Line Status */ { /* Handle received data here */ Dummy = U0RBR; /* Dummy read on RX to clear interrupt, then bail out */ IDISABLE; VICVectAddr = 0; /* Acknowledge Interrupt */ return; } if ( LSRValue & LSR_RDR ) /* Receive Data Ready */ { /* Another situation */...
2. Esimerkki ; Reset- and Interrupt-vectors RJMP Start ; Reset-vector RJMP IInt0 ; External Interrupt Request 0 RJMP IInt1 ; External Interrupt Request 1 ; ************** Interrupt service routines ******** ; External Interrupt 0: Started by a negative edge ; on the DCF input IInt0: PUSH rmpr IN rmpr,sreg SBRS rdtf,bdcfsync RJMP IInt01 CBR rdtf,mdcfsync ; Synchronize DCF and internal tickers CLR rtckl CLR rtckh IInt01: CLR rdcfl OUT SREG,rmpr POP rmpr RETI
Laitteisto tunnistaa IACK-linja keskeyttäjän Keskeytysväylä (priorisoitu keskeytys)
Suorittimen alustus RESET-linja
Kylmä reset vs lämmin reset 1. Reset alustaa laitteet 2. Suoritettava ohjelma siirretään keskusmuistiin 3. Keskeytysvektoria voidaan muokata -> Reset voi toimia eri tavalla lämpimänä
Oheislaiteliitynnät Oheislaitteen käyttöliittymänä rekisterit: Ohjausrekisterit Tilarekisterit Datarekisterit
Rekisterien käyttö laitteen ohjaamiseen Jos tila- ja ohjausrekisterit ovat samassa muistiosoitteessa, lukeminen ohjautuu tilarekisteriin ja kirjoitus ohjausrekisteriin -> ohjaus = ohjaus KESKEYTYS_BITTI ei toimi oikein! Vanha arvo täytyy ensin lukea tempmuuttujaan
Suora muistisiirto, DMAohjaimen toiminta Ennen siirtoa kerrotaan lohkon koko/osoite ohjaimelle DMA request -signaali ohjaimelle laitteelta Pyydetään väylän käyttöoikeus Saadaan käyttöoikeus Kerrotaan oheislaitteelle, että osoite on väylällä Kirjoittaminen/lukeminen Luovutetaan väylä
Esimerkki DMAohjaimesta ATMEL Xmega A4 http://www.atmel.com/images/doc8069.pdf Luku 8 http://www.atmel.com/images/doc8077.pdf Luku 5
PIO SIO Timer AD/DA Oheislaitepiirejä Väyläohjauspiirejä: CAN, SPI, 3-wire, TWI, jne.
AT91SAM7X Esimerkkejä http://www.atmel.com/images/doc6120. pdf PIO luku 27 (UI 27.6.) USART luku 30 (UI 30.7) TC luku 32 (UI 32.6) ADC luku 35 (UI 35.6)
Yhteenveto Sulautettu arkkitehtuuri Keskeytykset Oheislaitteet