Presentation laddar. Vänta.

Presentation laddar. Vänta.

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.

Liknande presentationer


En presentation över ämnet: "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."— Presentationens avskrift:

1 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

2 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)2 F1F2F3F4F5F6F7F8F9F10Ö2Ö1Ö3Ö4Ö5LAB-1LAB-2Hemlab-1Ö6Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time Nios2io C-kod Nios2int Cache-minnen CPU-scheduling 2G1518 Datorteknik http://www.imit.kth.se/courses/2G1518 http://www.imit.kth.se/courses/2G1518

3 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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

4 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)4 Viktiga delar i en dator CPU MEM BUS I/O program data

5 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)5 Programexekvering i två steg, normalfall (decode) EXECUTE FETCH (update PC)

6 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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

7 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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)

8 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)8 Viktiga delar i en dator IRQ-signaler, Interrupt ReQuest CPU MEM BUS I/O program data IRQ (t.ex.IRQ31—IRQ00)

9 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)9 Exception Handler Huvudprogram returhopp retur-adress ”hopp vid anrop” exception ExceptionHandler var finns ExceptionHandler ? var lagras adressen till ExceptionHandler ? var sparas returadressen ? intruction

10 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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... 0 1 2 3 NN null............

11 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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/write (interrupt pending) 5. (det finns fler men de diskuteras ej här)

12 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)12 Nios-II Statusregister 0 status, ctl0 31 2 1 0 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 klart!)

13 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)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)

14 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)14 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

15 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)15 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

16 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)16 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)

17 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)17 ctl3 ctl4 No Flip-Flops ! Flip-Flops ! Signal Levels ! EI / DI

18 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)18 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)

19 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)19 Exceptions NiosII: Alltid ”hopp” till 0x800020 huvudprogram returadress ”hopp vid anrop” exception instruction jmp ExcHandler 0x800020: Fast adress

20 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)20 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:

21 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)21

22 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)22 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 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)23 Interrupt-Handler letar fram aktuell IRQ-handler IntHandler valbar adress irq00-int valbara adresser IRQ-00? IRQ-01? IRQ-02?. IRQ-04?. IRQ-31? ??? irq04-int irq31-int retur

24 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)24 Vilken Interrupt ? figur 3-2 i manualen IntHandler: 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

25 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)25 2. Synchronous Exceptions TRAP instruction zException med hjälp av TRAP-instruktion zPlaceras av programmeraren på önskad och känd plats. Används t.ex. för OS System Call zNios-2: TRAP erbjuder en enda TRAP till den enda fasta adressen = 0x800020 zParameter (i r4) möjliggör olika SysCall

26 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)26 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

27 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)27 Interrupt or Trap ? (cont.) figur 3-2 i manualen REPRIS zExcHandler:# r24/et = exception temporary zrdctlr24, ctl1# copy ctl1/estatus andir24, r24, 0b1# select index 0 beqr24, r0, NoInt# if PIE == 0 zrdctlr24, ctl4# copy ctl4/ipending beqr24, r0, NoInt# if ctl4 == 0 zIntHandler:...# Interrupt Handler... zNoInt:...# code see below

28 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)28 REPRIS

29 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)29 Interrupt or Trap figur 3-2 i manualen... NoInt:# Alternativ 1 ldwr24, -4(r29)# kopiera instruktion moviar1, trapcode# kopiera TRAP code beqr1, r24, TrapHandler# yes, TRAP NoTrap:.......equ trapcode, 0x003B683A# op-code of TRAP

30 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)30 Interrupt or Trap figur 3-2 i manualen... NoInt:# Alternativ 2 ldwr24, -4(r29)# kopiera instruktion moviar1, trapdum# kopiera TRAP code ldwr1, 0(r1)# till r1 beqr1, r24, TrapHandler# yes, TRAP NoTrap:.......data# eller i.text trapdum:trap# op-code of TRAP

31 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)31 Vilken TRAP System Call med TRAP TrapHandler: moviar1, 0# konstant 0 till r1 beqr4, r1, SysCall-0# javisst moviar1, 1# konstant 1 till r1 beqr4, r1, SysCall-1# javisst...

32 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)32 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

33 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)33 Interrupts in many CPU:s 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... 0 1 2 3 31 null

34 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)34 Registrera en Interrupt Handler vad menas med det ? zKoppla ihop en vald Interrupt Handler med en avbrottssignal med ett visst index zSkriv in startadress på rätt plats i avbrottsvektortabellen zKallas ibland ”register an interrupt” returvärde = alt_irq_register(parametrar);

35 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)35 Initiera för avbrott i Nios-II zKopiera ”stubbe” till adress 0x800020 zInitiera IO-enhet, olika för varje IO-enhet zInitiera bitar i IENABLE / ctl3 zInitiera PIE-biten i STATUS / ctl0 zSkriv och registrera en Interrupt Handler för varje avbrottskälla

36 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)36 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...

37 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)37 Exceptions Exception Vector Table  Programräknaren får ett nytt värde som anges av hårdvaran till 0x800020  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

38 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)38 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 ?

39 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)39 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?)

40 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)40 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

41 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)41 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 0x800020 (Remark: return address must be decremented by 4 before executing eret in interrupt handler but not in trap handler)

42 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)42 ERET-instruction eret # return from exception using content of r29 as return address 1.PC  ea 2.status  estatus

43 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)43 Ändra i ctl-register Read – Modify - Write Exempel på användbara instruktioner rRDCTL ri, ctlj# kopiera ctlj till ri rWRCTL ctlj,ri # kopiera ri till ctlj rANDIri, rj, ”mask”# ”nollställ”, # ”maska fram” rORIri, rj, ”mask”# ”ettställ” rXORIri, rj, ”mask”# ”invertera”

44 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)44 IS1200 Datorteknik Laboration 3 Ny/ändrad from våren 2008 tips om I/O-interrupts

45 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)45 Nios-2 Interrupt signals CPU MEM BUS I/O TIMER_1 IRQ10 TOGGLES18 IRQ3 KEYS4 IRQ2 IRQ31--00 bus logic I/O Uart_0 IRQ4

46 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)46 Nios-2 Interrupt signals z32 separata IRQ som kan aktiveras av extern hårdvara zAktiva IRQ kan pollas av program zFigur 3-1 i manualen

47 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)47 Laboration 3 Interrupts 1. T-Time (avbrott från timer_1)......T.......T.......T.... 2. Point-And-Tick (utökat med tidsutskrift)......59:59.......00:00.......00:01.... 3. Trapping the Dash (utökat med trap i main) ------59:59------00:00-----00:01---- 4. Interrupting the Line (trap i intHandler) ------ 59:59------ 00:00---

48 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)48 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)

49 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)49 Nios pio Hokus Pokus KEYS4 and TOGGLES18 zDirection Register: 0=in, 1=out zBidirectional bits are possible, ”has_tri” zInterrupt Mask: 0=disable, 1=enable (each bit) zEdgecapture: rising, falling, any, none (all bits) zOnly input pins can capture edges zClear Edge Capture Register, Write anything to edge capture register at 0xNNC

50 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)50 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

51 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)51 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

52 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)52 Nios timer_1 Hokus Pokus zTO - Time Out, bit 0 at address 0x920 zRun, bit 1 på adress 0x920 zClear Time Out, Write anything to 0x920 zContinous Counting, ”set” bit 1 at 0x924 zStart Run, ”set” bit 2 at 0x924 zStop Counting, ”set” bit 3 at 0x924 zWR anything to snapshot, copy Counter to SnapShot zEnable interupt, set bit 0 at 0x924

53 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)53 Laboration 3 Interrupts (forts.) zAvbrott från serieportar är möjligt zAvbrott då RxRdy blir 1 (IBF) zAvbrott då TxRdy blir 1 (OBE) zDet finns: Separata ”Enable/Disable Interrupt” för IBF/RxRdy och OBE/TxRdy

54 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)54 Nios uart_0 Memory Mapped Addresses 0x860 0x864 0x868 RxRdy (IBF) TxRdy (OBE) RxDATA (RD) uart_10x880-88F 31 16 15 8 7 6 0 TxDATA (WR) uart_0

55 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)55 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) 31 16 15 8 7 6 0 TxDATA (WR) Uart_0: IRQ at index 4 Enable interrupt for RxRdy - IRxRdy Enable interrupt for TxRdy - ITxRdy

56 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)56 IRQ-Handler (för KEYS4) letar fram aktuell avbrottskälla irq02-int valbar adress KEY0int valbara adresser KEY0 ? KEY1 ? KEY2 ? KEY3 ? ??? retur KEY3int

57 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)57 IRQ-Handler (för TOGGLES18) letar fram aktuell avbrottskälla irq03-int valbar adress TOGGLES0int valbara adresser TOGGLES0 ? TOGGLES1 ?... TOGGLES8 ?... ??? retur TOGGLES8int

58 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)58 Int from IRQ-02 KEYS4 irq02-int: moviar24, 0x840# bas-adress till KEYS4 ldwr1, 12(r24)# läs ECR stwr0, 12(r24)# clear ECR andir24, r1, 0b0001# KEY0 ? bner24, r0, KEY0int# yes, int from KEY0 andir24, r1, 0b0010# KEY1 ? bner24, r0, KEY1int# yes, int from KEY1...# and perhaps 2 more keys (r24=et och r1=at)

59 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)59 Int from IRQ-2 KEYS4: key0int KEY0-int: push...# vid behov # skriv ut ’D’ paus ’d’ om ”down” pop...# vid behov subir29, r29, 4# justera returadress eret# returhopp

60 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)60 Int from IRQ-03 TOGGLES18 irq03-int: moviar24, 0x850# bas-adress till TOGGLES18 ldwr1, 12(r24)# läs ECR stwr0, 12(r24)# clear ECR andir24, r1, 0b0001# TOGGLES0 ? bner24, r0, TOG0int# yes, int from TOGGLES0 andir24, r1, 0b0010# TOGGLES1 ? bner24, r0, TOG1int# yes, int from TOGGLES1...# and maybe 16 more toggles

61 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)61 IRQ-Handler (för uart_0) letar fram aktuell avbrottskälla irq04-int valbar adress Rx-int valbara adresser RxRdy ?. TxRdy ? ??? Tx-int retur

62 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)62 Int from IRQ-04 uart_0 irq04-int: moviar24, uart_0# adress till uart0 ldwr1, 12(r24)# läs status andir24, r1, 0x80# RxRdy ? bner24, r0, Rx0-int# yes, int from RxRdy andir24, r1, 0x40# TxRdy ? bner24, r0, Tx0-int# yes, int from TxRdy...

63 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)63 IRQ-Handler (för timer_1) letar fram aktuell avbrottskälla irq10-int valbar adress Timer_1-int valbara adresser... T1-Int ?. ??? retur

64 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)64 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...

65 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)65 Möjligt: Flödesschema för korsvis kommunikation avbrottstyrd med paritetskontroll in_charparmakerec_charpartest eret errmakesend_charout_char eret RxRdy-INT

66 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)66 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 !

67 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)67 Några användbara makro:n till Nios-2.macroEI# Enable Interrupt rdctl r24, ctl0 orir24, r24, 0b01# wrctl ctl0, r24.endm.macroDI# Disable Interrupt rdctlr24, ctl0 andir24, r24, 0xFE# wrctl ctl0, r24.endm

68 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)68 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

69 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)69 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)...

70 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)70 HAL-functions Hardware Abstraction Layer zkoppla en exceptionhandler till ett index returvärde = alt_irq_register(parametrar) zstäng av alla avbrott (index(31—00) alt_irq_disable_all() ztillåt alla avbrott (index 31—00) alt_irq_enable_all() zDet finns även alt_irq_enable() och alt_irq-disable() zDet finns även alt_irq_interruptible() och alt_irq_non_interruptible()

71 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)71 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() som hör ihop med denna alt_irq_disable()

72 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)72 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() som hör ihop med denna alt_irq_enable()

73 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)73 int alt_irq_disable(alt_u32 id) Nollställ bit med index id i IENABLE/ctl3 Returvärde är alltid 0

74 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)74 int alt_irq_enable(alt_u32 id) Ettställ bit med index id i IENABLE/ctl3 Returvärde är alltid 0

75 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)75 int alt_irq_enabled(void) Returvärde är bit med index 1 i STATUS/ctl0 Ungefär en fråga som returnerar TRUE/FALSE

76 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)76 static alt_u32 alt_irq_interruptable(alt_u32 priority) Tillåt endast avbrott med högre prioritet än priority dvs med index lägre än priority Som returvärde erhålls gamla 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 Returnera gamla värdet av från IENABLE/ctl3

77 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)77 void alt_irq_non_interruptable(alt_u32 mask) Stäng av alla avbrott och ”återställ” IENABLE mask förutsätts vara insamlad med mask = alt_irq_interruptable(index) Inget returvärde Bottom-Up: Nollställ bit med index 0 i STATUS Ettställ bitar med samma eller lägre prioritet som var ettställda ”tidigare” in i IENABLE

78 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)78 Exceptions in Nios-II nios2int software structure trap 0x800020:”jmp ExcHand” IRQ03 IRQ04 IRQ10 error IntHand: No Keys Yes Toggle Yes Timer Yes subi r29, r29, 4 eret No TrapHand: OutChar eret instr int ExcHand: Ienable=0 Trap ? ElseHand Yes No EPIE=0 Yes No NoInt:

79 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)79 Int ?Trap ? ElseHand Yes No Ienable=0 Trap ? ElseHand Yes No EPIE=0 Yes No NoInt:

80 13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)80 Exceptions in Nios-II oslab: software structure trap 0x800020:”jmp ExcHand” ExcHand: IntHand: subi r29, r29, 4 Context Switch eret #Yield br CS TrapHand: instr int Ienable=0 Trap ? ElseHand Yes No EPIE=0 Yes No NoInt:


Ladda ner ppt "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."

Liknande presentationer


Google-annonser