INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester



Relaterede dokumenter
I3PRG3+I3DTM3+I3ISY1-3. semester

ECE 551: Digital System * Design & Synthesis Lecture Set 5

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Processer og tråde. dopsys 1

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Netværk & elektronik

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Koordinering. dopsys

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Aktivering af Survey funktionalitet

Programmering i C. Lektion december 2008

Hvordan vælger jeg dokumentprofilen?

Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US

ODIN-webservice ændringer release 2010 v2.0

User Manual for LTC IGNOU

University of Copenhagen Faculty of Science Written Exam - 3. April Algebra 3

PMDK PC-Side Basic Function Reference (Version 1.0)

Internt interrupt - Arduino

Real-time programming safety in Java and Ada

// Definition af porte og funktioner

Resource types R 1 1, R 2 2,..., R m CPU cycles, memory space, files, I/O devices Each resource type R i has W i instances.

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Løsning af skyline-problemet

Vina Nguyen HSSP July 13, 2008

Eksamen dcomnet Q2/2010. Navn

A Profile for Safety Critical Java

Help / Hjælp

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

Virkefeltsregler i Java

DM507 Algoritmer og datastrukturer

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Niveauer af abstrakte maskiner

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1)

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

MultiProgrammer Manual

SWC eksamens-spørgsmål. Oversigt

Programmering i C. Lektion september 2009

Kan jeg hæve penge i [land] uden at betale gebyrer? Asking whether there are commission fees when you withdraw money in a certain country

Asking whether there are commission fees when you withdraw money in a certain country

Asking whether there are commission fees when you withdraw money in a certain country

Det er muligt at chekce følgende opg. i CodeJudge: og

Barnets navn: Børnehave: Kommune: Barnets modersmål (kan være mere end et)

Bilag. Resume. Side 1 af 12

ITJAV2 Obligatorisk opgave Portering af KVM til RTKernel

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM v. 1.0

Business Rules Fejlbesked Kommentar

Titel: Barry s Bespoke Bakery

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Fejlbeskeder i Stofmisbrugsdatabasen (SMDB)

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Statistik for MPH: 7

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

SPØRGSMÅL TIL UDBUD AF SYSTEMUNDERSTØTTELSE AF GEODANMARK PRÆKVALIFIKATIONSFASEN

Common Language Runtime. Multithreading

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

MCE9637 DeviceNet Modul

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Abstrakte datatyper C#-version

DM507 Algoritmer og datastrukturer

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

Fra programmering til mikroprocessor

Hvor er mine runde hjørner?

Kernealphaerne Indhold af G1

Linear Programming ١ C H A P T E R 2

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION

Online kursus: Programming with ANSI C

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Boligsøgning / Search for accommodation!

WIO200A INSTALLATIONS MANUAL Rev Dato:

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Basic statistics for experimental medical researchers

Small Autonomous Devices in civil Engineering. Uses and requirements. By Peter H. Møller Rambøll

DENCON ARBEJDSBORDE DENCON DESKS

Statistik for MPH: oktober Attributable risk, bestemmelse af stikprøvestørrelse (Silva: , )

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

CHAPTER 8: USING OBJECTS

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Particle-based T-Spline Level Set Evolution for 3D Object Reconstruction with Range and Volume Constraints

Engineering of Chemical Register Machines

Design Systemkald. User-mode Linux, The Linux kernel/

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

Samlevejledning til tremmeseng 70 x 140 Assembly instruction for cot 70 x 140

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring Side 1 af 15

IBM WebSphere Operational Decision Management

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

SmartDock for Xperia ion Brugervejledning

University of Copenhagen Faculty of Science Written Exam April Algebra 3

Læs vejledningen godt igennem, før du begynder at samle vuggen. Please read the instruction carefully before you start.

Transkript:

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 7 Eksamenstermin: DECEMBER 2003 / JANUAR 2004 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir til kladde og renskrift Særlige bemærkninger: Besvarelsen afleveres således, at I3PRG3 opgave nr. 1, I3DTM3 opgave nr. 2 og I3ISY1 opgave nr. 3 afleveres i hvert sit omslag

Side 2 af 7 OPGAVE 1. I forbindelse med håndtering af hœndelser anvendes i et system blandt andet klasserne: class Event enum PriorityLevel LOW = 0, NORMAL = 1, HIGH = 2 virtual ~Event()} virtual PriorityLevel priority() = 0; virtual void info() = 0; virtual void action() = 0; class EventQueue // Det er Event pointere der er i EventQueue virtual ~EventQueue()} virtual void put(event *eventptr) = 0; virtual Event *get() = 0; // skal returnere 0 hvis køen er tom class EventHandler EventHandler(EventQueue *eventqueueptr); ~EventHandler(); void handleevent(); // Henter nœste hœndelse (Event) i køen og // udfører action(). Hvis priority() er LOW // eller NORMAL kaldes info() der laver // passende udskrifter. // Afslutningsvis fjernes (deallokeres) // hœndelsen. // Hvis køen er tom returneres umiddelbart. private: EventQueue *m_eventqueueptr; endvidere skal klassen SpecialBuffer der implementerer en speciel effektiv buffer anvendes. Opgave 1 fortsættes næste side

Side 3 af 7 OPGAVE 1, fortsat. SpecialBuffer er erklœret således: template <class T> class SpecialBuffer SpecialBuffer(); ~SpecialBuffer(); void insert(t t); // indsœtter en vœrdi i bufferen T extract(); // henter en vœrdi fra bufferen bool isempty(); private:... og såvel.hpp som.cpp fil er til rådighed. a) Lav på grundlag af klassen EventQueue klassen SBEventQueue (.hpp og.cpp filer) med anvendelse af SpecialBuffer, altså class SBEventQueue : public EventQueue, hvor SpecialBuffer anvendes til implementeringen af SBEventQueue. b) Lav klassen EventHandler (.cpp filen). Besvarelsen af opgaven skal indeholde passende forklaring på hvad der laves.

Side 4 af 7 Følgende er givet: En SBC686 med et IO686-kort monteret. OPGAVE 2. Et DOS exe-program, der initierer PPI'en på IO686 til: Mode 0 med porta, portb og portc = indgange. I programmets datasegment er følgende buffer til 6 WORD defineret:.data buffer DW 6 DUP(0) Programmet udfører den nødvendige initiering til at muliggøre HW-interrupt fra IRQ5. HW-interrupt IRQ5 aktiveres af et ekstern signal. a) Skriv i MASM en interruptservicerutine hentdata til håndtering af interrupt fra IRQ5. Servicerutinen skal i hvert gennemløb foretage indlæsning af 6 WORD fra PPI'en til buffer. Servicerutinens funktion kan beskrives på følgende måde: Aflæsningen af de 6 WORD er styret af et ekstern signal, der sender pulser til portc's bit 0, således at aflæsning af hvert enkelt WORD skal ske umiddelbart efter bit 0 på portc skifter fra høj(1) til lav(0). Hvert WORD aflæses på PPI'ens porta (LSByte) og portb (MSByte) og skrives fortløbende i buffer, og det først aflæste WORD skrives på plads (index) 0. Det kan antages, at portc's bit 0 er lav i starten af servicerutinen og imellem aflæsningerne så detektering af begge flanker er muligt og nødvendigt! inden aflaesning af porta og portb. Ovenstående kan også beskrives med følgende tidsdiagram: Desuden er der følgende krav til servicerutinen: Der skal enables for HW-interrupt med højere prioritet (end IRQ5) inden aflæsningen begynder. Der skal sendes EOI-kommando når aflæsningen er slut. Opgave 2 fortsættes næste side.

Side 5 af 7 OPGAVE 2, fortsat. PPI'ens portadresser er: porta = 304h, portb = 305h og portc = 306h. Interruptcontrolleren's OCW2-adresse er: 20h. b) Skriv i MASM en procedure findmin, der har følgende funktionalitet: Proceduren skal finde det mindste tal i buffer og returnere det fundne tal i register AX. Tallene i buffer er signede WORD i 2-komplement kode. Procedurens C-prototype er: short findmin();

Side 6 af 7 OPGAVE 3. Et RTKernel system består blandt andet af processerne (trådene) Dataopsamling, Beregning, Alarm og main. I forbindelse med opbevaring af data anvendes en RTKernel bufferpool (se bilag 1) med en blokstørrelse på BLOK_LEN og BLOK_ANTAL antal blokke. Data samples med anvendelse af funktionen sample(void *bufptr, int n) der er defineret andetsteds, og hvor bufptr en en pointer til en buffer (en blok) hentet fra poolen og n er antal bytes der samples. Processerne Dataopsamling og Beregning kommunikerer via en postkasse mbdata med MB_DATA_LEN pladser (slots) der hver kan indeholde en pointer til en buffer (en blok). Processerne Beregning og Alarm kommunikerer via en semafor alarmsem. Proces Dataopsamling skal hver gang der er gået 50 msek allokere en buffer fra bufferpoolen, sample BLOK_LEN bytes og anbringe bufferen i postkassen mbdata (hvis poolen er tom laves der ikke noget i den aktuelle runde). Proces Beregning skal hver gang der hentes en buffer fra postkassen beregne middelvœrdien af data (bytes) i bufferen og hvis middelvœrdien ligger uden for intervallet [MIN_LIMIT - MAX_LIMIT] skal der signaleres til alarmsem. Beregning skal også deallokere den aktuelle buffer (levere den tilbage til bufferpoolen). Proces Alarm venter ved alarmsem og når der signaleres skal funktionen alarmaction() (defineret andetsteds) kaldes. Proces main skal initiere systemet, oprette alle relevante objekter (bufferpool, postkasse, semafor og procesobjekter) og starte alle processer. Følgende definitioner er altså lavet andetsteds og kan uden videre anvendes: BLOK_LEN BLOK_ANTAL MB_DATA_LEN MIN_LIMIT MAX_LIMIT void sample(void *bufptr, int n); void alarmaction(); ligesom den i ISY-1 tidligere anvendte class Thread kan anvendes. a) Lav klasserne Dataopsamling og Beregning (begge arver fra class Thread). Klassen Alarm skal altså ikke laves. b) Lav main processen (proces Alarm medtages ikke). Besvarelsen af opgaven skal indeholde passende forklaring på hvad der laves. Bilag 1 til opgave 3 følger næste side

Side 7 af 7 BILAG 1 TIL OPGAVE 3. Function RTKAllocMemPool Function RTKAllocMemPool creates and initializes a Memory Pool: void RTKAllocMemPool(RTKMemPool * Pool, unsigned BlockSize, unsigned Blocks); Parameters Pool: Pointer to the pool handle of the pool to initialize. BlockSize: Block size to use for the memory pool. Blocks: The pool is allocated with Blocks data buffers of size BlockSize. The buffers are allocated using RTKAlloc, which in turn uses RTKernel-32's memory driver. Therefore, RTKAllocMemPool will generally not fulfil real-time requirements. Its time behavior is non-deterministic and it must not be called in interrupt handlers. Function RTKGetBuffer Function RTKGetBuffer retrieves a buffer from a Memory Pool: void * RTKGetBuffer(RTKMemPool * Pool); Parameters Pool: Pointer to the pool handle of the pool from which to retrieve the buffer. return value: A pointer to the buffer is returned. If this was the last available buffer in the pool, *Pool is assigned the value RTK_EMPTY_POOL. If Pool is empty, the return value is NULL. Function RTKFreeBuffer Function RTKFreeBuffer passes a buffer to a Memory Pool: void RTKFreeBuffer(RTKMemPool * Pool, void * Buffer); Parameters Pool: Pointer to the pool handle of the pool to which to pass the buffer. Buffer: Pointer to the buffer to pass. In general, the buffer will have been retrieved previously from the pool; however, it can also have been allocated by a different method (e.g., malloc, RTKAlloc, or allocated as a static variable). It must be ensured that the same buffer is not passed to a pool twice by RTKFreeBuffer, because this would destroy the Memory Pool. This condition is not recognized by RTKFreeBuffer and the program will crash in most cases.