2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
C för enchipsdatorer: Programstruktur och Kompileringsprocess
Programstruktur: C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
Enkel dator teknik Tips och tricks.
Funktioner och programorganisation
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
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.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
IT för personligt arbete F6
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
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; }
Vektorer (klassen Vector) Sortering
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
William Sandqvist C:s minnesmodell.
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.
Databehandling Ett datorprogram består i huvudsak av
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
Namnrum, räckvidd och rekursion Linda Mannila
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
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.
INTRODUKTION TILL PROGRAMMERING
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.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
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.
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.
1 Föreläsning2 Operativsystem. 2 Talsystem Decimal (bas 10): 0,1,2,…,8,9 Binär talsystem (bas 2): endast 1 och 0 Hexadecimal talsystem (bas 16): 0,1,…9,A,…,E,F.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Föreläsning2 Operativsystem.
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.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
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.
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.
Föreläsning 1 Introduktion till kursen. Algoritmer
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
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...
Enkel dator teknik Tips och tricks. Välja storlek och radavstånd Här väljer du storlek på texten vi vill att ni använder 14 p till rubriker och 12 p till.
Anders Sjögren Funktioner något in och något annat ut.
Python.
Genomgång av Automation Builder
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar

Litteraturhänvisningar  Kursboken avsnitt 1.5  avsnitt 4.4, 4.6  delar av avsnitt 5.2  avsnitt

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:Objekt-modul(er) -> Laddmodul ● Laddning av Laddmodul till Minne ● Exekvering (körning) av program

Editering Exempel på C-kod #include #define START_TIME 0x5959 /* makrodefinition */ int current_time = START_TIME; /* global initierad variabel */ int a, b, c; /* globala oinitierade variabler */ int sum (int par1, int par2) /* functions definition */ { int tmp; /* lokal variabel */ tmp = par1 + par2; return (tmp); } main () { int talA, talB, talC; /* lokala variabler i main */ /* själva programkoden i huvudprogrammmet /* talC = sum( talA, talB ) /* anrop av function */ }

Editering Redigering av C-kod C-program Text-fil fil.c, kan redigeras med en editor

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 fil.asm, kan redigeras med en editor (fil.s) Kommando: icomp fil.c

Editering Exempel på Assembler-kod.include "nios.s".data TIME:.word0x5959.text.globalmain.globalputtime, tick, delay main: start:movia%o0, TIME bsrputtime nop movia%o0, TIME bsrtick nop movia%o0, 1000 bsrdelay nop brstart nop puttime:lret nop tick:lret nop delay:lret nop.end

Assemblering; översätter Ass-kod till objekt-modul Ass-program Text-fil Object-modul ”Text-fil” Assemblering / översättning fil.asm fil.obj, relokerbar ? Kommando: iasm fil.asm

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 värdet.bssför oinitierade variabler räcker det att ange namn och storlek 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

Länkning; ”knådar” Object-modul(er) till Laddmodul Object-modul ”Text-fil” Ladd-modul ”Text-fil” Länkning fil.obj fil.load Kommando: ilink fil.obj fil.load innehåller binär programkod som kan kopieras till minnet och köras fil.obj innehåller binär programkod men alla adresser finns inte med fil.exe

Länkning av Nios-program ger extrafil: fil.dump – en listning Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.obj fil.load Kommando: ilink fil.obj Object-dump Text-fil Extra fil fil.dump

Exempel på fil.dump F4OH.load: file format elf32-nios Disassembly of section.text: : 40000:01 98 pfx %hi(0x20) 40002:88 36 movi %o0,0x :00 98 pfx %hi(0x0) 40006:88 6c movhi %o0,0x :0f 88 bsr a:00 30 nop 4000c:01 98 pfx %hi(0x20) 4000e:88 36 movi %o0,0x :00 98 pfx %hi(0x0) 40012:88 6c movhi %o0,0x :0b 88 bsr 4002c 40016:00 30 nop 40018:1f 98 pfx %hi(0x3e0) 4001a:08 35 movi %o0,0x8 4001c:00 98 pfx %hi(0x0) 4001e:08 6c movhi %o0,0x :07 88 bsr :00 30 nop 40024:ed 87 br :00 30 nop (forts.) : 40028:cf 7f lret 4002a:00 30 nop c : 4002c:cf 7f lret 4002e:00 30 nop : 40030:cf 7f lret 40032:00 30 nop Disassembly of section.data: : 40034:59 59 ld %i1,[%o2]...

Länkning av Nios-program ger extrafil: fil.srec, sänds till labbdator Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.obj fil.load Kommando: ilink fil.obj Object-dump Text-fil En till Extra fil fil.srec srec-dump Text-fil fil.dump

Fil i srec-format lämplig att dumpa via serieport till måldator. Exempel på fil i srec-format S00C F482E S C0F C0B4A S F C ED870030CF7F64 S20E04002A0030CF7F0030CF7F S D S F7

Exempel på srec-format taget från fil.srec S00C F482E S C0F C0B4A S F C ED870030CF7F64 S20E04002A0030CF7F0030CF7F S D S F7 5 fält Record Type: S0, S2, S8 Record Length: 2 char (1 byte) tells number of char on line excluding type and length Address:2-, 3-, or 4-byte spec of address (type tells size of address) Data: Checksum: 8-bit field: 1’s complement of sum of all except Type S0: Header S2: data with 3-byte address S8: Termination of S2-records Checksumman F7 kan fås ur inversen av =08 inv blir F =

Länkning av Nios-program ger extrafil: namelist, fil.nm Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.obj fil.load Kommando: ilink fil.obj Object-dump Text-fil En till Extra fil fil.srec srec-dump Text-fil fil.dump fil.nm Sym-table Text-fil

Exempel på fil.nm (endast vissa rader) … A na_ext_ram A nasys_data_mem A nasys_program_mem T main t start T puttime c T tick T delay … D _data d TIME...

Kompilering+länkning av Nios-prog med flagga –d ger extrafil: fil.gdb Object-modul ”Text-fil” Ladd-modul ”Text-fil” fil.obj fil.load Kommando: ilink -d fil.obj Object-dump Text-fil En till Extra fil fil.srec srec-dump Text-fil fil.dumpfil.nm Sym-table Text-fil Debugger Script-fil fil.gdb

Länkning - kombinerar flera Object-moduler till Laddmodul Ladd-modul ”Text-fil” Länkning fil.load, vilket namn? fil1.load Object-modul ”Text-fil” fil1.obj Object-modul ”Text-fil” fil2.obj Object-modul ”Text-fil” fil3.obj Object-modul ”Text-fil” filn.obj... Kommando: ilink fil1.obj fil2.obj fil3.obj … filn.obj

in-länkning av biblioteksfiler Ladd-modul ”Text-fil” Länkning fil.load, vilket namn? fil1.load eller filn.load eller ??? Object-modul ”Text-fil” fil1.obj Object-modul ”Text-fil” fil2.obj Object-modul ”Text-fil” lib1.obj Object-modul ”Text-fil” lib2.obj... Biblioteksfiler Kommando: ilink fil1.obj … filn.obj, lib1.obj, lib2.obj

Ladd-modul ”Text-fil” Länkning fil1.load Object-modul ”Text-fil” fil1.obj Object-modul ”Text-fil” fil2.obj Object-modul ”Text-fil” fil3.obj Object-modul ”Text-fil” filn.obj... Ladd-modul ”fil.srec” fil1.srec

Laddning Laddmodul laddas till minnet Ladd-modul ”fil.srec” på PC Minne i labbdator Laddning via serieport fil.srec Var i minnet ? Kommando: iloadrun fil.srec

Minne Körning / Exekvering Programmet körs av CPU:n Körning / Exekvering Var i minnet ? Kommando: iloadrun fil.srec PC +2

Minne Debugging Programmet körs av CPU:n Debugging Var i minnet ? Kommandon: ? PC +2 Starta program på viss adress Stoppa program Stegvis exekvering en instruktion i taget Undersöka innehåll i register och minne (och variabler) Brytpunkter; införa - ta bort RESET medför nollställ PC (och sudda RWM !!!) CLEAR medför nollställ PC (RWM suddas ej)

Fil-administration ● Alternativ 1: Många filer som separatkompileras och länkas ihop till en laddmodul ● Alternativ 2: Många filer som kombineras med ”include”-satser till En enda jättefil som kompileras

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ördel? Dela upp arbetet i delar Snabb (del-) kompilering Nackdel? Långa kommandon Separatkompilering

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 Nackdel? Onödigt arbete (tid) vid kompilering

Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” ”include” Ass-program Text-fil Ass-program Text-fil Ass-program Text-fil

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”

Blandad kod C-kod och Assembler-kod /* Function File */ int sum (int x, int y) external { return x + y; } /* Main File */ int a, b, res; int sum (int a, int b); external; /* mera kod... */ res = sum (a,b); ; huvudprogram a:.word 0 b:.word 0 res:.word 0 ….global main.global sum main: copy reg0, a copy reg1, b bsr sum nop copy res, reg ; subroutine.global sum … sum: add reg0, reg1 return

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

res=sum(a,b) Ass-program Text-fil Object-modul ”Text-fil” sum: save... Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram subrutin Länkning Assemblering Kompilering

bsr sum nop 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

bsr sum nop Object-modul ”Text-fil” Object-modul ”Text-fil” Ladd-modul ”Text-fil” huvudprogram Länkning Assemblering sum: save... subrutin

Memory Map - Minnesbild ● Adressrymd ● Hur stor är adressrymden ● Vilka adresser används och till vad ● RWM, ROM, IO etc

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

Kartbild av minnet adress 0 adress 2 n RWM data code stack 0x x7FFFF PC +2 SP Vad finns här ?

Kartbild av minnet ● AdressMEM / IO ● 0 - 3FFboot_monitor_rom ● Fuart_0 ● FFFFext_ram, 256 kByte All information finns i nios.s

Assembler-direktiv ●.include ”fil.ext”;infogar fil.ext ●.data;nu kommer datareservationer ●.text;programkod ●.global main;main blir synlig globalt ●.align 2;nästa adress ska vara delbar med 2 ●.align 4;nästa adress ska vara delbar med 4 ● B:.string ”hej 17”;här lagras ASCII ● TAL:.byte 0x01;reservera 1 byte och lägg värde 0x01 i den ●.equ VecBase (0x0007FF00);definiera symbolnamn

Föreläsning 4 Innehåll, rubriker del 2 ● Bus Data Transfer, Read och Write ● Memory Read, Memory Write ● Adressering, adressavkodare ● I/O-enheter ● Parallellport ● Serieport

Viktiga delar i en dator CPU MEM BUS I/O

Viktiga delar vid Bus Data Transfer MASTER SLAVE BUS

Bus Data Transfer Memory Read ● Master – till exempel CPU ● Slave – till exempel minnet ● Master levererar Adress ● Master levererar läsbegäran (Read Request) ● Slave levererar Data ● Slave levererar kvittens (Acknowledge)

Bus Data Transfer Memory Read Address Read Data Ack

Bus Data Transfer Memory Read Address Read Vad händer om Ack uteblir ? 1 2 Data Ack 3 4

Bus Data Transfer Memory Write ● Master – till exempel CPU ● Slave – till exempel minnet ● Master levererar Adress ● Master levererar Data ● Master ger skrivbegäran (Write Request) ● Slave levererar kvittens (Acknowledge)

Bus Data Transfer Memory Write Address Wr Data Ack Vad händer om Ack uteblir ?

Flera SLAVE fungerar bra – på olika adresser! MASTER BUS SLAVE

Flera minnen – på olika adresser! CPU MEM BUS MEM Adress dittenAdress datten ?? Adress-avkodare

Flera Slave – på olika adresser! CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare

Flera Master fungerar – en Arbiter behövs för att välja mellan dem Master MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare Master Arbiter

Bussledningar ● Adressledningar – 8-64 stycken, för att kunna peka ut varje byte ● Dataledningar, – minst 8 bitar, upp till 128 bitar eller mer ● Kontrolledningar – Read + Write, eller RD/WR och DS – Ack, kan vara gemensam – Bus Request, Bus Grant – vid flera Masters ● Övrigt – jord, matningsspänning, Reset och liknande.

Bussledningar (forts.)  Långsam Slave kan bromsa läsning/skrivning  fördröj Acknowledge, eller  inför speciell Hold-signal  Tidövervakning, Time-Out  om Acknowledge aldrig kommer  Bus Error – ingen Acknowledge kom

Bussledningar (forts.)  Om det finns fler än en Master krävs Bus Arbiter (bus-fördelare)  Varje Slave måste ha adressavkodare så att högst en enhet svarar på request  Referens av oanvänd adress medför... ... Time-Out eftersom ingen enhet ger Acknowledge

Två typer av adressering ● Memory Mapped ● Memory och I/O har olika adresser ● Samma kontroll- signaler för minne och I/O ● Vanliga Load och Store används för I/O ● I/O Mapped ● Memory och I/O kan ha samma adresser ● Olika kontroll-signaler för minne och I/O ● Speciella instruktioner används för I/O – IN R1,117 – OUT R2,118

Parallell-port ● Parallellport brukar ha en multipel av 8 signaler/anslutningar ● Signalriktning kan vara programmerbar separat för varje signal/anslutning ● Inport består normalt av grindar ● Utport består normalt av register ● Handskakningssignaler kan finnas

Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  IBF och OBE är tillgängliga för program  IBF och OBE är tillgängliga för hårdvara

Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  Aktiv signal IBF (full inport)  begäran om åtgärd, från omvärlden till CPU/program  betyder: jag har nya indata till dig  Aktiv signal OBE (tom utport)  begäran om åtgärd, från omvärlden till CPU/program  betyder: jag vill ha mera utdata från dig

Parallell-port (forts.) Handskakningssignaler  IBF, Input Buffer Full  IBF ettställs normalt då omgivningen levererar nya data till inporten  IBF nollställs/kvitteras av program, t.ex. vid läsning av inport

Parallell-port (forts.) Handskakningssignaler  OBE, Output Buffer Empty  OBE ettställs normalt då omgivningen har tagit hand om utdata  OBE nollställs/kvitteras av program, t.ex. vid skrivning av utport