Datorsystem Laboration 2: Minnesmappade bussar



Relevanta dokument
Tentaupplägg denna gång

Stack och subrutiner Programmeringskonventionen

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

LEGO Mindstorm-robot

Föreläsningsanteckningar 3. Mikroprogrammering II

Åtkomst och användarhandledning

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

Tentaupplägg denna gång

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Introduktion till arv

Övning 7. Timer, serieport

Vad roligt att ni har valt att bjuda varandra på den här timmen.

19. Skriva ut statistik

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Digital Display VDS / Bus2

Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen

Att använda pekare i. C-kod

Programmeringsteknik med C och Matlab

Manus: Tredje bildspelet handlar om kroppen och rörelse. Alla vet säkert att det är bra för våra kroppar att få röra på sig.

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Studentguide vid grupparbete

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

STÄNG AV FÖNSTER. Regler FLAGGSPECTRUM I FLAGGSPECTRUM II FLAGGSPECTRUM III FLAGGSPECTRUM STJÄRNSPEL

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

LABORATION. Datorteknik Y

TSTE05-Elektronik och mätteknik

Objektorienterad programmering D2

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

HF0010. Introduktionskurs i datateknik 1,5 hp

Programmeringsuppgifter 1

Rapport. Grön Flagg. Förskolan Kåsan/Fröviskolan

Att ordna en interaktiv diskussion för Raoul Wallenbergs dag

Felsökning av mjukvara

En handledning för studerande på Högskolan Kristianstad

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

LEGO NXT Robotprogrammering

Lärarguide vid grupparbete

Östbergsskolans loggbok!

Att komma igång med FirstClass (FC)!

CE_O2. Nios II. Subrutiner med mera.

Om du vill hitta tillbaka till din sektion klicka på fliken i huvudmenyn som heter organisation.

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Instruktioner för beställningar och kontoadministration för abonnenter av inlästa läromedel

Digital- och datorteknik

Föreläsning 6: Introduktion av listor

Laboration 2: Ett kommunikationssystem

Statskontorets enkät till organisationer för patientgrupper, pensionärer och personer med funktionsnedsättningar

Kom igång med ArcGIS Online - Snabba steg för att börja arbeta

Programmering för språkteknologer II, HT2014. Rum

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Grunderna i stegkodsprogrammering

Uppdaterad Enkel manual tävlingsanmälan i friidrottens nya IT- system.

Manual för deltagare kursen Bakgavellyft Så går du kursen Bakgavellyft

Domarassistenten.com. - en introduktion för domare

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

Paper från lärgruppen i matematik. S:t Olofsskolan vt 13

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Sätt att skriva ut binärträd

Decipher och Datataker DT100

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

Projektarbete 2: Interaktiv prototyp

MÄSSHANDBOK ENTREPRENÖRSKAP PÅ RIKTIGT 2016 KRONOBERG

Laboration 10 - NetBeans

Manual Nedladdningsbara klienten NLK

CE_O3. Nios II. Inför lab nios2time

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

KA Webb - utbildning Skapa utbildningstillfälle

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Sida 1 av 12. WSB Biodling. Manual V

PNSPO! Programöverföring via CP1W-ME05M. 14 mars 2012 OMRON Corporation

Konfigurera Xenta från Point

NEONOVA. Handledning Brukarundersökning med Pict-O-Stat Pilotprojekt SKL

Provivus tips om KONCENTRATION - VAD PEDAGOGEN KAN GÖRA

Digitala Projekt (EITF11)

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Torun Berlind Elin Önstorp Sandra Gustavsson Klas Nordberg. Föreläsningar Lektioner Laborationer Projekt

Till närstående som ska vara med vid samordnad vård- och omsorgsplanering via video eller telefon

Laboration 2 i Datorteknik- Assemblerprogrammering II

Administration - Skapa och administrera användare. Din roll som administratör 1. Meny och huvudfunktioner 2-4. Skapa en användare...

Undersökning av skolor: IKT och utbildning MANUAL FÖR SKOLSAMORDNARE

75059 Stort sorteringsset

Handbok för provledare

Tentamen i Objektorienterad programmering

Chapter 3: Using Classes and Objects

Nallelek Lärarvägledning

Datorsystemteknik DAV A14 Föreläsning 1

Vill du arbeta som egenerfaren kamratstödjare inom socialpsykiatrin?

1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1.

Routerinställning. Denna guide tar dig genom de enkla steg som behövs för att ställa in routern så den fungerar trådlöst.

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

Tentamen TEN1 HI

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

Systemkonstruktion SERIEKOMMUNIKATION

Transkript:

Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum:

Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion.................................. 2 1.2 Labbens syfte................................. 2 1.3 Innan ni börjar arbeta med labben..................... 2 1.4 Innan ni kommer till labbpasset ska ni ha:................. 2 2 Förberedelseuppgifter 3 2.1 Förberedelseuppgifter online......................... 3 2.2 Programstruktur............................... 3 2.3 Makron för stacken.............................. 4 2.4 Subrutiner................................... 4 3 Labbuppgifter 5 3.1 Kommunikation över JTAG......................... 5 3.1.1 Saker att tänka på.......................... 5 3.2 Kommunikation över serieporten....................... 6 3.3 En mindre ändring av programmet..................... 6 3.4 När labben är klar.............................. 6

Datorsystem Laboration 2 2 1 Inledning 1.1 Introduktion I ett datorsystem behöver processorn kommunicera med primärminnet, systemets övriga I/O-enheter och andra datorsystem. I stort sett alla datorsystem använder bussar för kommunikation, där flera av datorns enheter är inkopplade till samma buss. När man programmerar ett Altera-kort kan man som programmerare komma åt dessa bussar genom att skriva till en minnesadress som är associerad med den buss man vill använda. I den här labben ska vi skriva ett litet program som kom låter två DE2-kort kommunicera över serieporten. Efter att ni har klarat av den här labben ska ni ha en större förståelse för hur kommunikation över minnesmappade bussar fungerar i ett datorsystem. 1.2 Labbens syfte 1. Du ska ha fått praktisk erfarenhet av att programmera mot minnesmappade bussar. 2. Du ska ha fått förståelse för hur bussar används i ett datorsystem. 1.3 Innan ni börjar arbeta med labben Läs följande delar i kursboken: Sektion 4.5 och stycket Memory-Mapped I/O på sidan 377. Läs även följande manualer från Altera: DE2 Media Computer, sektion 2.4 och 2.5 1 Nios II Processor Reference Handbook (använd vid behov) 2 1.4 Innan ni kommer till labbpasset ska ni ha: Läst igenom hela detta lab-pm Löst alla förberedelseuppgifter Läst igenom de rekommenderade delarna ur kursboken. Läst igenom de rekommenderade delarna ur DE2-manualen. 1 http://people.dsv.su.se/~ahn/da-vt12/de2_mediacomp_manual.pdf 2 http://people.dsv.su.se/~ahn/da-vt12/niosii_ref.pdf

Datorsystem Laboration 2 3 2 Förberedelseuppgifter 2.1 Förberedelseuppgifter online Innan labbpasset i datorsal påbörjas ska förberedelseuppgifterna som finns på kurshemsidan vara lösta med godkänt resultat. Som godkänt resultat räknas alla rätt. Det finns dock delar av laborationsuppgifterna som bör tänkas igenom i förväg,så till den här laborationen finns förberedelseuppgifter som inte ska lösas på kurshemsidan. 2.2 Programstruktur Koden nedan innehåller en struktur för den kod som ni ska skriva under laborationen. Två anrop finns redan i den givna strukturen; både READ JTAG och READ SERIAL anropas i huvudloopen. Observera att anropet på READ SERIAL är utkommenterat eftersom serieporten inte kommer användas förrän i del 3.2 av laborationsuppgifterna. Gå igenom kodstrukturen nedan och tänk igenom hur subrutinerna bör implementeras for att fungera enligt programbeskrivningarna som finns i sektion 3.. t e x t. g l o b a l s t a r t s t a r t : # Code to s e t up r e g i s t e r s with r e l e v a n t a d r e s s e s to the I /O u n i t s MAIN LOOP: c a l l READ JTAG #c a l l READ SERIAL br MAIN LOOP READ JTAG: # Read data from the JTAG port WRITE JTAG: # Write data to the JTAG port READ SERIAL : # Read data from the s e r i a l port WRITE SERIAL : # Write data to the s e r i a l port. end Listing 1: Programstruktur för laboration 2

Datorsystem Laboration 2 4 2.3 Makron för stacken När man ger bort kontrollen över exekveringen till en annan subrutin behöver man ofta skydda vissa register mot förändringar. Registrena r8 till r15 är caller-saved, vilket betyder att den som anropar en subrutin är ansvarig för att skydda den data som finns i i r8-15. Registrena r16 till r23 är callee-saved, vilket betyder att den anropade subrutinen är ansvarig för att antingen inte ändra värdena i r16-r23 eller först spara undan innehållet i dem och sedan återställa innan man returnerar. Det enklaste sättet att spara innehållet i ett register är att kopiera innehållet till ett annat register, men det går snabbt åt väldigt många register bara för att spara innehållet i andra register. Ett bättre sätt är att istället använda stacken genom att pusha dit det eller de register man vill spara och sedan poppa tillbaka dem när den anropade subrutinen är klar. Stacken använder man enklast genom att skapa ett makro för att lägga till data överst på stacken och ett makro for att hämta ut det som ligger på toppen av stacken. För att skapa ett makro väljer man ett namn, eventuella parametrar och anger sedan de instruktioner som bygger upp makrot. På så vis kan man sedan använda flera instruktioner genom att bara ange makronamnet. Nedan finns två makron for användning av stacken. PUSH lägger innehållet i ett register på stacken och POP hämtar informationen överst i stacken och lägger i ett register. Lägg in makrona i programmet under labben och använd dem vid användning av stacken.. macro PUSH reg subi sp, sp, 4 stw \ reg, 0( sp ). endm. macro POP reg ldw \ reg, 0( sp ) addi sp, sp, 4. endm Fundera på hur makrona fungerar. Varför ökas och minskas stackpekaren med 4? Vi använder namnet sp för stackpekaren, men vilket nummer har registret egentligen? 2.4 Subrutiner Viktigt att tänka på när man anropar en subrutin från en annan subrutin är att man måste spara undan återhoppsadressen innan man anropar nästa subrutin. Om man inte gör det finns inte längre rätt återhoppsadress när man ska returnera. Enklaste sättet att göra detta på är att ta ett ledigt register och kopiera innehållet i r31 till det innan man anropar den nästlade subrutinen. När den nästlade subrutinen returnerar kan man återställa återhoppsadressen genom att kopiera tillbaka den undansparade adressen till r31. Exempel på programflöde där man behöver spara undan återhoppsadressen:

Datorsystem Laboration 2 5 MAIN LOOP: c a l l br READ SOME DATA MAIN LOOP READ SOME DATA: # Read some data, not i n t e r e s t i n g f o r t h i s example push r31 # Protect the return address c a l l PUT SOME DATA ON LEDS # Some other s ubroutine pop r31 # Restore the return address För att kunna använda stacken behöver man tala om för kortet var den finns (eftersom man själv kan ställa in det). Det gör man genom att lägga in rätt minnesadress i register sp: 0x007FFFC. I sektion 2.2 ombads ni tänka igenom hur ert program ska konstrueras. Finns det ett behov av att använda stacken för att spara undan återhoppsadressen? 3 Labbuppgifter 3.1 Kommunikation över JTAG I labbens första del ska ni få kommunikationen mellan datorn som kör Monitor Program och Altera-kortet att fungera. Utgå från den struktur ni fått i kodexempel 1 och som ni förberett i uppgift 2.2. Skriv ett program i Assembly som läser från JTAG-porten och sedan skickar tillbaka samma data till JTAG-porten. När programmet fungerar som det ska kommer de tecken som skrivs in i terminalen i Monitor Program att synas i terminalen. Om man inte skickar tillbaka tecknen från terminalen kommer inget att synas i terminalfönstret. Att man inte ser några tecken i terminalen när man skriver dem är inte fel, det betyder bara att ert program inte fungerar ordentligt än! 3.1.1 Saker att tänka på Lägg projektet på den lokala disken D: istället för filservern Goofy. Använd DE2 Media Computer när projektet skapas. Ingen kod finns given för denna laboration, så glöm inte.text och liknande delar. Visa era resultat för en labbassistent innan ni går vidare.

Datorsystem Laboration 2 6 3.2 Kommunikation över serieporten När programmet kan skriva ut tecken i terminalen via JTAG går nästa del av labben ut på att också skicka de tecken som skrivs in i terminalen till serieporten så att ett annat DE2-kort kan ta emot de tecken som skickas. Programmet ska också lyssna på serieporten efter data som skickas till kortet och sedan visa mottaget data i terminalen. Bygg vidare på det program ni skrev i uppgift 3.1 och lägg till funktionalitet för att läsa och skriva till serieporten. Varje gång ett tecken kommer in till JTAG ska ni inte bara skicka tillbaka det till terminalen utan också skicka det till serieporten. Utöver att lyssna efter data på JTAG-porten måste programmet också lyssna efter data på serieporten. Data som kommer in på serieporten ska skickas också synas i terminalen för det mottagande kortet. På sås vis kommer ni att skriva ett litet chattprogram för kommunikation mellan två DE2-kort. Meddela en labbassistent att ni är klara, ni kommer då att bli tilldelade en annan grupp som också är klar med JTAG-delen. Om gruppen inte sitter inom lämpligt avstånd får ni flytta ihop och arbeta vid en dator. Det går att koppla två DE2-kort till en dator och använda två instanser av Monitor Program för att styra varsitt kort. Observera att det då behövs två projekt, ett för varje kort som ska styras. Visa era resultat för en labbassistent innan ni går vidare. 3.3 En mindre ändring av programmet När ni har två kort som kan chatta via serieporten kommer ni få en mindre extrauppgift att göra. Visa era resultat för en labbassistent innan ni går vidare. 3.4 När labben är klar Glöm inte att rensa undan projektet från D: så att inte några andra studenter kan råka ta fel projekt. Spara undan ert projekt i Goofy eller skicka assemblerfilerna till er mail om ni vill ha koden kvar. Packa ihop och lämna tillbaka labbkortet.