EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Relevanta dokument
Tentamen. DAT015 Maskinorienterad programmering IT DIT151 Maskinorienterad programmering GU. Tisdag 15 december 2009, kl

Tentamen. DIT150 Maskinorienterad programmering GU DAT015 Maskinorienterad programmering IT. Söndag 17 december 2006, kl

Tentamen. DAT015 Maskinorienterad programmering IT. Fredag 21 april 2006, kl i V-salar

Tentamen. EDA485 Maskinorienterad programmering Z. Måndag 6 mars 2006, kl i V-salar

Tentamen. EDA485 Maskinorienterad programmering Z DAT015 Maskinorienterad programmering IT. Tisdag xx yyyy 2006, kl

Tentamen med lösningsförslag

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Maskinorienterad programmering

(Lösningsförslag finns sist i denna fil.)

Tentamen. EDA432 Digital- och datorteknik, IT DIT790 Digital- och datorteknik, GU. Måndag 18 Oktober 2010, kl

Tentamen med lösningsförslag

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Maskinorienterad programmering

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Tentamen med lösningsförslag

Programmering av inbyggda system

Programexempel för FLEX

Maskinorienterad Programmering 2010/2011. Maskinorienterad Programmering 2010/2011. Skrivarporten, p Arbetsbok MC12, avsnitt 2

CHALMERS TEKNISKA HÖGSKOLA

Avbrottshantering. Övningsuppgifter

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

Tentamen med lösningsförslag

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

Tentamen med lösningsförslag

Tentamen med lösningsförslag

Programmering av inbyggda system 2014/2015

Tentamen med lösningsförslag

Övningsuppgifter i Mikrodatorteknik 4p/5p

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Dataöverföring på Parallell- och serieform MOP 11/12 1

Laborationsmoment t 2 - En Borrautomat

Tentamen med lösningsförslag

Extrauppgifter för CPU12

Exempel på tentamen 1

TENTAMEN (med svar och vissa lösningar)

Exempel 3 på Tentamen

Exempel 1 på Tentamen med lösningar

Digital- och datorteknik

Tentamen med lösningsförslag

Seriekomunikation. CAN ett kommunikationsprotokoll för realtidssystem. Seriekomunikation -forts. Seriekomunikation -forts

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

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

Tentamen med lösningsförslag

Tentamen med lösningar

Laborationsmoment t 2 - En Borrautomat

Lösningsförslag tenta

Lösningar till tentamen i EIT070 Datorteknik

Maskinorienterad programmering

Att använda pekare i. C-kod

Förutsättningar för skrivaranslutningen. Första programexemplet. Synkronisera arbetstakterna

Förutsättningar för skrivaranslutningen

Assemblerprogrammets struktur; exempel

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

Laborationsmoment 2 - En Borrautomat

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

LEU240 Mikrodatorsystem

Maskinorienterad Programmering 2010/11

Förutsättningar för skrivaranslutningen. Första programexemplet. strängslut. Maskinorienterad Programmering 2011/2012 Synkronisering och undantag

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

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

EDA215 Digital- och datorteknik för Z

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Lösningar till tentamen i EIT070 Datorteknik

Lösningsförslag till Tenta i Mikrodator

Printerport. I DAG Fö 3. Adressavkodning för skrivarporten. Printerport - forts

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Tentamen 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Digital- och datorteknik

6 Lågnivåprogrammering

Adressavkodning - busskommunikation

Kontrollskrivning Mikrodatorteknik CDT S2-704

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

Digital- och datorteknik

Digital- och datorteknik

Övning 6. Parallellport, timer

Digital- och datorteknik

EDA Digital och Datorteknik

Övning 7. Timer, serieport

VELKOMMEN!!!! SYFTE o MÅL. till EDA485/DIT151. Maskinorienterad Programmering. Kurslitteratur. önskar Jan o Rolf

Laborationsmoment 2 - En Borrautomat

Lösningsförslag till Tenta i Mikrodator

Tentamen med lösningsförslag

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

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

Projektlaboration 4, synkronisering av klockan

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Tentamen med lösningsförslag

Tentamen. Datorteknik Y, TSEA28

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

Tentamen. Datorteknik Y, TSEA28

Assemblerprogrammering - fördjupning

Tentamen. Datorteknik Y, TSEA28

F8: Undantagshantering

A-del motsvarande KS1

Tentamen med lösningsförslag

Transkript:

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7) 1. Motivation ROM. 8kbyte 2 3 2 10 byte 13 Adressbitar [A12,A0] direkt till ROM-kapsel. RWM. 32kbyte 2 5 2 10 byte 15 Adressbitar [A14,A0] direkt till RWM-kapsel. Minnesmodulerna och I/O-portarna tar upp följande adressområden: Väljer att lägga IN- och UTport på samma adress då detta ger färre grindar. Lösning A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 RWM Start: 0000-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Stop: 7FFF 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ROM Start: E000 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Stop: FFFF 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 I/O 8000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Realisering Alla chip select signaler är aktiva låga. CS-ROM: {A 15 A 14 A 13 E R/W CS-RWM: {A 15 E I/O: Bilda först IOSEL för både portarna enligt {A 15 A 14 E Välj sedan OUTSEL enligt {IOSEL R/W och slutligen INSEL enligt {IOSEL R/W A 15 A 14 A 13 E R/W CS_ROM A 15 E CS_RWM A 15 A 14 E R/W CS_IO R/W INSEL OUTSEL

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 2(7) 2. **************************************************************** * Subrutin IRQINIT initierar avbrottssystemet. * Variabeln CLOCK nollställs och variabeln TMP sätts till 100 * IN-parametrar: - * UT-parametrar: - * Påverkade register: - * Anrop: JSR IRQINIT * Anropade rutiner: - **************************************************************** IRQINIT psha pshx movw #0,CLOCK nollställ kolckan movb #0,CLOCK+2 ldaa #100 Avbrottsräknare staa TEMP staa IRQRES nollställ avbrottsvippan ldx #IRQ avbrottsvektor stx $fff2 (alt 3ff2) cli pulx pula rts TEMP rmb 1 Avbrottsräknare (100 IRQ = 1s) **************************************************************** * Avbrottsrutin IRQ som startar var 10:de ms uppdaterar klockan enligt: * 1) Kvittera avbrott * 2) Minska variabeln TMP (startvärde 100). * 3) OM TMP blir noll: * öka den globala variabeln CLOCK * IN/UT-parameter: Global variabel CLOCK **************************************************************** IRQ staa IRQRES nollställ avbrottsvippan dec TEMP 100 avbrott? ldaa #100 Avbrottsräknare staa TEMP * Öka sekunder ldaa CLOCK+2 adda #1 daa staa CLOCK+2 cmpa #60 Hel minut? * Öka minuter clr CLOCK+2 Nolla sekunder ldaa CLOCK+1 adda #1 daa staa CLOCK+1 cmpa #60 Hel timme? * Öka timmar clr CLOCK+1 Nolla minuter ldaa CLOCK adda #1 daa staa CLOCK cmpa #24 24 timmar? clr CLOCK Nolla timmar IExit rti

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 3(7) 3. a. Flexibelt, Multimaster, Multicast, Hög överföringshastighet, Kort svarstid, Automatisk omsändning, Atomic broadcast, Synkroniserad exekvering, Avlastar processorn. b. En deadline's värdefunktion beskriver resultatet av det som händer om systemet ej levererar sitt svar i tid: Man skiljer på Kvalitén hos vissa Resultatet är värdelöst Resultatet är nödvändigt tjänster kan komma för systemet. för undvikande av katastrof. att sänkas. c) Busy Wait och Polling används för att synkronisera processorn med en yttre enhet. Mottagaren Redo? N Mottagaren Redo? N J J Sänd Data till mottagaren Sänd Data till mottagaren Busy Wait Polling Fördelar: Enheten får service direkt Nackdelar: Andra enheter får vänta ty processorn är upptagen med att vänta Typexempel på kod: Wait ldaa Statusregister bita #ReadyBit beq Wait stab Dataregister Fördelar: Flera enheter kan servas samtidigt Nackdelar: Service ges inte direkt till en redo enhet ty processorn kan jobba med annat Typexempel på kod: ldaa Statusregister bita #ReadyBit beq TestLater TestLater stab Dataregister

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 4(7) d) Pass 1: Skapa symboltabell; Pass 2: Lägg ut kod e) Exempelvis Loop BRSET STATUS,#4,Loop kan bytas mot PSHA Loop LDAA STATUS BITA #4 BNE Loop PULA

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 5(7) UPG 4 char *strstr(const char *s1, const char *s2) { const char *p1, *p2; for (; *s1; s1++) { for (p1 = s1, p2 = s2; *p2 *p1==*p2; p1++, p2++) ; if (!*p2) return s1; return 0;

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 6(7) UPG5 // Deluppgift a // Filen monitor.h #include "clock.h" void monitor(time_type interval, int (*test)(void), void (*alarm)(void)); // Filen monitor.cpp #include "monitor.h" #include "clock.h" void monitor(time_type interval, int (*test)(void), void (*alarm)(void)) { while (1) { hold(interval); if (!test()) alarm(); // Deluppgift b // Filen heart_ports.h #ifndef HEART_PORTS_H #define HEART_PORTS_H // Färdiga Typer typedef unsigned char port; typedef unsigned char *portptr; typedef void (**vecptr) (void); // port // pekare till en port // pekare till avbrottsvektor // Färdiga Användbara makron #define set(r, mask) (r) = (r) mask #define clear(r, mask) (r) = (r) ~mask // Egna nya definitioner #define HEARTREG_ADR #define HEARTREG 0xD00 *((portptr) HEARTREG_ADR) #define HEART_VEC_ADR 0xFF90 // Adress till avbrottsvektor #define HEART_VEC *((vecptr) HEART_VEC_ADR) #define POWERREG_ADR #define POWERREG #define on_bit #define intr_bit #define reset_bit #endif 0xD02 *((portptr) POWERREG_ADR) 0x01 0x40 0x80

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 7(7) // Filen heart.c #include "heart_ports.h" #include "monitor.h" void call_nurse(void); void heart_trap(void); static int beat = 0; void heart_inter(void) { clear(heartreg, reset_bit); beat = 1; // Färdigskriven funktion // Avbrottsrutin i assembler // Anropas av rutinen heart_trap void init_heart(void) { HEART_VEC = heart_trap; set(heartreg, on_bit); set(heartreg, intr_bit); int heart_test(void) { int b = beat; beat = 0; return b; void heart_alarm(void) { POWERREG = 6 << 4; set(powerreg, on_bit); call_nurse(); int main() { init_clock(); init_heart(); monitor(5000, heart_test, heart_alarm);