2. Luento: LaitteistorajapintaSulo/Kalvot/Sulo-kalvot-2.pdfSuora muistisiirto, DMA-ohjaimen toiminta • Ennen siirtoa kerrotaan lohkon koko/osoite ohjaimelle • DMA request -signaali
Post on 27-Apr-2020
6 Views
Preview:
Transcript
2. Luento: Laitteistorajapinta2. Luento: Laitteistorajapinta2. Luento: Laitteistorajapinta2. Luento: Laitteistorajapinta
JuhaJuha--Matti VanhatupaMatti Vanhatupa
Alkuperäinen kalvosetti: Arto SalminenAlkuperäinen kalvosetti: Arto Salminen
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.
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
• Keskeytysvektori
Ohjelmisto tunnistaa keskeyttäjän
• Oheislaitteilla yhteinen IRQ-linja• Ohjelmisto käy lukemassa
oheislaitteiden tilarekisterit
Esimerkki keskeytyspalvelusta
/****************************************************************************** uart.c: UART API file for NXP LPC23xx/24xx Family Microprocessors******************************************************************************/
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 */
Laitteisto tunnistaa keskeyttäjän
• IACK-linja
• Keskeytysväylä (priorisoitu keskeytys)
Suorittimen alustus• RESET-linja
Reset keskeytys
Oheislaiteliitynnät• Oheislaitteen käyttöliittymänä
rekisterit:– Ohjaus– Tila– Data
Suora muistisiirto, DMA-ohjaimen 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 DMA-ohjaimesta
• ATMEL Xmega A4– http://www.atmel.com/dyn/resources/p
rod_documents/doc8069.pdf• Luku 8
– http://www.atmel.com/dyn/resources/prod_documents/doc8077.pdf• Luku 5
Oheislaitepiirejä• PIO• SIO• Timer• AD/DA• Väyläohjauspiirejä: CAN, SPI, 3-wire,
TWI, jne.
Esimerkkejä• AT91SAM7X
– http://www.atmel.com/dyn/resources/prod_documents/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)
Laitteistorajapinta abstraktiona
• Käyttöjärjestelmän ydin jaettu kahteen osaan- 1. Käyttöjärjestelmän ominaisuudet- 2. Liittymä laitteistoon
• HAL (hardware abstraction layer)Laitteistoliittymän rajapinta
Yhteenveto• Sulautettu arkkitehtuuri• Keskeytykset• Oheislaitteet
top related