Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar."— Presentationens avskrift:

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

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

3 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

4 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 */ }

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

6 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

7 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

8 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

9 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

10 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

11 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

12 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]...

13 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

14 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

15 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 =

16 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

17 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...

18 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

19 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

20 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

21 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

22 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

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

24 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)

25 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

26 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

27 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

28 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

29 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”

30 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

31 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

32 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

33 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

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

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

36 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

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

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

39 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

40 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

41 Viktiga delar i en dator CPU MEM BUS I/O

42 Viktiga delar vid Bus Data Transfer MASTER SLAVE BUS

43 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)

44 Bus Data Transfer Memory Read Address Read Data Ack

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

46 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)

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

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

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

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

51 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

52 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.

53 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

54 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

55 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

56 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

57 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

58 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

59 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

60 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


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

Liknande presentationer


Google-annonser