23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2009 (period 3-4) för E och I med.

Slides:



Advertisements
Liknande presentationer
PTS Bredbandskartläggning
Advertisements

Folkhälsan i Sverige: Årsrapport 2012
Folkbildningspolitikers attityder till studieförbunden 2013
Kalibrering – Dagens kapacitet – något under DG
Kap 1 - Algebra och linjära modeller
Kommunalekonomins utveckling till år 2018 Källa: Basserviceprogrammet samt Kommunförbundets beräkningar.
Joomla © 2009 Stefan Andersson 1. Kontaktformulär  På varje seriös webbplats bör det finnas ett kontaktformulär.  Använd ej maillänkar, risk för spam!
Konstföreningen Dragning På sista sidan finns konstnärerna för respektive tavla.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Presskonferens 12 december 2013 Arbetsmarknadsutsikterna Hösten 2013 Tord Strannefors.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Projektföljeforskning
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
1 Hårddiskar och Disketter Boot sektorn på en diskett eller startsektorn på en partition (se s. 770)
IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
| Trycksår Kommun/Områdes-skillnader (inklusive könsdimensionen) Dennis Nordvall Statistiker/Datamanager,
REGIONAL DIGITAL AGENDA Tony Blomqvist VD, IT Norrbotten
Prognossiffror för samhällsekonomin 2014 Inrättning BNP,Inflation, Arbets-Förändr förändr. löshets- i förtj.nivå % % grad, %index, % september 0,01,18,61,4FM.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Sveriges utrikeshandel (Andelar i procent) ImportExport EU (25) EFTA NAFTA Central- och Östeuropa Asien - Japan - Kina Övriga 59,9.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Sveaplans Aula (merparten bokas endast av en institution) Nya lokalerna i Frescati.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Nya lokalerna i Frescati backe (ej med i gamla systemet) Övrigt: Mätningen.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Nya lokalerna i Frescati backe (ej i bruk förrän VT13) Övrigt: Mätningen är.
Finländarnas uppfattningar om äldrevården Kirsi Markkanen Utvecklingschef Tehy rf.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Konsumenter om Svanen och EU Ecolabel Om undersökningen Utförd av: Response Analys, Oslo i dec 2010 Cirka personer från respektive land Totalt.
Kostnader för läkemedelsförmån Utveckling t.o.m. september 2014 Materialet: avser kostnader inklusive moms är ej åldersstandardiserat Lennart Tingvall:
Sveriges utrikeshandel mars Källa: WTO; International Trade Statistics 2009.
Hittarps IK Kartläggningspresentation år 3.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Institutionsägda lokaler Övrigt: Mätningen är gjord terminstiden för VT13 (undantag.
1 Individ Kompetens 60%66%67% Motivation 59%64%60% Ansvar & Initiativ 77%74%68% Befogenheter 82%69%61% Organisation Samarbete 52%66%68% Organisatorisk.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Kommunalekonomins utveckling Nordiskt möte i Island 2014 Ilari Soosalu.
ÖVERSLAGSRÄKNING.
TÄNK PÅ ETT HELTAL MELLAN 1-50
/hp Beräkning av kommunernas och samkommunernas utgifter år 2013 Övriga utgifter 0,81 md € Investeringar 4,70 md € Övr. verksamhetskostn. 0,79.
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Varumärket Luleå kommun
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
Resultat sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Västra länsdelen mätperiod 2014.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Källa: FHI, Folkhälsodatabas
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Regional handlingsplan ”Det goda livet för sjuka äldre” RESULTAT i VG+Skaraborg.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
Presskonferens 7 december 2010 Arbetsmarknadsutsikterna Hösten2010 Tord Strannefors.
Sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Mätperiod – Margit Gehrke Flyckt Projektledare
2G1518 Datorteknik Föreläsning 5 Bussar In- och utmatning (Input/Output, I/O) Programstyrd pollning hösten 2005 för D3 och CLMDA m fl.
2 June G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
William Sandqvist Övning 7 Interrupt, Exeption, Trap.
3 August 2015IS1200 Datorteknik föreläsning 71 IS1200 Datorteknik Föreläsning 7 Exceptions Interrupts - Traps.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
12 October 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Presentationens avskrift:

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2009 (period 3-4) för E och I med flera

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 6, (E och I m.fl.)2 F1F2F3F5F7F8F9F10Ö2Ö1Ö3LAB-1Hemlab-1Ö4Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik Våren 2009 Period 3 F6Ö5Ö6LAB-2 Våren 2009 Period 4 F4

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)3 Litteraturhänvisningar Kursboken, kapitel 5.2 Avbrott, principer (ej MIPS) Nios-2-manualen, chap 3 (October 2007) Exempelsamling del 7 med lösningar Lab-PM för laboration 3, nios2int

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)4 Viktiga delar i en dator CPU MEM BUS I/O program data

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)5 Programexekvering i två steg, normalfall (decode) EXECUTE FETCH (update PC)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)6 Exceptions ”Undantag” Under den normala programexekveringen kan det inträffa ”speciella händelser” av olika slag som hanteras på likartat sätt 1. Interrupts, externa ”händelser”, avbrottssignaler 2. TRAP-instruktioner 3. Andra undantag, interna

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)7 1. Asynchronous Exceptions External Interrupts  Yttre händelser orsaker avbrott (External) Elektrisk signal till CPU-chippet.  Avbrott kan komma när som helst i förhållande till det program som körs  Det måste finnas minst en pinne på CPU- chippet med funktionen IRQ - Interrupt Request, troligen flera pinnar (IRQ31—IRQ00)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)8 Viktiga delar i en dator IRQ-signaler, Interrupt ReQuest CPU MEM BUS I/O program data IRQ (t.ex.IRQ31—IRQ00) t.ex. Serieport - IRQ4 Timer – IRQ10

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)9 Exception Handler Huvudprogram returhopp retur-adress ”hopp vid anrop” exception ExceptionHandler var finns ExceptionHandler ? var lagras adressen till ExceptionHandler ? var sparas returadressen ? intruction

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)10 Exceptions in many CPU:s Exception Vector Table exc00Handexc01HandexcNNHand instr Exception Vector Table Mjukvara eller Hårdvara som automatiskt gör hopp till rätt Exception-Handler samt lite till nämligen NN null

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)11 Nios-II. Exceptions Control Registers Det finns ”fem” Control Registers 0.status - ctl0, read/write (status) 1.estatus - ctl1, read/write (exception status) 2.bstatus - ctl2, read/write (break status) 3.ienable - ctl3, read/write (interrrupt enable) 4.ipending - ctl4, read (interrupt pending) 5. (det finns fler men de diskuteras ej här)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)12 Nios-II Statusregister 0 status, ctl U PIE Endast två bitar används: PIE = Processor Interrupt Enable (1=enable, 0=disable) U = User Mode (1=User Mode, 0=Supervisor Mode) (Hur byter man mellan User och Supervisor mode? Ej implementerat!)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)13 Nios-II control-register 0 status, ctl0  Bit med index 0 i status-register betecknas PIE – Processor Interrupt Enable  PIE = 0 förbjuder interrupt (int. disable)  PIE = 1 tillåter interrupt (int. enable)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)14 Nios-II Statusregister 1 estatus, ctl1 (exception status)  Då en exception accepteras, kopieras status till estatus så att ”gamla” status- värden kan läsas/skrivas av Exception Handler  Vid retur från Exception Handler, med instruktionen eret, kopieras estatus tillbaks till status

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)15 Nios-II instruktioner för att läsa och skriva ctl-regs  Läsning, kopiera till rj från ctli RDCTLrj, ctli  Skrivning, kopiera till ctli från rj WRCTL ctli, rj Kan bara exekveras i supervisor mode. Ger access-violation exception i user mode. Vi använder endast supervisor mode i våra labbar

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)16 Ändra i ctl-register Read – Modify - Write Exempel på användbara instruktioner  RDCTL ri, ctlj# kopiera ctlj till ri  WRCTL ctlj,ri # kopiera ri till ctlj  ANDIri, rj, ”mask”# ”nollställ”, # ”maska fram”  ORIri, rj, ”mask”# ”ettställ”  XORIri, rj, ”mask”# ”invertera”

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)17 Nios-II Statusregister 1 estatus, ctl EU EPIE Samma bitkonfiguration som ctl0-status Endast två bitar används: EPIE = Processor Interrupt Enable (1=enable, 0=disable) EU = User Mode (1=User Mode, 0=Supervisor Mode)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)18 Nios-II Exceptions Exception Processing Sequence 1. Copy status into estatus 2. Set PIE to 0, disabling all interrupts 4. Set U to 0, execute in supervisor mode 5. Save returnadress in ea=r29 6. Set PC to predefined value 0x (Remark: return address must be decremented by 4 before executing eret in interrupt handler but not in trap handler)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)19 ERET-instruction eret # return from exception using content of r29 as return address PC  ea status  estatus

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)20 Nios-II Statusregister 3 ienable, ctl3 (interrupt enable) ctl3 är ett 32 bitars register (32 vippor) För var och en av de 32 IRQ-signalerna finns en maskbit vars  värde 0 förbjuder avbrott (disable)  värde 1 tillåter avbrott (enable)  Se figur 3-1 i manualen (October 2007)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)21 ctl3 ctl4 No Flip-Flops ! Flip-Flops ! Signal Levels ! EI / DI

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)22 Nios-II Statusregister 4 ipending, ctl4 (interrupt pending) ctl3 är 32 signaler (inga vippor) För var och en av de 32 IRQ-signalerna finns en bit som programvaran kan läsa och som anger  värde 0 inget avbrott begärs eller disable  värde 1 avbrott begärs och tillåts  Se figur 3-1 i manualen (October 2007)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)23 Exceptions NiosII: Alltid ”hopp” till 0x huvudprogram returadress ”hopp vid anrop” exception instruction jmp ExcHandler 0x800020: Fast adress

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)24 Exception-Handler Nios-II: orsak till exception ? huvudprogram returadress ”hopp vid anrop” exception ExcHandler OPCODE reg jmp ExcHandler fast adress valbar adress ? IntHandler valbar adress TrapHandler valbar adress ElseHandler valbar adress 0x800020:

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)25

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)26 Interrupt or Trap ? figur 3-2 i manualen ExcHandler:# r24/et = exception temporary rdctlr24, ctl1# copy ctl1/estatus andir24, r24, 0b1# select index 0 beqr24, r0, NoInt# if PIE == 0 rdctlr24, ctl4# copy ctl4/ipending beqr24, r0, NoInt# if ctl4 == 0 IntHandler:...# Interrupt Handler... NoInt:...# code see below

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)27 Interrupt-Handler letar fram aktuell IRQ-handler IntHandler valbar adress irq00-int valbara adresser irq04-int irq31-int retur IRQ-00? IRQ-01? IRQ-04? IRQ-03? IRQ-31? subi r29, r29, 4

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)28 Vilken Interrupt ? figur 3-2 i manualen IntHandler: subir29, r29, 4# justera ea rdctlr24, ctl4# läs ipending andir24, r24, 0b1# IRQ-00? bner24, r0, irq00-int# int on IRQ-00 rdctlr24, ctl4# läs ipending andir24, r24, 0b10# IRQ-01? bner24, r0, irq01-int# int on IRQ-01...# ytterligare upp till IRQ-31

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)29 2. Synchronous Exceptions TRAP instruction  Exception med hjälp av TRAP-instruktion  Placeras av programmeraren på önskad och känd plats. Används t.ex. för OS System Call  Nios-2: TRAP erbjuder en enda TRAP till den enda fasta adressen = 0x  Parameter (i r4) möjliggör olika SysCall

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)30 Exception-Handler Interrupt eller Trap ? huvudprogram returadress ”hopp vid anrop” exception OPCODE reg jmp ExcHandler fast adress valbar adress ExcHandler ? IntHandler valbar adress TrapHandler valbar adress ElseHandler valbar adress 0x800020: REPRIS

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)31 Interrupt or Trap ? (cont.) figur 3-2 i manualen REPRIS ExcHandler:# r24/et = exception temporary rdctlr24, ctl1# copy ctl1/estatus andir24, r24, 0b1# select index 0 beqr24, r0, NoInt# if PIE == 0 rdctlr24, ctl4# copy ctl4/ipending beqr24, r0, NoInt# if ctl4 == 0 IntHandler:...# Interrupt Handler... NoInt:...# code see below

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)32 REPRIS

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)33 Interrupt or Trap figur 3-2 i manualen... NoInt:# Alternativ 1 pushr8# skydda/låna r8 ldwr24, -4(r29)# kopiera instruktion moviar8, trapcode# kopiera TRAP code beqr8, r24, TrapHandler# yes, TRAP popr8# återställ/återlämna r8 NoTrap: equ trapcode, 0x003B683A# op-code of TRAP OBS r1 kan inte användas! (kan ju innehålla värdefull information) Lösning: Använd stacken för att skydda t.ex. r8

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)34 Interrupt or Trap figur 3-2 i manualen... NoInt:# Alternativ 2 pushr8 ldwr24, -4(r29)# kopiera instruktion moviar8, trapdum# kopiera TRAP code ldwr8, 0(r8)# till r1 beqr8, r24, TrapHandler# yes, TRAP popr8 NoTrap: data# eller i.text trapdum:trap# op-code of TRAP

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)35 Vilken TRAP System Call med TRAP TrapHandler: popr8# återställ r8 moviar24, 0# konstant 0 till r1 beqr4, r24, SysCall-0# javisst moviar24, 1# konstant 1 till r1 beqr4, r24, SysCall-1# javisst...

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)36 Exceptions in Nios-II Suggested software structure trap 0x800020:”jmp ExcHand” Int ?Trap ? ExcHand: ElseHand Yes No IRQ00 IRQ01 IRQ31 error IntHand: No irq00Hand Yes irq01Hand Yes irq31Hand Yes subi r29, r29, 4 eret No trap0 trap1 trapn error TrapHand: No trap0Hand Yes trap1Hand Yes trapnHand Yes eret No instr int

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)37 Standard method Interrupt Vector Table irq00Handirq01Handirq31Hand instr Interrupt Vector Table Mjukvara eller Hårdvara som automatiskt gör hopp till rätt avbrottsrutin samt lite till nämligen null REPRIS

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)38 Registrera en Interrupt Handler vad menas med det ?  Koppla ihop en vald Interrupt Handler med en avbrottssignal med ett visst index  Skriv in startadress på rätt plats i avbrottsvektortabellen  Kallas ibland ”register an interrupt” HAL-function: returvärde = alt_irq_register(parametrar);

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)39 Initiera för avbrott i Nios-II 1.Kopiera ”stubbe” till adress 0x Initiera IO-enhet, olika för varje IO-enhet 3.Skriv och registrera en Interrupt Handler för varje avbrottskälla 4.Initiera bitar i IENABLE / ctl3 5.Initiera PIE-biten i STATUS / ctl0

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)40 3. Synchronous Exceptions Internal Exceptions 1.Inre händelser orsaker avbrott (Internal) 2.Orsakas av hårdvara internt i CPU:n 3.Exempel (olika typ av ”error”) Unimplemented instructions Overflow Misaligned Memory Reference Divide by zero Access violation...

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)41 Exceptions Exception Vector Table  Programräknaren får ett nytt värde som anges av hårdvaran till 0x  Avbrottsvektortabell används ej av hårdvaran i Nios-II  Returadress sparas på lämplig plats (ea/r29)  Mjukvaran kan administreras i tabell-form som liknar en avbrottsvektortabell

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)42 Priority - prioritet Viktiga frågor  Exekverar processorn på en viss prioritet ? Var finns information om CPU-priority ?  Har varje exception olika prioritet ?  Prioritet för en external interrupt ?  Prioritet för en TRAP-instruktion ?  Prioritet för en intern exception ?

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)43 Nios-II Priority  Interrupt har en viss prioritet, 31—00 (hur avgörs prioritet ?)  TRAP-instruktion, är ohejdbar (varför?)  Intern exception, är ohejdbar (varför?)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)44 Nios-II Exceptions Enable/Disable Exception 1.Globally Enable/Disable Interrupt by PIE-bit 2.Selectively Enable/Disable Interrrupt by bits in ienable 3.TRAP instructions can not be disabled 4.Internal exceptions can not be disabled 5.Selectively Enable/Disable each I/O (lab3) 6.Acknowledge interrupt signals from I/O

23 August August 2014 February 4, 2009 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)45 IS1200 Datorteknik Laboration 3 tips om I/O-interrupts

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)46 Nios-2 Interrupt signals CPU MEM BUS I/O TIMER_1 IRQ10 TOGGLES18 IRQ3 KEYS4 IRQ2 IRQ bus logic I/O Uart_0 IRQ4

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)47 Nios-2 Interrupt signals  32 separata IRQ som kan aktiveras av extern hårdvara  Aktiva IRQ kan pollas av program  Figur 3-1 i manualen

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)48 Laboration 3 Interrupts 1. T-Time (avbrott från timer_1)......T T T Point-And-Tick (utökat med tidsutskrift) : : : Trapping the Dash (utökat med trap i main) : : : Interrupting the Line (trap i intHandler) : :00---

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)49 Laboration 3 Interrupts (cont.) 5. The Key (interrupts from KEYS4) --59:59--D---U- 6. Toggles (and interrupts from TOGGLES18) __Ss___DdU___Dd__SsU__59:59___ 7. Nested Interrupts (interrupt in interrupthandler) ___SDdUs_____SDdsU__59:59 8. Surprice Assignement (surprice)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)50 Nios pio Hokus Pokus KEYS4 and TOGGLES18  Direction Register: 0=in, 1=out  Bidirectional bits are possible, ”has_tri”  Interrupt Mask: 0=disable, 1=enable (each bit)  Edgecapture: rising, falling, any, none (all bits)  Only input pins can capture edges  Clear Edge Capture Register, Write anything to edge capture register at 0xNNC

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)51 Interrupt-Handler Vilken knapp i KEY? irq02-int valbar adress key0-int valbara adresser key2-int key3-int retur ECR-00? ECR-01? ECR-02? ECR03? key1-int retur error

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)52 Interrupt-Handler knapp uppe eller nere ? key1-int valbar adress key1-up-int valbara adresser retur Up ? Down ? key1-down-int retur error

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)53 Nios Timer Hårdvaru-figur counter clock period copy write from program using store run start time-out Q Q’ D cl set clear stop zero snap-shot read from program using load copy store Q Q’ D cl load

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)54 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph Nios timer_1 Status / Control etc Run T0 - Time-Out ITO cont start stop 15 0 IRQ at index 10

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)55 Nios timer_1 Hokus Pokus  TO - Time Out, bit 0 at address 0x920  Run, bit 1 på adress 0x920  Clear Time Out, Write anything to 0x920  Continous Counting, ”set” bit 1 at 0x924  Start Run, ”set” bit 2 at 0x924  Stop Counting, ”set” bit 3 at 0x924  WR anything to snapshot, copy Counter to SnapShot  Enable interupt, set bit 0 at 0x924

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)56 Laboration 3 Interrupts (forts.)  Avbrott från serieportar är möjligt  Avbrott då RxRdy blir 1 (IBF)  Avbrott då TxRdy blir 1 (OBE)  Det finns: Separata ”Enable/Disable Interrupt” för IBF/RxRdy och OBE/TxRdy

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)57 Nios uart_0 Memory Mapped Addresses 0x860 0x864 0x868 RxRdy (IBF) TxRdy (OBE) RxDATA (RD) uart_10x880-88F TxDATA (WR) uart_0

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)58 Nios uart_0 Memory Mapped Addresses 0x860 0x864 0x868 0x86C RxDATA (RD) uart_00x860-86F (IRQ at index 4) uart_1 0x880-88F (IRQ at index 5) TxDATA (WR) Uart_0: IRQ at index 4 Enable interrupt for RxRdy - IRxRdy Enable interrupt for TxRdy - ITxRdy

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)59 IRQ-Handler (för KEYS4) letar fram aktuell avbrottskälla irq02-int valbar adress KEY0int valbara adresser KEY0 ? KEY1 ? KEY2 ? KEY3 ? ??? retur KEY3int

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)60 IRQ-Handler (för TOGGLES18) letar fram aktuell avbrottskälla irq03-int valbar adress TOGGLES0int valbara adresser TOGGLES0 ? TOGGLES1 ?... TOGGLES8 ?... ??? retur TOGGLES8int

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)61 Int from IRQ-02 KEYS4 irq02-int: pushr8 moviar24, 0x840# bas-adress till KEYS4 ldwr8, 12(r24)# läs ECR stwr0, 12(r24)# clear ECR andir24, r8, 0b0001# KEY0 ? bner24, r0, KEY0int# yes, int from KEY0 andir24, r8, 0b0010# KEY1 ? bner24, r0, KEY1int# yes, int from KEY1...# and perhaps 2 more keys (r24=et) (kom ihåg att göra ”pop r8” innan eret)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)62 Int from IRQ-2 KEYS4: key0int KEY0-int: push...# vid behov # skriv ut ’D’ paus ’d’ om ”down” pop...# vid behov popr8# vid behov eret# returhopp

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)63 Int from IRQ-03 TOGGLES18 irq03-int: pushr8 moviar24, 0x850# bas-adress till TOGGLES18 ldwr8, 12(r24)# läs ECR stwr0, 12(r24)# clear ECR andir24, r8, 0b0001# TOGGLES0 ? bner24, r0, TOG0int# yes, int from TOGGLES0 andir24, r8, 0b0010# TOGGLES1 ? bner24, r0, TOG1int# yes, int from TOGGLES1...# and maybe 16 more toggles

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)64 IRQ-Handler (för uart_0) letar fram aktuell avbrottskälla irq04-int valbar adress Rx-int valbara adresser RxRdy ?. TxRdy ? ??? Tx-int retur

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)65 Int from IRQ-04 uart_0 irq04-int: pushr8 moviar24, uart_0# adress till uart0 ldwr8, 12(r24)# läs status andir24, r8, 0x80# RxRdy ? bner24, r0, Rx0-int# yes, int from RxRdy andir24, r8, 0x40# TxRdy ? bner24, r0, Tx0-int# yes, int from TxRdy...

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)66 IRQ-Handler (för timer_1) letar fram aktuell avbrottskälla irq10-int valbar adress Timer_1-int valbara adresser... T1-Int ?. ??? retur

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)67 Int from IRQ-10 timer_1 irq10-int: moviar24, timer_1# adress till timer ldwr24, 0(r24)# läs status andir24, r24, 0b1# TO=1 ? beqr24, r0, NoTimeInt # no, int from timer TimerInt: moviar24, timer# adress till timer stwr0, 0(r24)# clear Time-Out...

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)68 Laboration 3 Blandad kod Byt ut en av subrutinerna mot funktion (metod) skriven i C-kod (Java) (t.ex. tick) Återanvänd rutin från hemlab-1. Kräver kännedom om kompilatorns praxis för parameteröverföring !

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)69 Några användbara makro:n till Nios-2.macroEI# Enable Interrupt rdctl r24, ctl0# varför r24/et ? orir24, r24, 0b01# wrctl ctl0, r24.endm.macroDI# Disable Interrupt pushr8# r8 istf r24 rdctlr8, ctl0# för det kan bli andir8, r8, 0xFE# avbrott här wrctl ctl0, 8 popr8.endm

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)70 Några användbara makro:n för Nios-2.macroPUSH reg# lägg reg på stack subisp, sp, 4 stw\reg, 0(sp).endm.macroPOP reg# från stack till reg ldw\reg, 0(sp) addisp, sp, 4.endm; OBS ej reg=sp OBS

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)71 Samlad information IRQ-levelUnitAddressAcknowledge... IRQ-02KEYS40x840stw any, 0xC(0x840) IRQ-03TOGGLES180x850stw any, 0xC(0x850) IRQ-04uart-00x860read/write data IRQ-05uart-10x880read/write data... IRQ-10timer_10x920stw any, 0(0x920)...

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)72 HAL-functions Hardware Abstraction Layer  Koppla en exceptionhandler till ett index (”registrera”) returvärde = alt_irq_register(3 parametrar) (bra beskrivning finns i lab-PM nios2int !)  Det finns även (används i lab nios2int ! Se lab-PM)  Tillåt avbrott med högre prioritet än index (dvs avbrott med lägre indexvärden) oldmask=alt_irq_interruptible(index)  Återställ till tidigare läge med avbrott avstängda alt_irq_non_interruptible(oldmask)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)73 static alt_u32 alt_irq_interruptable(alt_u32 priority) (används i lab nios2int) Tillåt endast avbrott med högre prioritet än angiven priority dvs med index lägre än priority Som returvärde erhålls gamla innehållet i register IENABLE Eller på en högre akademisk nivå ”den gamla prioritetsmasken” Ja, det görs EI dvs bit med index 0 i STATUS ettställs aktivt Bottom Up: Nollställ alla bitar med samma eller högre index i IENABLE/ctl3 Samt ettställ bit med index 0 i STATUS (”Enable Interrupt”) Returnera gamla värdet av från IENABLE/ctl3 (som kan kallas oldmask)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)74 void alt_irq_non_interruptable(alt_u32 oldmask) (används i lab nios2int) Stäng av alla avbrott och ”återställ” IENABLE Inparameter oldmask förutsätts vara returvärdet från oldmask = alt_irq_interruptable(index) Inget returvärde Bottom-Up: Nollställ bit med index 0 i STATUS (ctl0) Ettställ bitar med samma eller lägre prioritet som var ettställda ”tidigare” in i IENABLE

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)75 HAL-functions Hardware Abstraction Layer  stäng av alla avbrott (index(31—00) alt_irq_disable_all()  tillåt alla avbrott (index 31—00) alt_irq_enable_all()  Det finns även (används troligen ej i lab nios2int) alt_irq_enable(index) och alt_irq-disable(index)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)76 alt_irq_context alt_irq_disable_all(void) Nollställ bit med index 1 i STATUS/ctl0 Och: Returparameter är en int med gamla STATUS/ctl0 (alt_irq_context är en int) Det finns en tanke att denna returparameter ska användas som inparameter till en kommande alt_irq_enable_all() som hör ihop med denna alt_irq_disable_all()

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)77 void alt_irq_enable_all(alt_irq_context context) Ettställ bit med index 1 i STATUS/ctl0 Men: Inparameter är en int (alt_irq_context är en int) och det är dess värde som skrivs till ctl0 (!) Det finns en tanke (?) att man som inparameter ska använda returparameter för den alt_irq_disable_all() som hör ihop med denna alt_irq_enable_all()

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)78 int alt_irq_disable(alt_u32 id) Nollställ bit med index id i IENABLE/ctl3 Returvärde är alltid 0 Effekten är att man kan förbjuda avbrott på en viss nivå / med ett visst index

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)79 int alt_irq_enable(alt_u32 id) Ettställ bit med index id i IENABLE/ctl3 Returvärde är alltid 0 Effekten är att man kan tillåta avbrott på en viss nivå / med ett visst index

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)80 int alt_irq_enabled(void) Returvärde är bit med index 0 i STATUS/ctl0 Ungefär en fråga som returnerar TRUE/FALSE

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)81 Normal programming function call in main program CALL function RET

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)82 Non-nested interrupts interrupt in main program exception ERET EI ”EI” ”DI”

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)83 Nested interrupts interrupt in interrupt handler exception ERET EI ”EI” ”DI” ”EI”

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)84 Nested interrupts exception ERET EI ”EI” ”DI” exception ”DI” ”EI” Save EI DI Restore

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)85 Nested interrupts using HAL-functions exception ERET EI ”EI” ”DI” exception ”DI” ”EI” EI DI oldmask=alt_irq_interruptible(index) alt_irq_non_interruptible(oldmask)

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)86 Nested interrupts using HAL-functions exception ERET EI ”EI” ”DI” exception ”DI” ”EI” EI DI oldmask=alt_irq_interruptible(index) alt_irq_non_interruptible(oldmask) TogglesInt Skriv punkter KeysInt

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)87 Enable (all) Interrupts ettställ PIE-biten i status #assembler-kod rdctlrx, ctl0#vilket register rx? orirx, rx, 0b01# wrctl ctl0, rx

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)88 Enable (all) Interrupts ettställ PIE-biten i status # inför ett makro.macroEI# Enable Interrupt rdctlr24, ctl0# varför r24/et ? orir24, r24, 0b01# wrctl ctl0, r24.endm

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)89 Enable (all) Interrupts ettställ PIE-biten i status # inför en subrutin utan inparameter # Enable Interrupt EI:rdctlr24, ctl0# vilket register? orir24, r24, 0b01# wrctl ctl0, r24 ret

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)90 Enable (all) Interrupts ettställ PIE-biten i status # inför en C-function voidEI(void) { ???? } // ctl-register är oåtkomliga från C-kod // Måste skrivas I assembler

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)91 Enable (all) Interrupts skriv till PIE-biten i status # inför en HAL-function # Altera “erbjuder” HAL-functions # HAL - Hardware Abstraction Layer void alt_irq_enable_all(alt_irq_context context) // ctl-register är oåtkomliga från C-kod // Är skriven i assembler

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)92 Enable special Interrupts ettställ bit i ienable #assembler-kod rdctlrx, ctl3#vilket register rx? orirx, rx, 0b04#vilken bit ? wrctl ctl3, rx

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)93 Enable special Interrupts ettställ bit i ienable # inför ett makro med index i register.macroEI reg# Enable Interrupt rdctlr24, ctl3# varför r24/et ? orir24, r24, reg # wrctl ctl3, r24.endm

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)94 Enable special Interrupts ettställ bit i ienable # inför ett makro med index (“immediate”).macroEISpec index# Enable Special Interrupt pushr8 movir8, 1# why r8 ? sllir8, r8, \index# build mask rdctlr24, ctl3# why r24/et ? orir24, r24, r8 # wrctlctl3, r24 popr8.endm

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)95 Enable special Interrupts ettställ bit i ienable # inför en subrutin med en inparameter index i r4 # Enable SpecialInterrupt EISpec:pushr8 movir8, 1# why r8 ? sllir8, r8, r4# build mask rdctlr24, ctl3# why r24/et ? orir24, r24, r8 # wrctlctl3, r24 popr8 ret

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)96 Enable special Interrupts ettställ bit i ienable # inför en C-function voidEI(index) { ???? } // ctl-register är oåtkomliga från C-kod // Måste skrivas I assembler

23 August 2014 IS1200 Datorteknik vt2009 föreläsning 7, (E och I m.fl.)97 Enable special Interrupts ettställ bit i ienable # inför en HAL-function # Altera “erbjuder” HAL-functions # HAL - Hardware Abstraction Layer int alt_irq_enable(alt_irq_context index) // ctl-register är oåtkomliga från C-kod // Är skriven i assembler