3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F41 IS1500 Datorteknik och komponenter Föreläsning CE F4 Programutveckling & Intro till lab 1, nios2time.

Slides:



Advertisements
Liknande presentationer
William Sandqvist Simulera med ModelSim ModelSim kan användas till att simulera VHDL-kod, för att avgöra om den är "rätt" tänkt. Man kan.
Advertisements

Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
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.
February 8, 2008 IS1200/2G1518 Datorteknik, föreläsning 4 vt2008 (E)1 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel.
2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.
C-programmering ID120V William Sandqvist Länkad lista
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
IT för personligt arbete F6
IS1500 Datorteknik och komponenter
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
EDA Digital och Datorteknik
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
William Sandqvist C:s minnesmodell.
Modulär programutveckling
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
Träning 13 Makroprogrammering
1 Windows programmering Programmering med Threads Borland C++ Builder 4 Modsoft Ab Kent Westerholm.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
INTRODUKTION TILL PROGRAMMERING
Problemlösningsmetodik
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.
William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist
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.
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
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.
Anders Sjögren Deklarationsområde och funktioner.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
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 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
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.
William Sandqvist Datorteknik övning 3 stackhantering subrutin som anropar subrutin programutveckling.
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.
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Python.
Nytt assembler-projekt, steg-för-steg
Föreläsning 8: Exempel och problemlösning
Grundläggande datavetenskap, 4p
Presentationens avskrift:

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F41 IS1500 Datorteknik och komponenter Föreläsning CE F4 Programutveckling & Intro till lab 1, nios2time

IS1500 Datorteknik o k Digitala komponenter Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering DC F1 DC F2 CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 DC Ö1 DC Ö2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö1 CE Ö2 CE Ö3 CE Ö5CE Ö6 lab dicom lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar CE F10CE Ö10 tentamen 2 23 April 2015 IS1500 Datorteknik o k, föreläsning CE - F4

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F43 IS1500 Datorteknik  Föreläsning 4, innehåll  Programutveckling, allmänt  Laboration 1: nios2time  Programutveckling, denna kurs

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F44 Litteraturhänvisningar Kursboken Chapter 2: 2.2—2.5, 2.12 Appendix B: B.1—B.5 Exempelsamling del 1-3 NiosII-manual Lab-PM för laboration 1, nios2time

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F45 Viktiga delar i en dator CPU BUS I/OMEM program data

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F46 Programexekvering FETCH (update PC) (decode) EXECUTE

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F47 Steg i programutveckling  Editering av program i C-kod (liknande)  Kompilering av C-kod till Assemlerkod  Editering av programkod i assembler  Assemblering av Ass.kod till Objekt-modul  Länkning av Objekt-modul(er) -> Laddmodul  Laddning av Laddmodul till Minne  Exekvering (körning) av program  Simulering av program  Felsökning (debugging) av program

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F48 Editering Exempel på C-kod #include “minfil.c”/* inkludera filer */ #define START_TIME 0x5957 /* makrodefinition */ int current_time = START_TIME; /* global initierad variabel */ int a, b, c; /* globala oinitierade variabler */ int sum (int par1, int par2) /* function definition */ { int tmp; /* lokal variabel i sum */ tmp = par1 + par2; return (tmp); } main ()/* huvudprogram, main */ { int talA, talB, talC;/* lokala variabler i main */ /* själva programkoden i huvudprogrammmet */... talC = sum( talA, talB );/* anrop av function */... }

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F49 Laboration nios2time Utskrift av tid varje sekund 59:57 59:58 59:59 00:00 00:01.

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F410 Editering Exempel på C-kod, lab1-ide’ #include “minfil.c”/* inkludera fil */ #define START_TIME 0x5957 /* makrodefinition */ #define TRUE 1/* TRUE = 1 */ int current_time = START_TIME; /* global initierad variabel */ extern void puttime (int* time);/* underprogram, function, procedure, method */ extern void tick (int* time); extern void delay (int millisek); extern int hexasc (int hexval); main ()/* huvudprogram, main */ { while (TRUE)/* forever */ { puttime (&current_time);/* skriv ut aktuell tid i fönster */ tick (&current_time);/* uppdatera current_time */ delay (1000);/* vänta 1000 millisekunder */ }

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F411 Pekare och adress (så där i förbifarten) inta;/* reservera plats */ intb=17;/* och initiera*/ int* pek1;/* pekare till en int*/ int* pek2 = &b;/* initiera*/ /* &kalle utläses som ”adressen till kalle” */ a = *pek2; /* a tilldelas det värde som pek2 pekar på*/ /* avreferering – dereferencing*/

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F412 Editering Redigering av C-kod C-program Text-fil fil.c, kan redigeras med en editor

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F413 Kompilering: översätter C-kod till Assembler-kod C-program Text-fil Ass-program Text-fil kompilering / översättning fil.c kan redigeras med en editor source language fil.s kan redigeras med en editor target language Kommando: ”compile” fil.c (med debugger: ”compile -d” fil.c)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F414 Editering Exempel på Assembler-kod.include”../minfil.s".data.align2# nästa adress delbar med 4 mytime:.word0x5957.text.globalmain# måste tas med (gemener) #.global behövs ej för puttime, tick, delay main:# ”main:” måste finnas med moviar4, mytime# in-parameter i r4 moviar16, puttime# adress till subrutin i r16 callrr16# anrop med callr moviar4, mytime# in-parameter i r4 calltick# anrop med call moviar4, 1000# in-parameter i r4 calldelay# anrop med call brmain# oändlig loop puttime:ret# ”tom” subrutin, ska ev. kodas tick:ret# ”tom” subrutin, ska ev. kodas delay:ret# ”tom” subrutin, ska ev. kodas.end# sluta översätt

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F415 Assemblering; översätter Ass-kod till objekt-modul Ass-program Text-fil Object-modul ”Text-fil” Assemblering / översättning fil.s source file fil.o (relokerbar ?) object file Kommando: ”assemble” fil.s (med debugger: ”assemble –d” fil.s)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F416 Exempel på objekt-modul fil.obj Detta är en binär fil. Den är obegriplig om man öppnar den med en vanlig editor. Information i filen:.textVarje instruktion kodas i maskinkod, det vill säga binär kod Varje symbolisk adress ges ett värde. Symboliska namn som ej kan ges värde lokalt bokförs i en symboltabell som används och kompletteras vid länkningen..datainformation om vilka variabelplatser som ska reserveras, för initierade variabler krävs att värdet finns lagrat.bssför oinitierade variabler räcker det att ange namn och storlek (Block Started by Symbol) Påminnelse om.global som stod i assembler-filen: De symboler som deklararerats som global vet man ska användas vid länkningen, och man förbereder arbetet genom att placera dessa i symboltabellen

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F417 Länkning; sätter ihop Object-modul(er) till Laddmodul Object-modul ”Text-fil” Ladd-modul ”Text-fil” Länkning fil.o fil.elf fil.elf innehåller binär programkod som kan kopieras till minnet och köras (relokerbar?) fil.o innehåller binär programkod men alla adresser finns inte med Kommando: ”link” fil.o (med debugger: ”link -d” fil.o)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F418 Länkning av Nios-program ger extrafil: fil.dump - en listning Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.o fil.elf Kommando: ”link” fil.o Object-dump Text-fil fil.objdump Man bör kunna få fram en extra fil fil.objdump

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F419 Exempel på Disassemble (endast vissa delar) 0x : movhi r4,128 0x : addi r4,r4, x c : movhi r8,128 0x : addi r8,r8,564 0x : callr r8 0x : movhi r4,128 0x c : addi r4,r4, x : call 0x x : movhi r4,0 0x : addi r4,r4,1000 0x c : call 0x80023c 0x : br 0x x : ret 0x : ret 0x c : ret 0x : 0x movia, r4, mytime 128 = 0b = 0x = = 0b = 0x3584 mytime =

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F420 Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.o fil.elf Kommando: ”link” fil.o Object-dump Text-fil Med extra flagga (-nm?) bör man kunna få fram en till extra fil fil.nm fil.objdump fil.nm Sym-table Text-fil Länkning av Nios-program ger extrafil: fil.nm - namelist

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F421 Exempel på fil.nm (endast vissa delar) … T main c t puttime t tick c t delay D _data d mytime

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F422 Länkning - kombinerar flera Object-moduler till Laddmodul Ladd-modul ”Text-fil” Länkning Object-modul ”Text-fil” fil1.o Object-modul ”Text-fil” fil2.o Object-modul ”Text-fil” fil3.o Object-modul ”Text-fil” filn.o... Kommando: ”link” fil1.o fil2.o fil3.o … filn.o fil.elf, vilket namn? fil1.elf (sista i kommandot som ska innehålla ”main:”)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F423 in-länkning av biblioteksfiler Ladd-modul ”Text-fil” Länkning fil.elf, vilket namn? fil1.elf (sista i kommandot som ska innehålla ”main:”) Object-modul ”Text-fil” lib2.o Object-modul ”Text-fil” lib1.o Object-modul ”Text-fil” fil2.o Object-modul ”Text-fil” fil1.o... Biblioteksfiler Kommando: ”link” lib2.o, lib1.0,... fil2.o, fil1. o

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F424 Laddning Laddmodul laddas till minnet Ladd-modul ”fil.elf” Minne ”Load (and run/go)” fil.elf Var i minnet ? (nära 0x800000)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F425 Minne Exekvering i hårdvara Programmet körs på CPU:n Var i minnet ? Länkaren/Laddaren väljer (Mus-)kommando: Run As Nios II Hardware PC +4

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F426 Minne Exekvering i mjukvara Programmet körs på simulator Var i minnet ? Länkaren/Laddaren väljer (Mus-)kommando: Run As Nios II Instruction Set Simulator PC +4

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F427 Simulering med debugger Programmet körs på simulator (Mus-)kommando: Debug As Nios II Instruction Set Simulator Önskemål på en debugger: Starta program på vald adress (skriv till PC) Stoppa program Stegvis exekvering en instruktion i taget (S = Step Into) Exekvera en hel subrutin (Step Over) Exekvera klart denna rutin och gör retur (Step Return) Undersöka innehåll i register och minne (och variabler) Brytpunkt(er): införa - ta bort Exekvera fram till nästa brytpunkt (Resume)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F428 Exevering med debugger Programmet körs på CPU:n (Mus-)kommando: Debug As Nios II Hardware med samma möjligheter till stegvis exekvering som i simulatorn Minne Var i minnet ? Länkaren/Laddaren väljer PC +4

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F429 Fil-administration Alternativ 1: Många filer som kompileras separat och länkas ihop till en laddmodul Alternativ 2: Många filer som kombineras med ”include”-satser till En enda ”jättefil” som kompileras och länkas ihop till en laddmodul

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F430 C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Fördelar ? Dela upp arbetet i delar ! Snabb (del-) kompilering ! Nackdel ? Långt kommando vid länkning! Separatkompilering

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F431 C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ladd-modul ”Text-fil” C-program Text-fil C-program Text-fil ”include” Fördel ? Dela upp arbetet i delar ! Kort kommando vid länkning ! Nackdel ? Onödigt arbete (tid) vid kompilering !

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F432 C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ladd-modul ”Text-fil” C-program Text-fil C-program Text-fil ”include” Vår labmiljö ! Allt jobb ”döljs” bakom ”Run As...” och ”Debug As...”

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F433 Vår labmiljö ! Programutveckling med NiosII IDE HELT ANNORLUNDA

”Mitt-termins-påverkan” Skriv till föreläsarna! Hej Johan och Fredrik, Det är roligt att läsa kursen för att... Så här kan ni göra kursen ännu bättre... 3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F434

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F435 JAVA-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Pascal-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Separatkompilering med blandad kod

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F436 Blandad kod - exempel C-kod och Assembler-kod /* Function File */ int sum (int x, int y) /* ”public */ { return (x + y); } /* Main File */ int a, b, res extern int sum (int a, int b); … res = sum (a,b); # huvudprogram a:.word 0 b:.word 0 res:.word 0 ….global main main: copy reg4, a copy reg5, b call sum copy res, reg2 # subroutine.global sum … sum: add reg2, reg4, reg5 return

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F437 res=sum(a,b) Ass-program Text-fil Object-modul ”Text-fil” int sum(x,y) Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram function Länkning Assemblering Kompilering

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F438 res=sum(a,b) Ass-program Text-fil Object-modul ”Text-fil” sum: push... Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram subrutin Länkning Assemblering Kompilering

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F439 call sum Object-modul ”Text-fil” int sum(x,y) Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram function Länkning Assemblering Kompilering

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F440 call sum... Object-modul ”Text-fil” Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram Länkning Assemblering sum: push... subrutin

Two roles of assembly language (B-6) 1.Output of the compiler source language  target language 2.Possibility to write ”hardware” programs in embedded system 3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F441

Assembly language is used (page B-6) 1.when speed is critical 2.when size is critical 3.to exploit hardware features that have no analogues in high-level language (embedded systems) 3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F442

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F443 Memory Map - Minnesbild  Adressrymd  Hur stor är adressrymden  Vilka adresser används och till vad  RWM, ROM, IO etc

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F444 RWM-minne (RAM-minnet)  Hur stort (fysiskt) RWM-minne finns det  På vilka adresser finns RWM  Var finns det egna programmet  Var finns de egna data  Var finns den egna stacken  Finns det något mer i RWM, och vad

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F445 Nios-II: Kartbild av minnet adress 0 adress RWM data code stack 0x xFFFFFF PC +2 SP Vad finns här ? 8 MegaByte 4 GigaByte

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F446 Nios: Kartbild av minnet Hex-AdressMEM / IO 0 - 7FFboot_monitor_rom Fuart_ FFFFFFext_ram, 8 MegaByte

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F447 Assembler-direktiv, exempel.include ”fil.ext”# infogar fil.ext.data# placera i data-area.text# placera i program-area.global main# main blir synlig globalt (”public”).align 3# nästa adress ska vara delbar med 2 3 B:.string ”hej 17”# lagra ASCII-sträng C:.ascii”tjoho”# lagra ASCII D:.asciz ”plusnul”# ASCII avslutad med NUL TAL:.byte 0x01# reservera 1 byte med värde 0x01.equ ExcBase,0x20020# def. symbol namn TIME:.word 0x5957# 32 bitar med värde KOLON:.byte ’:’# ascii-värdet för kolon lagras

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F448 IS1500 Datorteknik Laboration 1 Nios assembler

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F449 Mall för macro pseudo-instruction.macroCLR reg# case sensitive ! MOVI\reg, 0x0# not case sensitive !?.endm Effekten av detta är att man kan använda en ny instruktion, CLR rA, för att nollställa register rA Utmaning: Skriv ett macro för BTST dreg, sreg, index som gör BitTeST på en bit i register sreg dvs skriver 1 till dreg om utpekad bit är 1 eller skriver 0 till dreg om utpekad bit är 0 ”index” anger index för den bit som ska testas (0—31)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F450 Var ska macro infogas? Definitionen av varje makro ska finnas i texten, innan det används. Egna makron ska stå i början av filen innan koden som använder makrona och sen kommer koden för själva programmet Egna makron är case sensitive Varning för att ”överta” andras makron

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F451 Lab: Nios2time Huvudprogram loop:moviar4,TIME# parameter callPUTTIME# anrop, alt 1 moviar4, TIME# parameter moviar16, TICK# adress callrr16# anrop, alt 2 moviar4,1000# parameter callDELAY# anrop brloop# ovillk. hopp

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F452 Subrutinen HEXASC skrivs i nios2-assembler ? 4 bitar = en hexadecimal siffra 7 bitar = ASCII för en hexadecimal siffra IN-parameter i r4 UT-parameter i r2

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F453 HEXASC Bin --> ASCII = hex > = > = > = > = > = > = > = > = > = > = > = A > = B > = C > = D > = E > = F Algoritm? För dessa kan man göra så här...

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F454 Funktionen TICK finns given i C-kod 4 st NBCD-kodade siffror IN-parameter i r4 minne Adressen, TIME, till den plats i minnet där aktuell tid finns lagrad

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F455 TICK Exempel på räkning NBCD NBCD NBCD NBCD = TIME = 00: = 00: = 00: = 01: = 09: = 10: = 59: = 00:00

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F456 Subrutinen PUTTIME skrivs i nios2-assembler 4 st NBCD-kodade siffror IN-parameter i r4 minne 7 0 Skriv ut i ordning 1 2 : 3 4 Skriv ett tecken: plocka fram 4 bitar -> hexasc -> putchar putchar är en biblioteksrutin Adressen, mytime, till den plats i minnet där aktuell tid finns lagrad -+-+

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F457 DELAY förslag till flödesschema N := startN := N - 1 N <= 0 ? IN-hopp UT-hopp JA NEJ K := msekK := K - 1 K <= 0 ? IN-hopp UT-hopp JA NEJ IN-parameter i r4 inner loop outer loop tuning value

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F458 IS1500 Datorteknik  Föreläsning 4, innehåll  Programutveckling, allmänt  Laboration 1: nios2time  Programutveckling, denna kurs

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F459 Viktiga delar i en dator CPU BUS I/OMEM program data

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F460 Programexekvering FETCH (update PC) (decode) EXECUTE

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F461 Labkortet: Alteras DE2-board

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F462 DE2-board Innehåller zFPGA – Field Programmable Gate Array som ”konfigureras” så att den fungerar som en niosII-processor ! zMinne (som innehåller program och data) zBus-ledningar som förbinder ”CPU” med minne zIO-portar – parallell och serie zJTag-port – för kommunikation / laddning

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F463 serieport parallellport MEM ”CPU” DE2-board: komponenter USB Blaster Port BUS

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F464 Alteras DE2-board CPU (FPGA) BUS I/O (portar) MEM (RWM) program data

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F465 DE2-board Konfigurera FPGA:n Genom att ”ladda ner” en speciell fil (fil.sof) genom en speciell kabel/sladd (USB/Jtag) till en speciell kontakt (JTag-port) skrivs information in i FPGA-kretsen så att den kommer att fungera som en NiosII-CPU. Detta görs med Quartus Programmer

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F466 Konfigurering av FPGA:n med filen DE2_N2_ C.sof FPGA NiosII-CPU BUS I/OMEM program data

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F467 Starta exekvering på NiosII-processorn Ladda ner maskinkod till minnet Starta exekvering på rätt adress (på läget main måste det vara)

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F468 Nedladdning till minnet av ditt program (och data) main.elf FPGA BUS I/OMEM program data

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F469 Program development editering, översättning, simulering och exekvering på hårdvara Nästa sida visar hur det kan se ut på skärmen när man ”skriver och provkör” ett program

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F470

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F471 Debugging programs Test och felsökning Nästa sida visar hur det kan se ut på skärmen när man Testar och felsöker ett program med hjälp av stegvis exekvering och brytpunkter

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F472

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F473 Konfigurera DE2-board (programmera FPGA:n) Nästa sida visar hur det kan se ut på skärmen när man Konfigurerar FPGA-kretsen så att den fungerar som en niosII-CPU

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F474 Starta Quartus Programmer från NiosII IDE Kontrollera Hardware Setup ska vara USB-Blaster (USB-0) Välj rätt ”sof-fil” Klicka in en bock i rutan Program/Configure Klicka på Start Kontrollera ”Successfully performed operation(s)”

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F475 Quartus programvara Används för att ”konstruera” den krets som FPGA:n ska konfigureras att fungera som I Quartus kan man använda VHDL och/eller schemainmatning Quartus levererar två samhörande konfigureringsfiler, en ”sof-fil” och en ”ptf-fil” sof-filen används för att ”ladda ner” konstruktionen till FPGA-kretsen på DE2-board ptf-filen används vid skapande av en biblioteksfil som är med i ett programprojekt som utvecklas för att exekveras på DE2-board

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F476 Varför behövs konfigureringsfilen Nios2system_ C.ptf I dina program kan Du använda subrutiner till exempel putchar. Konfigureringsfilen innehåller information om hårdvarans adresser som krävs för att putchar ska fungera i dina program Därför måste konfigureringsfilen tas med i ditt projekt och länkas ihop med dina program För varje projekt ska anges en ptf-fil

3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F477