2. Luento: LaitteistorajapintaSulo/Kalvot/Sulo-kalvot-2.pdfSuora muistisiirto, DMA-ohjaimen toiminta...

Post on 27-Apr-2020

6 views 0 download

Transcript of 2. Luento: LaitteistorajapintaSulo/Kalvot/Sulo-kalvot-2.pdfSuora muistisiirto, DMA-ohjaimen toiminta...

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