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 8.1-8.3

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: 00040000 : 40000:01 98 pfx %hi(0x20) 40002:88 36 movi %o0,0x14 40004:00 98 pfx %hi(0x0) 40006:88 6c movhi %o0,0x4 40008:0f 88 bsr 40028 4000a:00 30 nop 4000c:01 98 pfx %hi(0x20) 4000e:88 36 movi %o0,0x14 40010:00 98 pfx %hi(0x0) 40012:88 6c movhi %o0,0x4 40014: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,0x0 40020:07 88 bsr 40030 40022:00 30 nop 40024:ed 87 br 40000 40026:00 30 nop (forts.) 00040028 : 40028:cf 7f lret 4002a:00 30 nop 0004002c : 4002c:cf 7f lret 4002e:00 30 nop 00040030 : 40030:cf 7f lret 40032:00 30 nop Disassembly of section.data: 00040034 : 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 S00C000046344F482E7372656307 S219040000019888360098886C0F880030019888360098886C0B4A S2190400158800301F9808350098086C07880030ED870030CF7F64 S20E04002A0030CF7F0030CF7F003097 S208040034595900000D S804040000F7

15 Exempel på srec-format taget från fil.srec S00C000046344F482E7372656307 S219040000019888360098886C0F880030019888360098886C0B4A S2190400158800301F9808350098086C07880030ED870030CF7F64 S20E04002A0030CF7F0030CF7F003097 S208040034595900000D S804040000F7 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 04+04+00+00=08 inv blir F7 0000 1000 = 1111 0111

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) … 00040000 A na_ext_ram 00040000 A nasys_data_mem 00040000 A nasys_program_mem 00040000 T main 00040000 t start 00040028 T puttime 0004002c T tick 00040030 T delay … 00040034 D _data 00040034 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 -1 7 0 RWM data code stack 0x40000 0x7FFFF PC +2 SP Vad finns här ?

38 Kartbild av minnet ● AdressMEM / IO ● 0 - 3FFboot_monitor_rom ● 400-41Fuart_0 ● 40000-7FFFFext_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