Tillämpad digital signalbehandling Signalprocessorn Statiska moduler och buffrar
|
|
- Karl Bengtsson
- för 5 år sedan
- Visningar:
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
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
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
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
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.
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
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
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
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
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)
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
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
Ö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-
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
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
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
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å
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ö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
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
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
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
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............................
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
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
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:
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
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
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
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
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?
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
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
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
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,
Ö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
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
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
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
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
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
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
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
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
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
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
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
Ö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
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.
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()
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.
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
Ö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
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
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
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
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
Ö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
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
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
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
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.
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
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
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
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ä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
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
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)
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.
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
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
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
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
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
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,
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,
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
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
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,
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
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
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