2 June 2015 2G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht 2006 - vt 2006 (period 2-3) för D2.

Slides:



Advertisements
Liknande presentationer
2D1311 Programmeringsteknik med PBL
Advertisements

William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
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.
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.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Programmeringsteknik K och Media
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Pekare och speciell programstruktur i inbyggda system
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Styrteknik: Programmering med MELSEC IL PLC2A:1
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
Föreläsning 14 ”Enkel” Filhantering.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
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 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.
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.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
2 April 2015 IS1200 Datorteknik o k, föreläsning CE - F31 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4.
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.
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
1 June 20152G1502, föreläsning 3, vt G1502 Datorteknik allmän kurs Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version.
1 June G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning Processorkonstruktion 2. DMA, Direct.
1 June G1502, Föreläsning 9, vt2004 för IT1 2G1502 Datorteknik allmän kurs Föreläsning 9 1. Processorkonstruktion 2. DMA, Direct Memory Access 3.
2 June 2015IS1200, Förel 9, vt08 (Kista)1 IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) vt 2008 (period.
2 June 20152G1518, Förel 9 vt2006 (E3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version vt 2006 för.
2G1502 Datorteknik allmän kurs
2 June G1518, föreläsning 4, ht2006 (D2)1 2G1518 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8 ht.
2 June G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
4 June 20152G1518, Förel 9 ht2005 (D3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version ht 2005 för.
4 June G1518, Föreläsning 9, vt07 (IT/ME/2IT)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version.
Föreläsning 1 Introduktion till kursen. Algoritmer
10 June G1518, föreläsning 3, vt2007 (E/I/CLMDA)1 2G1518 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4 vt 2007.
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.
Styrteknik 7.5 hp distans: Tidskretsar, räknare PLC4B:1 Bilder Olika exempel med Timers och Counters En Enkel Timer med MELSEC IL Om BTN_DGVG.
20 June G1502, Föreläsning 8 vt2004, för IT1 2G1502 Datorteknik allmän kurs Föreläsning 8 1. CPU-scheduling 2. Semaforer (förberedelse till lab 5)
1 2G1502 Datorteknik allmän kurs Föreläsning 3 Programmering med hopp Programmering av Nios.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
Shannon dekomposition
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting.
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.
11 August 2015IS1200 Datorteknik, föreläsning 41 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8.
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
3 October 2015 IS1200 Datorteknik ht2009 föreläsning 3, (D2)1 IS1200 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4.
CHI-TSONG CHEN KAPITEL 2- Systems Kortfattade läsanvisningar Läs hela kapitlet utom 2.9 och 2.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.
17 October 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 Del 1. CPU-scheduling Del 2. Semaforer (förberedelse till hemlab.
Migreringserfarenheter från fältet
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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

2 June G1518, Föreäsning 7, vt 2007 (D2)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

2 June G1518, Föreäsning 7, vt 2007 (D2)3 Litteraturhänvisningar +Kursboken, valda delar av kapitel … Avbrott, principer (ej MIPS) +Nios-2-manualen, chap 3 (May 2005) +Exempelsamling del 7 med lösningar +Lab-PM för laboration 3

2 June G1518, Föreäsning 7, vt 2007 (D2)4 Viktiga delar i en dator CPU MEM BUS I/O program data

2 June G1518, Föreäsning 7, vt 2007 (D2)5 Programexekvering i två steg, normalfall (decode) EXECUTE FETCH (update PC)

2 June G1518, Föreäsning 7, vt 2007 (D2)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

2 June G1518, Föreäsning 7, vt 2007 (D2)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)

2 June G1518, Föreäsning 7, vt 2007 (D2)8 Viktiga delar i en dator IRQ-signaler, Interrupt ReQuest CPU MEM BUS I/O program data IRQ (t.ex.IRQ31—IRQ00)

2 June G1518, Föreäsning 7, vt 2007 (D2)9 Exception Handler huvudprogram returhopp retur-adress ”hopp vid anrop” exception ExceptionHandler var finns ExceptionHandler ? var lagras adressen till ExceptionHandler ? var sparas returadressen ? intruction

2 June G1518, Föreäsning 7, vt 2007 (D2)10 Nios-2. Exceptions Control Registers Det finns ”fem” Control Registers 0.status - ctl0, read / write zestatus - ctl1, read / write zbstatus - ctl2, read / write zienable - ctl3, read / write zipending - ctl4, read / write (det finns fler men de diskuteras ej här)

2 June G1518, Föreäsning 7, vt 2007 (D2)11 Nios-2 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

2 June G1518, Föreäsning 7, vt 2007 (D2)12 Nios-2 Statusregister 0 status, ctl U PIE PIE = Processor Interrupt Enable (1=enable, 0=disable) U = User Mode (1=User Mode, 0=Supervisor Mode)

2 June G1518, Föreäsning 7, vt 2007 (D2)13 Nios-2 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)

2 June G1518, Föreäsning 7, vt 2007 (D2)14 Nios-2 Statusregister 1 estatus, ctl1  Då en exception accepteras, kopieras status till estatus så att ”gamla” status- värden kan användas av Exception Handler  Vid retur från Exception Handler, med instruktionen eret, kopieras estatus tillbaks till status

2 June G1518, Föreäsning 7, vt 2007 (D2)15 Nios-2 Statusregister 3 ienable, ctl3 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-2 i manualen

2 June G1518, Föreäsning 7, vt 2007 (D2)16 Nios-2 Statusregister 4 ipending, ctl4 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 eller disable  värde 1 avbrott begärs och tillåts  Se figur 3-2 i manualen

2 June G1518, Föreäsning 7, vt 2007 (D2)17 Exceptions Nios2: Alltid ”hopp” till 0x20020 huvudprogram returadress ”hopp vid anrop” exception instruction jmp ExcHandler 0x20020: Fast adress

2 June G1518, Föreäsning 7, vt 2007 (D2)18 Exception-Handler Nios-2: orsak till exception huvudprogram returadress ”hopp vid anrop” exception ExcHandler OPCODE reg jmp ExcHandler 0x20020: fast adress valbar adress ? IntHandler valbar adress TrapHandler valbar adress ElseHandler valbar adress

2 June G1518, Föreäsning 7, vt 2007 (D2)19 Interrupt or Trap ? figur 3-3 i manualen ExcHandler: rdctlr24, ctl1# read estatus andir24, r24, 0b1# PIE was 1 ? beqr24, r0, NoInt# No Interrupt rdctlr24, ctl4# read ipending beqr24, r0, NoInt# No Interrupt IntHandler:...# Interrupt Handler... NoInt:...# code later

2 June G1518, Föreäsning 7, vt 2007 (D2)20 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

2 June G1518, Föreäsning 7, vt 2007 (D2)21 Vilken Interrupt ? figur 3-3 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...

2 June G1518, Föreäsning 7, vt 2007 (D2)22 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 = 0x20020 zParameter (i r4) möjliggör olika SysCall

2 June G1518, Föreäsning 7, vt 2007 (D2)23 Exception-Handler Interrupt eller Trap ? huvudprogram returadress ”hopp vid anrop” exception OPCODE reg jmp ExcHandler 0x20020: fast adress valbar adress ExcHandler ? IntHandler valbar adress TrapHandler valbar adress ElseHandler valbar adress

2 June G1518, Föreäsning 7, vt 2007 (D2)24 Interrupt or Trap ? (cont.) figur 3-3 i manualen ExcHandler: rdctlr24, ctl1# read estatus andir24, r24, 0b1# PIE was 1 ? beqr24, r0, NoInt# No Interrupt rdctlr24, ctl4# read ipending beqr24, r0, NoInt# No Interrupt IntHandler:...# Interrupt Handler... NoInt:...# code coming

2 June G1518, Föreäsning 7, vt 2007 (D2)25 Interrupt or Trap figur 3-3 i manualen... NoInt: ldwr24, -4(r29)# kopiera instruktion moviar1, trapcode# kopiera TRAP code beqr1, r24, TrapHandler# yes, TRAP NoTrap: equ trapcode, 0x003B683A# op-code of TRAP

2 June G1518, Föreäsning 7, vt 2007 (D2)26 Interrupt or Trap figur 3-3 i manualen... NoInt: ldwr24, -4(r29)# kopiera instruktion moviar1, trapdum# kopiera TRAP code ldwr1, 0(r1)# till r1 beqr1, r24, TrapHandler# yes, TRAP NoTrap: data trapdum:trap# op-code of TRAP

2 June G1518, Föreäsning 7, vt 2007 (D2)27 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...

2 June G1518, Föreäsning 7, vt 2007 (D2)28 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...

2 June G1518, Föreäsning 7, vt 2007 (D2)29 Exceptions Exception Vector Table  Programräknaren får ett nytt värde som anges av hårdvaran till 0x20020  Avbrottsvektortabell används ej av hårdvaran i Nios-2  Returadress sparas på lämplig plats (ea/r29)  Mjukvaran kan administreras i tabell-form som liknar en avbrottsvektortabell

2 June G1518, Föreäsning 7, vt 2007 (D2)30 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 ?

2 June G1518, Föreäsning 7, vt 2007 (D2)31 Nios Priority  Interrupt har en viss prioritet, 31—00 (hur avgörs prioritet ?)  TRAP-instruktion, är ohejdbar (varför?)  Intern exception, är ohejdbar (varför?)

2 June G1518, Föreäsning 7, vt 2007 (D2)32 Nios-2 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

2 June G1518, Föreäsning 7, vt 2007 (D2)33 Nios-2 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 0x20020 (Remark: return address must be decremented by 4 before executing eret in interrupt handler but not in trap handler)

2 June G1518, Föreäsning 7, vt 2007 (D2)34 ERET-instruction eret # return from exception using content of r29 as return address PC  ea status  estatus

2 June G1518, Föreäsning 7, vt 2007 (D2)35 Ä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 rANDri, rj, ”mask”# ”nollställ”, # ”maska fram” rORri, rj, ”mask”# ”ettställ” rXORri, rj, ”mask”# ”invertera”

2 June G1518, Föreäsning 7, vt 2007 (D2)36 2G1518 Datorteknik Laboration 3 tips om I/O-interrupts

2 June G1518, Föreäsning 7, vt 2007 (D2)37 Nios-2 Interrupt signals CPU MEM BUS I/O Timer IRQ1 Uart_0 IRQ4 PIO IRQ2 IRQ bus logic I/O Uart_1 IRQ5

2 June G1518, Föreäsning 7, vt 2007 (D2)38 Nios-2 Interrupt signals z32 separata IRQ som kan aktiveras av extern hårdvara zAktiva IRQ kan pollas av program zFigur 3-2 i manualen

2 June G1518, Föreäsning 7, vt 2007 (D2)39 Laboration 3 Interrupts zUtskrift av punkter, en per sekund ………………………. zDirekt avbrott från en knapp, SW4 ….4*…4*4*…. zDirekt avbrott från en till knapp, SW7 …7*7*…..7*….7* zVälj Prioritet så att SW4 får avbryta SW7 …4*…7*…74**…4*7*….

2 June G1518, Föreäsning 7, vt 2007 (D2)40 Nios button_pio Memory Mapped Addresses 0x840 0x844 0x848 0x84C SW7 SW6 SW5 SW4 SW5 SW4 SW6SW GLOBAL RESET Delar av Lab-kortet

2 June G1518, Föreäsning 7, vt 2007 (D2)41 Nios button_pio Memory Mapped Addresses 0x840 0x844 0x848 0x84C SW7 SW6 SW5 SW4 Read only släppt knapp ger värdet 1 direction register interrupt mask (varje bit för sig) edge capture register (varje bit för sig) data register IRQ at index 2

2 June G1518, Föreäsning 7, vt 2007 (D2)42 Nios button_pio Hokus Pokus 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 0x84C

2 June G1518, Föreäsning 7, vt 2007 (D2)43 Laboration 3 Interrupts (forts.) Skriv ut punkter Och ”samtidigt” avbrott från Timer som varje sekund skriver ut 00:00 00:01... etc med tick, puttime (och hexasc) från lab 1 och 2

2 June G1518, Föreäsning 7, vt 2007 (D2)44 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

2 June G1518, Föreäsning 7, vt 2007 (D2)45 0x820 status 0x824 control 0x828 periodl 0x82C periodh 0x820 snapl 0x824 snaph Nios Timer Status / Control etc Run T0 - Time-Out ITO cont start stop 15 0 IRQ at index 1

2 June G1518, Föreäsning 7, vt 2007 (D2)46 Nios Timer Hokus Pokus zTO - Time Out, bit 0 at address 0x820 zRun, bit 1 på adress 0x820 zClear Time Out, Write anything to 0x820 zContinous Counting, ”set” bit 1 at 0x824 zStart Run, ”set” bit 2 at 0x824 zStop Counting, ”set” bit 3 at 0x824 zWR anything to snapshot, copy Counter to SnapShot zEnable interupt, set bit 0 at 0x824

2 June G1518, Föreäsning 7, vt 2007 (D2)47 Laboration 3 Interrupts (forts.) zAvbrott från serieportar RxRdy vid korsvis kommunikation med paritetskontroll zAvbrott då RxRdy blir 1 (i uart_0) zAvbrott då RxRdy blir 1 (i uart_1) Det finns: Separata ”Enable/Disable Interrupt” för IBF/RxRdy och OBE/TxRdy

2 June G1518, Föreäsning 7, vt 2007 (D2)48 Nios uart_0 Memory Mapped Addresses 0x860 0x864 0x868 RxRdy (IBF) TxRdy (OBE) RxDATA (RD) uart_10x880-88F TxDATA (WR) uart_0

2 June G1518, Föreäsning 7, vt 2007 (D2)49 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

2 June G1518, Föreäsning 7, vt 2007 (D2)50 IRQ-Handler (för button_pio) letar fram aktuell avbrottskälla irq02-int valbar adress sw4int valbara adresser SW4 ? SW5 ? SW6 ? SW7 ? ??? sw7int retur

2 June G1518, Föreäsning 7, vt 2007 (D2)51 Int from IRQ-02 button_pio irq02-int: moviar24, button_pio# adress till button ldwr1, 12(r24)# läs ECR stwr0, 12(r24)# clear ECR andir24, r1, 0b0001# SW4 ? bner24, r0, sw4int# yes, int from SW4 andir24, r1, 0b0010# SW5 ? bner24, r0, sw5int# yes, int from SW5...

2 June G1518, Föreäsning 7, vt 2007 (D2)52 Int from IRQ-2 button_pio SW4 sw4-int: push...# vid behov # skriv ut ’4’ paus ’*’ om ”down” pop...# vid behov subir29, r29, 4# justera returadress eret# returhopp

2 June G1518, Föreäsning 7, vt 2007 (D2)53 IRQ-Handler (för uart_0) letar fram aktuell avbrottskälla irq04-int valbar adress Rx-int valbara adresser RxRdy ?. TxRdy ? ??? Tx-int retur

2 June G1518, Föreäsning 7, vt 2007 (D2)54 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...

2 June G1518, Föreäsning 7, vt 2007 (D2)55 IRQ-Handler (för Timer) letar fram aktuell avbrottskälla irq01-int valbar adress timer-int valbara adresser TO-Int ?. ??? retur

2 June G1518, Föreäsning 7, vt 2007 (D2)56 Int from IRQ-01 timer irq01-int: moviar24, timer# adress till timer ldwr1, 0(r24)# läs status andir1, r1, 0b1# TO=1 ? beqr1, r0, NoTimeInt# no, int from timer TimerInt: stwr0, (r24)# clear Time-Out...

2 June G1518, Föreäsning 7, vt 2007 (D2)57 lab 2: EKO-program zSkriv ett progam som ekar tecken från tangentbord till terminalfönster main:callinit# vid behov loop:callgetchar callputchar brloop

2 June G1518, Föreäsning 7, vt 2007 (D2)58 Lab 2: Flödesschema för korsvis kommunikation START getcharx ?senchar JA NEJ reccharx ?putchar NEJ JA

2 June G1518, Föreäsning 7, vt 2007 (D2)59 Lab 2: Flödesschema för korsvis kommunikation med paritetskontroll START getcharx ?parmake JA NEJ reccharx ?partest NEJ JA errmakesencharputchar

2 June G1518, Föreäsning 7, vt 2007 (D2)60 Lab 3: Flödesschema för korsvis kommunikation avbrottstyrd med paritetskontroll getcharparmakereccharpartest eret errmakesencharputchar eret required RxRdy-INT

2 June G1518, Föreäsning 7, vt 2007 (D2)61 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 !

2 June G1518, Föreäsning 7, vt 2007 (D2)62 Några användbara makro:n ska anpassas till Nios-2.macroEI# Enable Interrupt rdctl r24, ctl0 orir24, r24, 0b01# testad OK wrctl ctl0, r24.endm.macroDI# Disable Interrupt rdctlr24, ctl0 andir24, r24, 0xFE# wrctl ctl0, r24.endm

2 June G1518, Föreäsning 7, vt 2007 (D2)63 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

2 June G1518, Föreäsning 7, vt 2007 (D2)64 Bra lyx: Makro för Store-operation.macro STOREI addr, data# data till mem(addr) PUSHr8# macro PUSHr9# macro moviar8, \addr moviar9, \data stwr9, 0(r8) POPr9# macro POPr8# macro.endm