170 likes | 311 Views
Prekinitve - splošno. Pod pojmom “prekinitev” (angl. Interrupt) razumemo zahtevo (od zunaj) za prekinitev izvrševanja tekočega zaporedja ukazov in izvršitev zahtevane prekinitvene operacije (na primer prevzem podatka s tipkovnice).
E N D
Prekinitve - splošno • Pod pojmom “prekinitev” (angl. Interrupt) razumemo zahtevo (od zunaj) za prekinitev izvrševanja tekočega zaporedja ukazov in izvršitev zahtevane prekinitvene operacije (na primer prevzem podatka s tipkovnice). • Zahteva za prekinitev se lahko pojavi kadarkoli kot posledica nekega dogodka v ali zunaj sistema (na primer pritiska tipke). • Prekinitve se torej pojavljajo asinhrono glede na izvrševanje programa (tipko lahko pritisnemo kadarkoli). • Zato so prekinitve (sistem prekinitev) na splošno bistvenega pomena za delovanje sistemov v realnem času, t.j. tedaj, ko se mora • določena aktivnost zgoditi v danem trenutku oziroma najkasneje do vnaprej predpisanega časa. Rečemo: • Sistem realnega časa mora delovati pravilno, upoštevaje časovne zahteve in omejitve.
Prekinitev Past Program Prekinitve / izjeme • Soroden pojem prekinitvi je izjema (angl. Exception). • Kaj natančno pomeni “izjema” v primerjavi s prekinitvijo, ni dokončnega soglasja. • Izjema je širši pojm kot prekinitev. Izjema je vsaka pobuda realizirana s strojno opremo za prekinitev izvajanja tekočega zaporedja ukazov. • Izjeme povzročene od zunaj asinhrono z izvajanjem programa samega, tipično kot posledica zahteve za streženje V/I napravi, so prekinitve. • Izjeme povzročene (sinhrono) z izvajanjem programa samega, kot direktna posledica tekoče operacije ali kot njen stranski učinek, so pasti.
Prekinitev Izjeme Program Prekinitve / izjeme • Izjeme ne vključujejo prekinitev. • Izjeme: pasti, izpadi, napake (sinhrone s programom). • Prekinitve: zunaje V/I zahteve (asinhrone s programom). • V vsakem primeru razumemo pod pojmom “prekinitev” zahtevo, ki pride asinhrono od zunaj (procesorja), kot posledica zahteve (za streženje) iz zunanje naprave. • Kar zadeva izjem, pa se zdi najprimerneje, da označujejo vse ostale oblike prekinitev izvrševanja tekočega zaporedja ukazov. Sem potem spadajo: pasti, napake, izpadi. • Na primer: napaka na vodilu, neveljaven ukaz, pobeg iz naslovnega področja, deljenje z nič, ....
Potek prekinitve - splošno Zahteva za prekinitev Takih (prekinitvenih) signalov je lahko tudi več. CPE • Procesor izvršuje dano zaporedje ukazov. • (Na primer) zunaja naprava zahteva njegovo “pozornost” – postavi prekinitveni signal – zahteva prekinitev. • Procesor prekine izvrševanje danega zaporedja ukazov, ko mu razmere to dopuščajo, običajno po izvršitvi tekočega, pred prevzemom naslednjega ukaza. • Začne izvrševati prekinitveno operacijo: • shrani dovolj (notranje) informacije (“kontekst”) na varno mesto (sklad), da bo lahko kasneje nadaljeval na mestu prekinitve, • pridobi naslov (prvega) ukaza, ki ga bo prevzel/izvršil kot posledica zahteve za prekinitev, • prevzame in izvrši prvi ukaz prekinitvenega strežnika in za njim vse naslednje ukaze (streže zahtevi) ter nazadnje ukaz za povratek – RTI, • ukaz RTI odbnovi (iz sklada) kontekst procesorja, ki je bil shranjen ob zahtevi za prekinitev.
1 2 3 4 6 5 Zahteva za prekinitev Potek prekinitve - splošno Procesor izvršuje dano zaporedje ukazov. Pojavi se zahteva za prekinitev. Procesor odloži izvrševanje danega zaporedja ukazov. Procesor streže zahtevi za prekinitev, izvrši prekinitveni strežni program – prekinitveni strežnik (angl. ISR – Interrupt Service Routine). Procesor obnovi izvrševanje prekinjenega zaporedja ukazov. Procesor nadaljuje z izvrševanjem prekinjenega zaporedja ukazov, kot da do prekinitve ne bi prišlo.
Prekinitve - splošna vprašanja • Kaj - v kakšnem obsegu - procesor shrani svoj kontekst? • Samo PC, • PC in CCR, • tudi akumulatorje, • še kaj? • Kam procesor shrani svoj kontekst ? • V sklad, • v registre v “senci”, • še kam?
Prekinitve - splošna vprašanja • Kako je določen naslov prvega ukaza prekinitvenega strežnika (t.j. prekinitveni strežnik)? • procesor (sam) izbere naslov ukaza, • procesor (sam) izbere naslov naslova ukaza, • pri tem sodeluje tudi zunanja naprava, • še kaj? • Kateri zahtevi streže procesor prej v primeru, da je več sočasnih zahtev (prioritetni sistem)? • Tudi v pogledu prioritetnega sistema je kar nekaj možnosti oz. dejanskih izvedb.
HCS12 in prekinitve • Virov zahteve za prekinitev je več (relativno veliko). • Zahteve so (smiselno) razvrščene po prioritetah. V primeru več sočasnih zahtev, streže procesor najprej tisti z (naj)višjo prioriteto. • Vsakemu prekinitvenemu signalu pripada “vektor”. • Mikrokrmilnik uporablja vektorski sistem prekinitev. • “Vektor” je napotilo na nov ukaz. • Vektorski sistem prekinitev je torej eden od načinov: • Kako je določen naslov prvega ukaza prekinitvenega strežnika.
HCS12 in prekinitve • Kaj je prekinitveni vektor? • Vektor je pomnilniška beseda, ki vsebuje naslov prvega ukaza pripadajočega prekinitvenega strežnika (rečemo kar naslov prekinitvenega strežnika). • Prekinitveni vektorji se nahajajo (pri večini Motorolinih mikrokrmilnikov) na najvišjih pomnilniških naslovih. • Ker jih je več, rečemo tudi, da tvorijo tabelo vektorjev.
HCS12 in prekinitve/izjeme • Vektorje poimenujemo po pomenu in/ali viru, na primer: • vektor maskirane zahteve za prekinitev, • vektor nemaskirane zahteve, • vzpostavitveni vektor – bolj pogosto rečemo kar “reset” vektor (to bi bila lahko tudi izjema), • vektor programske prekinitve – ukaz SWI (oziroma izjeme), • Vektor pasti, npr. neveljaven ukaz (tudi to bi lahko bila izjema), • vektor časovnega paznika - COP vektor (Angl. Correct operation), • vektor časovnika, • vektor A/D pretvornika, • ... • Mi ne bomo delali ostre razlike med prekinitvijo in izjemo.
HCS12 in prekinitve • Potek prekinitve (prekinitvene operacije): • Procesor shrani programsko dostopne registre (razen SP) na varno mesto (to je v sklad), • Prevzame naslov 1. ukaza prekinitvenega strežnika: • generira pripadajoči naslov vektorja (postavi naslov vektorja na naslovno vodilo), • prevzame vsebino vektorja (po podatkovnem vodilu – (razumljivo), ki pomeni naslov 1. ukaza prekinitvenega strežnika, • prične običajen ukazno prevzemni cikel. • Opomba: naslov vektorja (za dan vir prekinitve) je fiksen – nespremenljiv, vsebina pa se (jasno) lahko spremeni.
HCS12 – prekinitveni vektorji Reset vektorji Vektor Programske prekinitve Neveljaven ukaz Vektorji zahtev za prekinitev V/I vmesnikov
HCS12 – ogrodje programa RstVek EQU $FFFE IrqVek EQU $FFF2 ; RAM EQU $1000 Flash EQU $8000 ; --- začetni program ORG Flash Start: LDS #SKLAD ;simbol SKLAD ni nedefiniran, a za nas to tu ni bistveno. ;Pri prevajnaju bi jasno dobili sporočilo napake – ;nedefiniran simbol. BRA * ;Vase sklenjena (neskončna) zanka. ; --- Irq strežnik IrqIsr: ...... RTI ; --- in na koncu še vektorji ORG IrqVek DC.W IrqIsr ;IRQ vektor ORG RstVek DC.W Start ;Reset vektor
$FFFE $FFF2 $80 $00 $81 $00 $FFFF $FFF3 HCS12 – vektorji, primer Pomnilnik (Flash), del tabele vektorjev To vsebino smo si izmislili, določil bi jo zbirnik s prevajanjem in bi bila verjetno drugačna. To je naslov 1. ukaza IRQ strežnika. To vsebino smo razbrali iz programa, določil pa bi jo zbirnik med prevajanjem. To je naslov 1. ukaza začetnega programa.
Še o vektorskih sistemih • Pri nekaterih drugih procesorjih je naslov strežnika določen drugače: • Ob prekinitvi procesor generira naslov, s katerega prevzame ukaz (npr. AT90S8515) . Z drugimi besedami, vektor vsebuje kar ukaz in ne naslov ukaza, kot pri HCS12. • HCS12 uporablja sistem fiksnih vektorjev. To pomeni, da so naslovi vektorjev vedno enaki, npr. SWI ima vedno isti naslov vektorja. Vsebina se jasno lahko spremeni. • Pri nekaterih procesorjih je spremenljiv tudi naslov vektorja. Takemu sistemu rečejo tudi “pravi” vektorski način, tistemu kot ga ima HCS12 pa sistem fiksnih vektorjev (avtovektorski način). • Pri nekaterih procesorjih določa naslov vektorja skupaj s procesorjem periferna naprava. Na primer, pošlje “številko prekinitve”, na podlagi katere procesor “izračuna” naslov vektorja (na primer Intel). • I.T.D.