Programmering av inbyggda system 2014/2015



Relevanta dokument
Maskinorienterad programmering

2010/2011. Syftet med kursen är att vara en introduktion till konstruktion och programmering av små inbyggda system.

LEU500-Maskinorienterad programmering LP3-2016/2017

Maskinorienterad Programmering LP3-2017/2018

Maskinorienterad Programmering IT2, LP2-2016/2017

Maskinorienterad Programmering LP2-2017/2018

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering för ARM del 2

Tentamen med lösningsförslag

Assemblerprogrammering - fördjupning

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

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

Repetition C-programmering

Assemblerprogrammering för ARM del 1

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Assemblerprogrammering för ARM del 1

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tentamen med lösningsförslag

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Tentamen med lösningsförslag

Introduktion C-programmering

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Assemblerprogrammering för HCS12

Tentamen med lösningsförslag

Objektorienterad Programmering (TDDC77)

LEU240 Mikrodatorsystem

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Assemblerprogrammets. struktur; exempel

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Assemblerprogrammets struktur; exempel

Assemblerprogrammering för ARM del 3

Maskinorienterad Programmering 2010/11

Planering Programmering grundkurs HI1024 HT 2014

TDIU01 - Programmering i C++, grundkurs

Programmering av inbyggda system 2012/2013. Kodningskonventioner och programbibliotek. maskinnära programmering i C och assemblerspråk

Tentamen med lösningsförslag

Det finns många flaggor till g++,

Assemblerprogrammering för ARM del 1

Digital- och datorteknik

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

Tentamen med lösningsförslag

DD1314 Programmeringsteknik

CE_O3. Nios II. Inför lab nios2time

Kodningskonventioner (XCC12) Specifikation av strncpy: Övningsexempel: Maskinorienterad Programmering 2011/2012

Assemblerprogrammering del 3

Maskinorienterad programmering

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen med lösningsförslag

Tentamen med lösningsförslag

Tentamen i Programmering grundkurs och Programmering C

Tentamen i. Programmering i språket C

Tentamen i Programmering grundkurs och Programmering C

Tentamen *:58/ID100V Programmering i C Exempel 3

Digital- och datorteknik

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

C++-programmets beståndsdelar

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper

Institutionen för elektro- och informationsteknologi, LTH

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

Typkonvertering. Java versus C

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Tentamen med lösningsförslag

Föreläsning 1 & 2 INTRODUKTION

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Tentamen i Programmering grundkurs och Programmering C

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

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

grundläggande C++, funktioner m.m.

Tentamen i Programmering grundkurs och Programmering C

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

OOP Objekt-orienterad programmering

Assemblerprogrammering del 1

Tentamen med lösningsförslag

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

KOMPLETTERANDE HEMTENTAMEN TDDB53

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Programmering A. Johan Eliasson

Föreläsning 1: Intro till kursen och programmering

Tentamen med lösningsförslag

Lösningar till tentamen i EIT070 Datorteknik

#include <stdio.h> #include <string.h>

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Tentamen i Datakunskap NT

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Programmeringsteknik med C och Matlab

Pascal... Pascal. Pascal... Pascal...

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad programmering i Java

C++ - En introduktion

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Transkript:

Programmering av inbyggda system 2014/2015 Sammanfattning Kursens syften är att vara en introduktion till konstruktion av små inbyggda system och att ge en förståelse för hur imperativa styrstrukturer översätts till assembler att ge en förståelse för de svårigheter som uppstår vid programmering av händelsestyrda system med flera indatakällor. Vi repeterar kursens lärandemål Sammanfattning 1

1. Programutveckling i C och assemblerspråk Kunna utföra programmering i C och assemblerspråk samt kunna: beskriva och tillämpa modularisering med hjälp av funktioner och subrutiner. beskriva och tillämpa parameteröverföring till och från funktioner. beskriva och tillämpa olika metoder för parameteröverföring till och från subrutiner. beskriva och använda olika kontrollstrukturer. beskriva och använda sammansatta datatyper (fält och poster) och enkla datatyper (naturliga tal, heltal och flyttal). Sammanfattning 2

beskriva och tillämpa modularisering med hjälp av funktioner och subrutiner. Funktioners parametrar och returvärden. Lagringsklass och synlighet. Sammanfattning 3

beskriva och tillämpa olika metoder för parameteröverföring till och från subrutiner. Sammanfattning 4

beskriva och använda olika kontrollstrukturer. Sammanfattning 5

beskriva och använda sammansatta datatyper (fält och poster) och enkla datatyper (naturliga tal, heltal och flyttal). Kunna redogöra för olika lagringsklasser (GLOBAL, STATIC, LOCAL) och synlighet. Sammanfattning 6

2. Programutvecklingteknik Att kunna: beskriva översättningsprocessen, dvs. assemblatorns arbetssätt, preprocessorns användning, separatkompilering och länkning. konstruera, redigera och översätta (kompilera och assemblera) program testa, felsöka och rätta programkod med hjälp av avsedda verktyg. Sammanfattning 7

beskriva översättningsprocessen, dvs. assemblatorns arbetssätt, preprocessorns användning, separatkompilering och länkning..c fil.s12 fil.lsc.map arkivhanterare C-preprocessor assemblator.o12 fil.o12 länkare fil.o12 översättare.s fil temporär fil.o12.e12.s19 Sammanfattning 8

konstruera, redigera och översätta (kompilera och assemblera) program testa, felsöka och rätta programkod med hjälp av avsedda verktyg. Dessa lärandemål har vi kontrollerat under laborationer. Sammanfattning 9

3. Systemprogrammerarens bild Att kunna: beskriva och tillämpa olika principer för överföring mellan centralenhet och kringenheter så som: ovillkorlig eller villkorlig överföring, statustest och rundfrågning. konstruera program för systemstart och med stöd för avbrottshantering från olika typer av kringenheter. beskriva och exemplifiera olika undantagstyper: interna undantag, avbrott och återstart samt prioritetshantering vid undantag. kunna beskriva metoder och mekanismer som är centrala i systemprogramvara så som pseudoparallell exekvering och hantering av processer. beskriva och använda kretsar för tidmätning. beskriva och använda kretsar för parallell respektive seriell överföring. Sammanfattning 10

beskriva och tillämpa olika principer för överföring mellan centralenhet och kringenheter så som: ovillkorlig eller villkorlig överföring, statustest och rundfrågning. Sammanfattning 11

konstruera program för systemstart och med stöd för avbrottshantering från olika typer av kringenheter. Sammanfattning 12

beskriva och exemplifiera olika undantagstyper: interna undantag, avbrott och återstart. Sammanfattning 13

beskriva och tillämpa olika metoder för prioritetshantering vid multipla avbrottskällor (mjukvarubaserad och hårdvarubaserad prioritering, avbrottsmaskering, icke-maskerbara avbrott). Sammanfattning 14

kunna beskriva metoder och mekanismer som är centrala i systemprogramvara så som pseudoparallell exekvering och hantering av processer. Sammanfattning 15

beskriva och använda kretsar för tidmätning. Sammanfattning 16

beskriva och använda kretsar för parallell respektive seriell överföring. Sammanfattning 17

Av speciell vikt: maskinorienterad programmering... Läsa/skriva på fasta adresser (portar) Datatyper, storlek (8,16 eller 32 bitar...) Heltalstyper, med eller utan tecken, vad innebär typkonverteringarna? Bitoperationer &,, ^ (AND, OR, XOR) Skiftoperationer <<, >> (vänster, höger) Sammanfattning 18

Kodningskonventioner Program som kräver källtexter både i C och assemblerspråk... /* Men även tilldelningar och enklare typkonverteringar! */... { char a; int b,c; a = b; c = a;... } Sammanfattning 19

Pekare och deras användning /* strpbrk.c C-library function "strpbrk" */ #include <string.h> char *strpbrk(char *s,char *breakat) { char *sscan, *bscan; for (sscan = s; *sscan!= '\0'; sscan++) { for (bscan = breakat; *bscan!= '\0';) if (*sscan == *bscan++) return sscan; } return((char *) 0 ); } /* memcpy.c C-library function "memcpy" */ #include <string.h> void *memcpy(void *dst, void *src, size_t size) { char *d, char *s, size_t n; if (size <= 0) return(dst); s = (char *) src; d = (char *) dst; if (s <= d && s + (size - 1) >= d) { /* Overlap, must copy right-to-left */ s += size - 1; d += size - 1; for (n = size; n > 0; n--) *d-- = *s--; }else for (n = size; n > 0; n--) *d++ = *s++; return(dst); } Sammanfattning 20

Assemblerprogrammering... # define DATA *( char *) 0x700 # define STATUS *( char *) 0x701 void printerprint( char *s ) { while( *s ) { while( STATUS & 1 ) {} DATA = *s; s++; } } ; void printerprint( char *s ) _printerprint: ; { ; while( *s ) LDX 2,SP printerprint1: TST,X BEQ printerprint2 ; { ; while(!( STATUS & 1) ) ; {} printerprint3: LDAB $0701 ANDB #$01 BEQ printerprint3 ; DATA = *s; LDAB 1,X+ (även s++ nedan) STAB $0700 ; s++; BRA printerprint1 printerprint2: ; } ; } RTS Sammanfattning 21

Maskinorienterad programmering 2014/2015 Sammanfattad... Tisdag 13/1 Tentamen, 14.00-18.00 (V-salar) Tillåtna hjälpmedel: Instruktionslista för CPU12 Quick guide: C-reference card ANSI En av böckerna: Vägen till C The C programming language Sammanfattning 22