Tillämpad digital signalbehandling Signalprocessorn Statiska moduler och buffrar

Storlek: px
Starta visningen från sidan:

Download "Tillämpad digital signalbehandling Signalprocessorn Statiska moduler och buffrar"

Transkript

1 Institutionen för data- och elektroteknik Inledning En statisk modul bevaras i programminnet mellan bootsidor genom att länkaren ser till att den hamnar i en del av programminnet som inte skrivs över då vi bootar in en ny bootsida. Modulen kan alltså anropas från flera bootsidor. Kom dock ihåg att den statiska modulen läses in tillsammans med den bootsida där den är deklarerad, innan dess finns inte modulen i minnet och kan alltså inte anropas. Det betyder att vill vi från bootsida 2 anropa en statisk modul som finns deklarerad på bootsida 3 så måste bootsida tre ha varit inbootad (inläst) innan bootsida 2 bootas in om vi skall kunna anropa den statiska modulen från bootsida 2. Dock kan bootsida 2 vara inbootad före bootsida 3 om vi ser till att inte anropa den statiska modulen förrän bootsida 3 har varit inläst. På samma sätt bevaras en statisk buffer mellan bootsidor och gör att variabler och data kan överföras mellan bootsidor. Länkaren ser alltså till att denna buffer inte skrivs över då en ny bootsida laddas in. Skall en statisk buffer från början vara initierad med värden så måste den bootsida där allokering och initiering sker läsas in innan bufferten kan användas på andra bootsidor. Vi skall bekanta oss med statiska moduler och variabler samtidigt som vi ser på hur vi kan hantera flera bootsidor genom att studera ett förenklat exempel som inte har annan funktion än att illustrera hanterandet av flera bootsidor och statiska moduler och buffrar, den programkod som finns i olika moduler saknar alltså direkt funktion och är närmast utfyllnad. Vi ser dock till att modulerna har lite olika längd för att se hur länkaren hanterar detta.. Vi ser också på skillnader i allokering mellan linjära (raka) och cirkulära buffrar. På samma gång tar vi tillfället i akt att studera vilken information en minnesallokeringsfil, en MAP-fil, ger. CHALMERS LINDHOLMEN Sida 1 Institutionen för data- och elektroteknik Sven Knutsson Box Göteborg Besöksdress: Hörselgången 4 Telefon: Fax: svenk@chl.chalmers.se Web: svenk

2 Exempel Förutsättningar Vi antar att vi har ett system som skall bestå av tre bootsidor, bootsida 0, 1 och 2. På bootida 0 har vi en submodul (subrutin) kallad sub_0_0 som är deklarerad som statisk. Denna modul anropas även från bootsida 2. Vi har dessutom på bootsida 0 en lokal submodul sub_0_1 som bara anropas från det egna huvudprogrammet. På bootsida 1 har vi en statisk modul, sub_1, som även den anropas från bootsida 2. På bootsida 0 har vi ett antal buffrar enligt nedan Buffertnamn Längd Cirkulär Statisk Minnestyp dm_x 10 ja ja DM dm_0_0 30 ja nej DM dm_0 15 nej nej DM dm_y 8 nej ja DM dm_0_1 6 nej nej DM pm_x 22 nej ja PM Bootsida 1 har buffrarna Buffertnamn Längd Cirkulär Statisk Minnestyp dm_1_0 7 ja nej DM dm_x 10 ja nej DM dm_z 19 ja ja DM dm_0 15 nej nej DM dm_1_1 14 nej nej DM pm_1_0 12 nej nej PM Även bootsida 2 har ett antal buffrar Buffertnamn Längd Cirkulär Statisk Minnestyp dm_2_0 13 nej nej DM dm_2_1 27 ja nej DM dm_x 10 ja ja DM (från bootsida 0) dm_y 8 nej ja DM (från bootsida 0) dm_z 19 ja ja DM (från bootsida 1) Lägg märke till att vi i dataminnet har tre buffrar som är statiska. Av dessa skall två vara synliga på bootsida 0 och 2 (dm_x och dm_y) och en (dm_z) som skall vara synlig på bootsida 1 och 2. I programminnet finns en statiskt deklarerad buffer, denna skall bara vara synlig på bootsida 0. Att denna buffer är statisk betyder här då inte att vi vill nå den från flera bootsidor utan att den skall behålla sina värden mellan de gånger då vi bootar in bootsida 0. Sida 2

3 Observera också att det även på bootsida 1 finns en buffer med namnet dm_x i dataminne men denna är inte deklarerad som statisk och den är inte synlig från andra bootsidor och då gör det inget att den har samma namn som en buffert på bootsida 0. Lägg dessutom märke till att på både bootsida 0 och 1 har vi deklarerat en buffer i dataminnet med namnet dm_0 men ingen av dessa buffrar är deklarerad som statisk och var och en av de två buffrarna är då en separat buffer som är lokal för sin bootsida. Övriga buffrar är helt skilda, även vad gäller namn, mellan de tre bootsidorna. För att undersöka hur länkaren hanterar minnet så är buffrarna medvetet lagda i en ordning som blandar olika typer av buffrar. Eftersom minnesallokeringen sker på olika sätt i program- och dataminne så finns en buffer deklarerad i programminne. Det som skiljer mellan minnestyperna är buffertarnas placering i minne. Vad som sägs om synlighet etc gäller båda minnestyperna. För att illustrera förloppet så lägger vi upp en arkitekturfil samt en enkel huvudmodul och några submoduler för respektive bootsida. Vi länkar resultatet och låter länkaren generera en MAP-fil där vi kan se minnestilldelningen. Arkitekturfil Vi skriver en enkel arkitekturfil för ett system som bara har internt data- och programminne. Filen måste deklarera tre bootminnesareor, en per bootsida. Dessa areor måste ha olika namn. Vi får {ADSP2105-system med bara internt minne}.system minimalt_2105_system; {system name}.adsp2105; {2105 system}.mmap0; {boot load enable}.seg/rom/boot=0 boot_mem0[1024]; {boot page 0}.SEG/ROM/BOOT=1 boot_mem1[1024]; {boot page 1}.SEG/ROM/BOOT=2 boot_mem2[1024]; {boot page 2}.SEG/PM/RAM/ABS=0/CODE/DATA int_pm[1024]; {internal program memory}.seg/dm/ram/abs=14336/data int_dm[512]; {internal data memory}.endsys; Observera alltså att minnesareorna för de tre bootsidorna måste ges olika namn. Assemblerfiler Bootsida 0 Vi gör ett enkelt program som bara deklarerar ett antal buffrar anropar ett par submoduler och sedan lägger sig i IDLE-läge. {ADSP-2105 Huvudprogram för test av statiska} {cirkulära variabler och moduler } {bootsida 0}.MODULE/RAM/BOOT=0/ABS=0 mainmodul_0;.var/dm/ram/static/circ dm_x[10];.var/dm/ram/circ dm_0_0[30];.var/dm/ram dm_0[15]; {statisk cirkulär buffer} {synlig på bootsida } {0 och 2 } {lokal cirkulär buffer} {lokal buffer} Sida 3

4 .VAR/DM/RAM/STATIC dm_y[8];.var/dm/ram dm_0_1[6];.var/pm/ram/static pm_x[22];.global dm_x,dm_y;.external sub_0_0,sub_0_1; JUMP start; nop; nop; nop; start: CALL sub_0_0; CALL sub_0_1; wait: IDLE; JUMP wait;.endmod; {statisk buffer synlig} {på bootsida 0 och 2 } {lokal buffer} {statisk buffer synlig} {på bootsida 0 } {dm_x och dm_y synliga} {på andra bootsidor } {submoduler} {restart interrupt} {sampling interrupt IRQ2} {SPORT0 transmit} {SPORT0 receive} {SPORT1 transmit} {SPORT1 receive} {TIMER interrupt} {anropa statisk submodul} {anropa submodul} {wait for interrupt} Lägg märke till att de buffrar som skall vara synliga på andra bootsidor måste deklareras som globala via direktivet.global. Eftersom vi inte vill nå den statiska bufferten pm_x i programminnet från andra moduler så är denna inte deklarerad som GLOBAL. Bufferten är deklarerad som statisk för att variabelvärdena i denna buffer skall ligga kvar om vi efter att vi har låtit programmet boota in en annan bootsida åter vill läsa in bootsida 0 via en ny mjukvarustyrd bootning. Programmet anropar de två submodulerna sub_0_0 och sub_0_1, där den första är statisk medan den andra är dynamisk. Submodul 0_0 På bootsida 0 har vi en statisk submodul som anropas med labeln sub_0_0. Modulen har programkoden {ADSP-2105 Submodul för test av statiska} {icke-cirkulära variabler och moduler } {bootsida 0}.MODULE/RAM/BOOT=0/STATIC submodul_0_0;.external dm_y;.entry sub_0_0; sub_0_0:ax0=dm(dm_y); AR=NOT AX0; DM(dm_y)=AR; RTS;.ENDMOD; Sida 4

5 Submodul 0_1 På bootsida 0 har vi också en submodul som inte är statisk utan dynamisk och som anropas med labeln sub_0_1. Modulen har programkoden {ADSP-2105 Submodul för test av statiska} {cirkulära variabler och moduler } {bootsida 0}.MODULE/RAM/BOOT=0 submodul_0_1;.external dm_y;.entry sub_0_1; sub_0_1:ax0=ay0; AY0=MX1; RTS;.ENDMOD; Bootsida 1 Bootsida 1 får i princip samma enkla program som bootsida 0, men med sina variabler och submoduler naturligtvis. {ADSP-2105 Huvudprogram för test av statiska} {cirkulära variabler och moduler } {bootsida 1}.MODULE/RAM/BOOT=1/ABS=0 mainmodul_1;.var/dm/ram/circ dm_1_0[7];.var/dm/ram/circ dm_x[10];.var/dm/ram/static/circ dm_z[19];.var/dm/ram dm_0[15];.var/dm/ram dm_1_1[14];.var/pm/ram pm_1_0[12];.global dm_z;.external sub_1; JUMP start; nop; nop; nop; {lokal cirkulär buffer} {lokal cirkulär buffer} {statisk cirkulär buffer} {synlig på bootsida } {1 och 2 } {lokal buffer} {lokal buffer} {lokal buffer} {dm_z synlig på andra} {bootsidor } {anropa statisk submodul} {restart interrupt} {sampling interrupt IRQ2} {SPORT0 transmit} {SPORT0 receive} {SPORT1 transmit} {SPORT1 receive} {TIMER interrupt} start: wait: IDLE; JUMP wait;.endmod; {wait for interrupt} Sida 5

6 Eftersom vi inte behöver se de statiska buffrarna som deklarerats på bootsida 0 på denna sida så finns inga.external-direktiv, däremot deklareras den nya statiska bufferten (dm_z) som global via direktivet.global för att denna skall kunna nås från andra bootsidor, närmare bestämt från bootsida 2. Denna sida saknar egentlig programkod men den fyller ändå sin funktion vad gäller att illustrera delningen av moduler och buffrar mellan bootsidor. Submodul 1 Även här har vi en statisk submodul. Den anropas med labeln sub_1 och kommer att anropas från bootsida 2. Modulen har programkoden {ADSP-2105 Submodul för test av statiska} {cirkulära variabler och moduler } {bootsida 1}.MODULE/RAM/BOOT=0/STATIC submodul_1;.external dm_y;.entry sub_1; sub_1: SR=ASHIFT SI BY 2 (LO); RTS;.ENDMOD; Bootsida 2 Även här gör vi ett mycket enkelt program men lägger in lite kod som hanterar de statiska buffrar som finns deklarerade på bootsida 0 för att se vad som händer. Eftersom de statiska moduler och buffrar som vi vill nå från denna bootsida är deklarerade på andra bootsidor så skall de inte deklareras på denna bootsida. Vi måste däremot använda.external-direktivet för att kunna se dessa statiska moduler och buffrar även på denna bootsida. {ADSP-2105 Huvudprogram för test av statiska} {cirkulära variabler och moduler } {bootsida 2}.MODULE/RAM/BOOT=2/ABS=0 mainmodul_2;.var/dm/ram dm_2_0[13]; {lokal buffer}.var/dm/ram/circ dm_2_1[27]; {lokal cirkulär buffer}.external dm_x,dm_y,dm_z; {buffertar från } {andra bootsidor}.external sub_0_0,sub_1; {submoduler på } {bootsida 0 och 1} JUMP start; nop; nop; nop; {restart interrupt} {sampling interrupt IRQ2} {SPORT0 transmit} {SPORT0 receive} {SPORT1 transmit} {SPORT1 receive} Sida 6

7 start: CALL sub_0_0; CALL sub_1; AX0=DM(dm_x); AY0=1; AR=AX0+AY0; DM(dm_y)=AR; AR=AR+AY0; DM(dm_z)=ar; wait: IDLE; JUMP wait;.endmod; {TIMER interrupt} {anropa submodul på} {bootsida 0 } {anropa submodul på} {bootsida 1 } {wait for interrupt} Länkning De tre bootsidorna måste länkas samman till samma EXE-fil. Detta för att länkaren skall klara av tilldelningen av minnesareor (moduler och buffrar). Detta hade varit nödvändigt även om vi hade haft en enda bootsida och om statiska moduler och buffrar hade saknats. Länkning måste ske om så vårt program består av en enda modul. För att se minnestilldelningen så låter vi länkaren generera en MAP-fil. Minnestilldelning Vi ser minnesallokeringen genom nedanstående MAP-fil som länkaren har genererat vid länkningen. Filen är något redigerad för att eliminera oönskade radbrytningar. ADSP-2100 Family Development Tools, Release Analog Devices, Inc. : ADSP-2100 Family Linker Version 3.1 Copyright 1997 static (static.exe) mapped according to MINIMALT_2105_SYSTEM (static.ach) xref for module: MAINMODUL_0 boot memory page(s) 0, MAINMODUL_0 pm 0:0000 [0020] module(global) DM_X dm 0:3800 [000A] variable(global) DM_0_0 dm 0:3840 [001E] variable DM_0 dm 0:385E [000F] variable DM_Y dm 0:380A [0008] variable(global) DM_0_1 dm 0:3812 [0006] variable PM_X pm 0:0030 [0016] variable START pm 0:001C label WAIT pm 0:001E label SUB_0_0 0:03FC [0000] extern(submodul_0_0) SUB_0_1 0:0020 [0000] extern(submodul_0_1) xref for module: MAINMODUL_1 boot memory page(s) 1, MAINMODUL_1 DM_1_0 pm 1:0000 [001E] module(global) dm 1:3818 [0007] variable Sida 7

8 DM_X dm 1:3840 [000A] variable DM_Z dm 1:3820 [0013] variable(global) DM_0 dm 1:384A [000F] variable DM_1_1 dm 1:3859 [000E] variable PM_1_0 pm 1:001E [000C] variable START pm 1:001C label WAIT pm 1:001C label SUB_1 1:03FA [0000] extern(submodul_1) xref for module: MAINMODUL_2 boot memory page(s) 2, MAINMODUL_2 pm 2:0000 [0026] module(global) DM_2_0 dm 2:3812 [000D] variable DM_2_1 dm 2:3840 [001B] variable START pm 2:001C label WAIT pm 2:0024 label SUB_0_0 2:03FC [0000] extern(submodul_0_0) DM_X 2:3800 [000A] extern(mainmodul_0) DM_Y 2:380A [0008] extern(mainmodul_0) DM_Z 2:3820 [0013] extern(mainmodul_1) SUB_1 2:03FA [0000] extern(submodul_1) xref for module: SUBMODUL_0_0 boot memory page(s) 0, SUBMODUL_0_0 pm 0:03FC [0004] module(global) SUB_0_0 pm 0:03FC label(global) DM_Y 0:380A [0008] extern(mainmodul_0) xref for module: SUBMODUL_0_1 boot memory page(s) 0, SUBMODUL_0_1 pm 0:0020 [0003] module(global) SUB_0_1 pm 0:0020 label(global) DM_Y 0:380A [0008] extern(mainmodul_0) xref for module: SUBMODUL_1 boot memory page(s) 0, SUBMODUL_1 pm 0:03FA [0002] module(global) SUB_1 pm 0:03FA label DM_Y 0:380A [0008] extern(mainmodul_0) 210x memory per MINIMALT_2105_SYSTEM (static.ach) internal 2105 pm ram mapped to ff (auto booted at reset) internal 2105 dm ram mapped to BFF FF [ 1024.] external bm rom code BOOT_MEM BFF [ 1024.] external bm rom code BOOT_MEM FF [ 1024.] external bm rom code BOOT_MEM FF [ 1024.] internal pm ram data/code INT_PM FF [ 512.] internal dm ram data INT_DM boot memory and bootable run time program memory map: boot page 0 (auto boot) bm: F (x8rom: F) F [32.] ram module MAINMODUL_0 bm: (x8rom: B) [ 3.] ram module SUBMODUL_0_1 boot page 1 Sida 8

9 bm: D (x8rom: ) D [30.] ram module AINMODUL_1 bm: 081E (x8rom: A7) 001E [12.] ram variable PM_1_0 of MAINMODUL_1 boot page 2 bm: (x8rom: ) [38.] ram module MAINMODUL_2 24k of boot memory rom space required for this bootable run time map. Most convenient boot memory rom size is 24k bytes (192k bits). fixed program memory map: [ 22.] pm ram static variable PM_X of MAINMODUL_0 03FA - 03FB [ 2.] pm ram page(s) 0,static module SUBMODUL_1 03FC - 03FF [ 4.] pm ram page(s) 0,static module SUBMODUL_0_0 fixed program memory rom: 0. fixed program memory ram: 28. dynamic data memory map: boot page [ 6.] ram variable DM_0_1 of MAINMODUL_ D [ 30.] ram circ variable DM_0_0 of MAINMODUL_0 385E - 386C [ 15.] ram variable DM_0 of MAINMODUL_0 dynamic data memory rom page 0: 0 dynamic data memory ram page 0: 51 boot page E [ 7.] ram circ variable DM_1_0 of MAINMODUL_ [ 10.] ram circ variable DM_X of MAINMODUL_1 384A [ 15.] ram variable DM_0 of MAINMODUL_ [ 14.] ram variable DM_1_1 of MAINMODUL_1 dynamic data memory rom page 1: 0 dynamic data memory ram page 1: 46 boot page E [ 13.] ram variable DM_2_0 of MAINMODUL_ A [ 27.] ram circ variable DM_2_1 of MAINMODUL_2 dynamic data memory rom page 2: 0 dynamic data memory ram page 2: 40 fixed data memory map: [ 10.] dm ram circ variable static DM_X of MAINMODUL_0 380A [ 8.] dm ram variable static DM_Y of MAINMODUL_ [ 19.] dm ram circ variable static DM_Z of MAINMODUL_1 fixed data memory rom: 0. fixed data memory ram: 37. Sida 9

10 Vad visar MAP-filen MAP-filen inleds med en beskrivning av hur olika minnesareor utnyttjas på de tre bootsidorna. Här kan vi se att programkoden hamnar från adress noll (0) i programminnet för att börja köras vid inläsning av respektive bootsida. Vi ser också programkodens längd. Vi ser därefter hur variablerna är placerade i minnet. Vi ser att statiska variabler är angivna som variable(global) medan övriga variabler bara anges som variable. Vi återkommer till variabelallokeringen. Vi hittar här också namn och adress för de lablar som används på olika bootsidor samt de namn på allokerade minnesareor som används. De modullablar och namn på minnesareor som ligger i en annan modul anges som extern, där vi också kan se namnet på den modul där labeln eller minnesdeklarationen finns. De tre submodulerna är beskrivna var för sig på samma sätt som ovan. Efter detta följer en del som sammanfattar adresser och namn på alla tillgängliga minnesareor. Lägg märke till att de tre bootminnesareorna ligger i adressintervallen 0 1k, 2k 3k respektive 4k 5k i bootminne. Areorna är alltså 1k långa med en lucka på 1k mellan respektive area. Denna lucka beror på kompabiliteten med processorn ADSP-2101 som har 2k stora bootareor. Med outnyttjade minnesareor blir bootminnet då 6k stort men eftersom varje intruktion upptar fyra positioner i ett 8 bitars minne (tre positioner med 8 bitar av instruktionen plus en tom position) så anger MAP-filen att vi behöver ett 24k stort minne. MAP-filen avslutas med ytterligare en beskrivning av minnesallokeringen för variablerna på de olika bootsidorna. Här anges variabelnamn, minnestyp samt vilka adresser som variabeln upptar. Variabler som skall användas på flera bootsidor och därför är statiska anges som låsta (fixed memory map) medan variabler som kan skrivas över då en ny bootsida läses in anges som dynamiska (dynamic memory map). Buffrar i programminne Eftersom vi har deklarerat dessa buffrar i programminne så kommer naturligtvis minne att allokeras i detta minne. Vi har bara internt programminne och detta startar på adress 0x0000. Även om vi hade haft externt programminne så skulle länkaren ha börjat med att fylla internt programminne om vi inte via segment- eller absolutdirektiv (SEG respektive ABS) hade angivit att vissa buffrar skulle ligga i externt minne. Det interna programminnet ligger alltså i adressintervallet 0x0000-0x03FF och program och programminnesbuffrar måste placeras i detta intervall. Ur MAP-filen får vi följande karta över programminnet Sida 10

11 . Figur 1 Karta över programminnet För att avbrottstabellen skall komma på rätt adresser så skall huvudprogrammet placeras från adress 0x0000 på varje bootsida. Vi har säkerställt detta genom att ange direktivet ABS=0 i huvudmodulens inledningsrad. Sida 11

12 Vi ser att den dynamiska submodulen sub_0_1 på bootsida 0 placeras direkt efter huvudprogrammet och att både huvudprogram och submodul kommer att skrivas över då en ny bootsida laddas in. De två statiska submodulerna, sub_0_0 och sub_1, däremot placeras sist i det interna programminnet för att undvika att de skrivs över vid byte av bootsida. Om vi övergår till buffrarna så ser vi att den statiska bufferten pm_x placeras så högt i programminnet att ingen dynamisk programudul eller buffer kommer att skriva över den vid byte av bootsida. Den dynamiska bufferten pm_1_0 på bootsida 1 placeras däremot direkt efter programkoden eftersom vi tillåter att den skrivs över vid byte av bootsida. Buffrar i dataminne På samma sätt ger MAP-filen följande bild av dataminnet. Sida 12

13 Figur 2 Dataminnskarta med cirkulära buffrar Minneskartan kan synas rörig och onödigt splittrad i smådelar men det finns en logik i röran. I normala fall skulle länkaren tilldela minne i den ordning som buffrarna dyker upp i assemblerfilen och därmed lägga dom i denna ordning efter varandra i minnet. Nu när vi har statiska buffrar så ser vi att länkaren i stället inleder med att allokera minne för dessa. Detta verkar ju logiskt eftersom de statiska buffrarna då kommer i minnesareans början och inte låser upp areor någonstans mitt i det interna dataminnet. Varken dessa eller de dynamiska buffrarna ligger dock i en följd på efterföljande adresser. Detta beror på att vissa av buffrarna är cirkulära och skall adresseringen av dessa fungera så måste buffertens basadress vara en heltalsmultipel av det tal vi får om vi avrundar den aktuella bufferlängden till nästa tvåpotens. En 9 positioner lång Sida 13

14 4 buffer måste alltså ha basadressen på en heltalsmultipel av 2 = 1610 = 1016.Detta leder till exempel till att den cirkulära (och statiska) bufferten dm_z hamnar på adress 0x3820 och inte på den tomma adressen 0x381F som finns direkt efter bufferten dm_1_0. Lägg märke till att den minnesarea som innehåller de tre statiska buffrarna inte täcks av nya buffrar då en ny bootsida läses in utan bufferternas innehåll finns kvar i minnet. Observera dock att de statiska buffrarna bara är tillgängliga från den bootsida där de är deklarerade (bootsida 0 respektive bootsida 1) och den bootsida (eller de bootsidor) där de är deklarerade som EXTERNAL (bootsida 2). På bootsida 1 kan vi inte nå buffrarna dm_x och dm_y och på bootsida 0 kan vi inte nå bufferten dm_z. Lägg dessutom märke till att de buffrar som har deklarerats med samma namn och längd på bootsida 0 och 1 (dm_0), men som inte är statiska, inte ligger på samma adresser och då en ny bootsida läses in kommer dessa areor att upptas av andra variabler. Dessa två buffrar är alltså inte samma buffer på de två bootsidorna utan två skilda buffrar. På bootsida 1 finns dessutom bufferten dm_x deklarerad. Bufferten har alltså samma namn och även samma storlek som den statiska bufferten dm_x som är synlig på bootsida 0 och 2, men eftersom bootsida 1 saknar något EXTERNAL-direktiv för bufferten dm_x så är bufferten med detta namn på bootsida 1 en annan buffer än den statiska globala bufferten med namnet dm_x och den ligger därför på en annan adress. Skulle vi ha försökt att göra den statiska bufferten synlig på bootsida 1 så skulle vi ha fått ett assembleringsfel. Vi kan inte ha två buffrar med samma namn synliga samtidigt. Hade vi inte använt cirkulära buffrar så hade vi inte fått luckorna i ovanstående minneskarta utan vi hade fått nedanstående bild där alla minnesbuffrar ligger på efterföljande adresser. Sida 14

15 Figur 3 Dataminneskarta utan cirkulära buffrar Sida 15

Figur 1 Skalprogrammets meny

Figur 1 Skalprogrammets meny Institutionen för data- och elektroteknik 2004-04-14 Att köra mjukvaran till signalprocessorn 1 Inledning Bland programvarorna till signalprocessorn är systembyggare, assemblator, länkare, PROM-Splitter

Läs mer

LEU240 Mikrodatorsystem

LEU240 Mikrodatorsystem Institutionen för data- och informationsteknik 2011-10-11 LEU240 Mikrodatorsystem Vi har tidigare i olika sammanhang sett att det är önskvärt att kunna använda ett högnivåspråk som C för att skriva program

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #23 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Översikt När flera minnesmoduler placeras i processorns

Läs mer

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #23 Översikt När flera smoduler placeras i processorns adressrum ansluts modulernas adressingångar till motsvarande ledningar i en. Övriga adressledningar i bussen

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

A-del motsvarande KS1

A-del motsvarande KS1 MÄLARDALENS HÖGSKOLA Institutionen för elektroteknik Tentamen Mikrodatorteknik CT3760 Datum 2005-10-28 Tid 08.30 12.30 Svar till A- och B-del A-del motsvarande KS1 Uppgift A1. Vad blir resultatet då instruktionen

Läs mer

Assemblerprogrammering del 3

Assemblerprogrammering del 3 Assemblerprogrammering del 3 Dagens föreläsning behandlar: Kompendiet kapitel 9 och 10.4 Arbetsboken kapitel 16 Ur innehållet: Modularisering, subrutiner och strukturerad programutveckling (flödesdiagram)

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

Stack och subrutiner Programmeringskonventionen

Stack och subrutiner Programmeringskonventionen Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp

Läs mer

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Talsystem Talsystem - binära tal F1.1) 2 n stycken tal från 0 till 2 n 1 F1.2) 9 bitar (512 kombinationer) Talsystem - 2-

Läs mer

Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p Tentamen PC-teknik 5 p Namn:. Klass:... Program: Di2, Em3, Et3 Datum: 03-08-15 Tid: 13:30-18:30 Lokal: E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C

Läs mer

2 Laborationsutrustning

2 Laborationsutrustning Institutionen för data- och elektroteknik 2002-02-11 1 Inledning Denna laboration syftar till att illustrera ett antal grundbegrepp inom digital signalbehandling samt att närmare studera frekvensanalys

Läs mer

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet. Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång

Läs mer

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Minnestilldelning (allokering) och frigörande (avallokering) av minne Pekare i C++ Pekare används mycket i C++. De är bra både för att de tillåter dynamisk minnesallokering och för att de är referenser. En pekarvariabel innehåller en adress till ett element, den pekar på

Läs mer

Föreläsningsanteckningar till Konstruktionsmetoder 981027

Föreläsningsanteckningar till Konstruktionsmetoder 981027 Föreläsningsanteckningar till Konstruktionsmetoder 981027 Jämförelse mellan 68705P3 och 16F84 externt MC68705P3 PIC16F84 I/O 20 13 Kapsling 28-pin DIL 18-pin DIL Drivförmåga på pinnar PortB 10mA Sink,

Läs mer

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne Programallokering Att placera program i flashrespektive RAM-minne Program i FLASH-minne Bara lokala variabler Globala oinitierade variabler Globala initierade variabler Program med avbrott Program i RAM-minne

Läs mer

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte ARM-instruktioner, A4-format, 17 sidor. Maxpoäng: TENTAMEN D1/E1/Mek1/Ö1 1400-1800 Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor Maxpoäng: Betyg 3 Betyg 4 Betyg 5 60p 24p 36p 48p Frågor under tentamen: Börje Delistrand tel. +46702986358 Bilaga

Läs mer

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin. 1(5) Övningstentamen i Mikrodatorer och assemblerprogrammering, ELGA05 Hjälpmedel: Bifogad lista med memokoder för MC68xxx. Samtliga programmeringsuppgifter ska innehålla flödesschema med förklaringar

Läs mer

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #19 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Normaltillstånd vs undantagstillstånd I normaltillstånd

Läs mer

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser Namn: Laborationen godkänd: Digitala system 15 hp AVR 3 - datorteknik LTH Ingenjörshögskolan vid Campus Helsingborg Avbrott. Syften med den här laborationen är att introducera avbrott. Avbrott som uppkommer

Läs mer

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile. CT3760 Mikrodatorteknik Föreläsning 2 Tisdag 2005-08-30 Minnestyper. Atmega 16 innehåller följande minnestyper: SRAM för dataminne FLASH för programminne EEPROM för parametrar och konstanter. Minnen delas

Läs mer

Laboration 2 i Datorteknik- Assemblerprogrammering II

Laboration 2 i Datorteknik- Assemblerprogrammering II Högskolan i Halmstad 1 (8) - Assemblerprogrammering II Målet med laborationen är att få begrepp om Subrutiner. in/utparametrar. Lokala variabler Maska in bitar till ett register Konstruktion av subrutiner

Läs mer

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar. ATMega16 Laborationer av Kjell 2 Rev:5 Datum: 29.09.2010 Page 1 of 7 Laboration 4: Knappstuds Drivrutiner för att eliminera störningar. Inledning: Laborationskortet EasyAVR6 har bland annat tryckknappar

Läs mer

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål Datorteknik Föreläsning 6 Processorns uppbyggnad, pipelining Mål Att du ska känna till hur processorn byggs upp Att du ska kunna de viktigaste byggstenarna i processorn Att du ska känna till begreppet

Läs mer

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. F5 Föreläsning i Mikrodatorteknink 2006-09-05 Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. Programräknaren

Läs mer

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18 F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot

Läs mer

Tillämpad digital signalbehandling Laboration 1 Signalbehandling i Matlab och LabVIEW

Tillämpad digital signalbehandling Laboration 1 Signalbehandling i Matlab och LabVIEW Institutionen för data- och elektroteknik 004-03-15 Signalbehandling i Matlab och LabVIEW 1 Introduktion Vi skall i denna laboration bekanta oss med hur vi kan använda programmen Matlab och LabVIEW för

Läs mer

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tentamen PC-teknik 5 p Lösningar och kommentarer Tentamen PC-teknik 5 p Lösningar och kommentarer Program: Di2, Em3, Et3 Datum: 04-08-10 Tid: 13:30-18:30 Lokal E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Till assemblersystemet Zuper 80 Assembler krävs en SPECTRAVIDEO 328/318+minst 16K ram extra.

Till assemblersystemet Zuper 80 Assembler krävs en SPECTRAVIDEO 328/318+minst 16K ram extra. ZZZZZ 888 000 A Z 8 8 0 0 A A ZZ 8 8 0 0 A A ZZ u u pppp eee r rrr 888 0 0 AAAAA ZZ u u p p e e rr --- 8 8 0 0 A A ZZ u u p p e ee r 8 8 0 0 A A Z u u p p e r 8 8 0 0 A A ZZZZZ uuuu pppp eeee r 888 000

Läs mer

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll PARALLELL OCH SEKVENTIELL DATABEHANDLING Innehåll Parallellism i VHDL Delta delays och Simuleringstid VHDLs simuleringscykel Aktivering av Processer Parallella och sekventiella uttryck 1 Controller PARALLELLISM

Läs mer

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN) LABORATION DATORTEKNIK D Pipelining Version: 1.4 2016 (OS,OVA,AN) Namn och personnummer Godkänd 1 blank sida 2 Innehåll 1 Inledning 5 1.1 Syfte................................. 5 1.2 Förberedelser............................

Läs mer

F8: Undantagshantering

F8: Undantagshantering F8: Undantagshantering Undantagshantering i 68 Vad är ett undantag? Typer av undantag Att skriva undantagsrutiner Undantagshantering, vad och varför? Exempel: Ett system ska mäta temperatur var :e sekund

Läs mer

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod

Läs mer

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00.

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00. Mikrodatorteknik Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3 7,5 högskolepoäng Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00 Hjälpmedel: Totalt antal poäng på tentamen:

Läs mer

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT Enchipsdatorer med tillämpningar LABORATION 7, ROBOT Laborationsansvariga: Anders Arvidsson Utskriftsdatum: 2005-05-14 Laboranter: 1 Syfte Denna laboration syftar till att introducera interrupt och watchdog

Läs mer

Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen)

Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen) MÄLRLENS HÖGSKOL Institutionen för elektroteknik Tentamen Mikrodatorteknik T3760 atum 2005-10-28 Tid 08.30 12.30 nsvarig lärare: Olof ndersson, Telefon 021-101314 (besöker skrivsalen) Om du klarat samtliga

Läs mer

Datorsystemteknik DVGA03 Föreläsning 8

Datorsystemteknik DVGA03 Föreläsning 8 Datorsystemteknik DVGA03 Föreläsning 8 Processorns uppbyggnad Pipelining Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Innehåll Repetition av instruktionsformat

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

Läs mer

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer Dagens OS En översikt av dagens OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Vanliga program, shell, etc System calls Interupts and traps

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Övningsuppgifter i Mikrodatorteknik 4p/5p

Övningsuppgifter i Mikrodatorteknik 4p/5p Övningsuppgifter i Benny Thörnberg Mittuniversitetet Inst. för Informationsteknologi och medier Hösten 2005 1 Exekvering av assemblerkod 1.1 Statusflaggors beteende Vad blir C-, N- och Z- flaggornas värden

Läs mer

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel Uppgift 3 Till en process som kräver 8 sidor allokeras 4 sidoramar. Antag följande referenssträng: 1,2,8,3,4,3,8,2,1,4 Hur många sidofel kommer att genereras (demand paging) med en a) FIFO-algoritm (2

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola F-36 FLEX- och FLIS-datorn Ext-8 Tallriksmodellen Stackoperationer

Läs mer

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler Exempeluppgift i Logikstyrning Inledning Idén med detta papper är att ge en allmän beskrivning av labbutrustningen och tips för hur man kan lösa olika praktiska problem i samband med laborationen. Läs

Läs mer

Datorteknik TSIU02 Lab 2 Morsesändare v0.7

Datorteknik TSIU02 Lab 2 Morsesändare v0.7 Inledning För att skriva program i något programspråk förenklar det att ha ett strukturerat angreppssätt. I assembler får man strukturen genom omsorgsfull användning av subrutiner. Som exempel på en mer

Läs mer

Föreläsning 10. Pekare (Pointers)

Föreläsning 10. Pekare (Pointers) Föreläsning 10 Pekare (Pointers) Dagens kluringar 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; int f(int a) if(a==1) return a; else return

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

Läs mer

FactoryCast HMI. Premium & Quantum PLC. FactoryCast HMI epost-tjänst 2004-10-25

FactoryCast HMI. Premium & Quantum PLC. FactoryCast HMI epost-tjänst 2004-10-25 FactoryCast HMI Premium & Quantum PLC FactoryCast HMI epost-tjänst 2004-10-25 INNEHÅLLSFÖRTECKNING 1 EPOST-TJÄNSTEN...3 1.1 KONFIGURERING AV EPOST-TJÄNST...3 2 EPOST-SERVER...6 2.1 KONFIGURERING AV EPOST-SERVER...6

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR 2 Projekt mikrobasic PRO for AVR organiserar applikationer som projekt vilka består av en enda projektfil (med filändelsen.mbpav) och en eller flera

Läs mer

PM 2007-12-05 Dokumentation

PM 2007-12-05 Dokumentation Installation av Cadcorp SIS Installerat program innehåller dessa moduler: Map Browser Map Reader Map Viewer Map Manager (ingår i Aveny Karta Manager) Map Editor (ingår i Aveny Karta Editor) Map Modeller

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010 STYRNING - i Mikrodatorteknik för U2 2010 1. Uppgift M10 (5p) aug-09 Skriv ett program i PIC-assembler som - gör PortB till utport - ettställer bit 0, 3 och 4 i PortB - nollställer bit 5 och 6 i PortB

Läs mer

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne. Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet.

Läs mer

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden? Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad

Läs mer

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. Övningsuppgifter Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. F.2 Ett antal på varandra följande minnesord har

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

Datorsystemteknik Föreläsning 7DAVA14

Datorsystemteknik Föreläsning 7DAVA14 Datorsystemteknik Föreläsning 7DAVA14 Innehåll Introduktion (forts) Polling (cyklisk avfrågning) Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Exempel

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

Övning2 Datorteknik, HH vt12 - Programmering

Övning2 Datorteknik, HH vt12 - Programmering Övning2 Datorteknik, HH vt12 - Programmering För denna övning behöver man adresskarta och beskrivning av laborationsplattform. Finns bland föreläsningsanteckning samt i bilaga l till Lab l. Använd även

Läs mer

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya Random Access Memory Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya Introduktion Historia Vad är RAM? Hur fungerar RAM? Dataöverföring, tidsklocka och termer Vilka är de olika typerna av RAM? Vad

Läs mer

CPU. Carry/Borrow IX. Programräknare

CPU. Carry/Borrow IX. Programräknare Laboration:. Jämförelser mellan assembler och C. CPU ACCA ACCD ACCB 8-bitars ackumulatorer eller 16- bitars ackumulator CCR 1 1 1 SXH I NZVC Flaggregister Carry/Borrow IX IY PC Indexregister X Indexregister

Läs mer

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter: 1 Syfte Denna laboration syftar till att öva användningen

Läs mer

Assemblerprogrammeringsuppgifter för FLIS-processorn

Assemblerprogrammeringsuppgifter för FLIS-processorn 1 (2013-05-02) Assemblerprogrammeringsuppgifter för FLIS-processorn 1. I simulatorn för FLISP-datorn kan man ansluta strömbrytarmodulen DIPSWITCH till en inport och sifferindikatorn 7-SEGMENT till en utport.

Läs mer

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering, ARM-Cortex M4 del 3 Assemblerprogrammering, ARM-Cortex M4 del 3 Ur innehållet: Fler pekartyper Användning av stacken Lagringsklasser, synlighet - lokala variabler Funktioner - returvärden och parametrar Läsanvisningar: Arbetsbok

Läs mer

LABORATION. Datorteknik Y

LABORATION. Datorteknik Y LABORATION Datorteknik Y Avbrottsprogrammering på Darma Version 4.03 Februari 2019 (OA, KP) Namn och personnummer Godkänd 1 1 Inledning Syftet med laborationen är först att ge övning i avbrottsprogrammering

Läs mer

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk

Läs mer

Läsminne Read Only Memory ROM

Läsminne Read Only Memory ROM Läsminne Read Only Memory ROM Ett läsminne har addressingångar och datautgångar Med m addresslinjer kan man accessa 2 m olika minnesadresser På varje address finns det ett dataord på n bitar Oftast har

Läs mer

DIG IN TO Administration av nätverk- och serverutrustning

DIG IN TO Administration av nätverk- och serverutrustning DIG IN TO Administration av nätverk- och serverutrustning CCNA 1 1.- CISCO 2.- Router 3.- IOS 4.- Grundkonfigurationer 5.- Routing 6.- Dynamisk routing 7.- Distansvektor routingprotokoll Agenda ARPANET

Läs mer

Objektorientering: Lagring, räckvidd och livstid

Objektorientering: Lagring, räckvidd och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg

Läs mer

CE_O5. Cacheminne. Hemlaboration 2.

CE_O5. Cacheminne. Hemlaboration 2. IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

LEU240 Mikrodatorsystem Att placera program i FLASHrespektive

LEU240 Mikrodatorsystem Att placera program i FLASHrespektive Institutionen data- och informationsteknik 2011-10-31 Att placera program i FLASHrespektive RAM-minne Följande resonemang gäller för processorn MC9S12DG256B. Vi kommer i görligaste mån att skriva våra

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25 Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167 GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #21 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Teknologier och hierarkier Minnestyper Vi har hittills

Läs mer

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

BILAGA 1 ADVES MANUAL 1 (7)

BILAGA 1 ADVES MANUAL 1 (7) BILAGA 1 ADVES MANUAL 1 (7) Handläggare Kristofer Söderhielm Datum 2012-06-01 Versionsnr 1.1 Tel +46 739 795 776 Mobil +46 739 795 776 Fax +46 10 505 01 01 kristofer.soderhielm@afconsult.com ÅF-Industry

Läs mer

Föreläsning 4 IS1300 Inbyggda system

Föreläsning 4 IS1300 Inbyggda system Föreläsning 4 IS1300 Inbyggda system Programutveckling Exempel PingPong Idé Tillståndsdiagram State machine Skapa projekt Testning av programvara Peripheral Library till STM32 Programmeringsuppgiften RS232

Läs mer

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning Den digitala automaten Vägen från digitaltekniken till det kompletta styrsystemet Lund University, Sweden Insignaler Sekvensnät Utsignaler Kan vi betrakta insignalmönstret som en instruktion och det som

Läs mer