Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avCharlotta Olofsson
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.