Design av inbyggda system

Relevanta dokument
Design av inbyggda system. Innehåll. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design TDD

Design av inbyggda system

Design av inbyggda system

Design av inbyggda system

Design vid utveckling av inbyggda system

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

Digitalt lärande och programmering i klassrummet

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Program & programmering

Föreläsning 3. Programmering, C och programmeringsmiljö

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Föreläsning 3. Programmering, C och programmeringsmiljö

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Digitala Projekt (EITF11)

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

Programmering i C, 7,5 hp

Före Kravspecifikationen

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmering eller Datalogiskt tänkande

Lego Robot [ ] [ ] [ ]

Datorteknik TSIU02 Kursinformation

Skizz till en enkel databas

Thunder s Truck projektrapport

Programmering robotprogrammering med mbot

Växtviskaren EITF11 Digitala projekt VT15, I12

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Bilen som inte kan krocka

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Visual Basic, en snabbgenomgång

Projektlaboration 4, synkronisering av klockan

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Digitala Projekt Konstruktion av Tamagocchi. Av: Oskar Andersson D05 & Danial Rehman D05

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

Systemkonstruktion SERIEKOMMUNIKATION

4 augusti (G) Programmering: Lego

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

SKOLFS. beslutade den -- maj 2015.

Code-Lite tutorial ( /RoJ)

Programmering A. Johan Eliasson

Digitala Projekt(EITF40) - Larm

Scratch Junior. makeandshape.com. by MIT. Gränssnitt Scratch Junior

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

Pulsmätare med varningsindikatorer

JAVAUTVECKLING LEKTION 4

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Laboration i datateknik

Tentamen Grundläggande programmering

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

SKOLFS. beslutade den XXX 2017.

Digitala projekt rapport

Nätverkskopplat djävulskap Digitala projekt 2011 EITF40. Erik Lundh E06

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Inbyggd elektronik. Övning: Strukturdiagram

Ett exempel som illustration till Laboration 1

EV3 Roboten. Sida 1 av 13

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

KOMPLETTERANDE HEMTENTAMEN TDDB53

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Digitalt lärande och programmering i klassrummet

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Testplanering, test-first, testverktyg

AVR Studio 4 Och AVRFLASH

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

Instuderingsfrågor ETS052 Datorkommuniktion

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Introduk+on +ll programmering i JavaScript

Föreläsning 2. Operativsystem och programmering

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Välkomna till KMM! KMM. KMM - lärandemål Efter fullgjord kurs ska ni bland annat kunna:

Introduktion till git

Quick start manual. Smart-House Rev 1.1

Datorprojekt, del 1. Digitala system 15 p

Digitala projekt Linjeföljande bil

Digitala projekt - Radiostyrd bil

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Tomas Axelsson

Inlämningsuppgifter, EDAF30, 2015

Roboten. Sida 1 av 11

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

729G04 Programmering och diskret matematik. Python 3: Loopar

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

Föreläsningsanteckningar 3. Mikroprogrammering II

Digital- och datorteknik

+5V. start. Styrsystem. stopp. Tillståndsmaskiner

Smart Rogic Manual. Robostick Manual

Algoritmer, datastrukturer och komplexitet

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Transkript:

Design av inbyggda system Innehåll Hårdvarunära design Erfarenhet/Utmaningar värda att tänka på Avbrottsrutiner och huvudloopar hantering av gemensamma data Kopplingsschema hur och varför 10 sätt att lyckas med ett projekt Designspecar bra / dåligt / hur / varför / när

Hårdvarunära design Inbyggt system = man ser inget Hårdvarunära design Systemet byggs samtidigt som man programmerar det

Hårdvarunära design Man behöver ta *SMÅ* utvecklingssteg, justera kompasskursen ofta. Varför? Helheten är svår att överblicka Små delar kan testas lättare Förutsättningar kanske förändras Hårdvarunära design TDD : Test Driven Development REFACTOR FAIL TDD PASS FAIL : Skriv ingen kod förrän det tagits fram ett testfall som ännu inte uppfylls PASS : Skriv kod som uppfyller testfallet/en, men inte mer än det REFACTOR : Hyfsa till, strukturera, optimera koden och kontrollera att den fortfarande uppfyller testfallet/en [Exempel : I2C]

Hårdvarunära design TDD : Test Driven Development N I2C-kommunikation M : Startvillkor M : Adressera slav/w S : Acknowledge M : Skriv data till S S : Acknowledge M : Stoppvillkor START COND. ADDRESS SLAVE+W I2C DATA TRANSFER STOP COND. while!ack while N>0 * * Hårdvarunära design JSP : Jackson Structured Programming Sekvens: Först A sen B A S B READ I2C STATUS I2C TRANSMIT SEND BYTE while!ack * READ I2C STATUS N=N-1 Selektion: A eller B beroende på X Iteration: Först A sen B Så länge N>0 X=0 o A X? X=1 o B While N>0 * A B

Hårdvarunära design Börja med låga hastigheter öka vid behov Robustare Energisnålare Störningskänsligt Energikrävande Hårdvarunära design Spana framåt undvik hinder

Hårdvarunära design Se även bakåt ingen del av systemet är färdigt förrän hela produkten är klar Man kan få riva upp och göra om Då är man glad om man tagit små steg Hårdvarunära design Var paranoid! Överallt! Koll på allt! Hela tiden!

Avbrottsrutiner och huvudloopar Ett sätt att uppnå realtidsfunktionalitet och parallelism Avbrottsrutiner och huvudloopar Vilka avbrott ska vi hantera? Vad ska göras i avbrottsrutiner? Vad ska göras i kod som inte är avbrottsrutiner? Vad är lagom mycket för en avbrottsrutin? Hur klarar man krav på timing? Vilka data delas mellan avbrottsrutiner och övrig kod? Hur delas data? En läser och en skriver, båda läser, båda skriver, etc.

Avbrottsrutiner och huvudloopar Avbrott i AVR, förutsättningar: Nya avbrott blockeras när avbrottsrutin körs (dvs pågående avbrott avbryts inte) Nya avbrott som inkommer när avbrottsrutin körs latchas/memoreras (en flagga per avbrottsvektor) Vissa variabler kan läsas och skrivas atomärt (dvs accessen av variabeln avbryts inte), andra är icke atomära

Avbrott i AVR, atomär läsning av en variabel vid upprepade tillfällen Gemensam variabel mellan ISR huvudloop int Distance; Variabeln sätt av ISR (Interrupt Service Routine) Avbrott i AVR, atomär läsning av en variabel vid upprepade tillfällen Kod i huvudloop if (Distance < 10) decrease robot speed else if (Distance > 20) increase robot speed else do not change robot speed

Avbrott i AVR, atomär läsning av en variabel vid ett tillfälle local_distance = Distance; if (local_distance < 10) decrease robot speed else if (local_distance > 20) increase robot speed else do not change robot speed Avbrott i AVR, icke-atomär läsning av en variabel DISABLE_INTERRUPTS; local_distance = Distance; ENABLE_INTERRUPTS; if (local_distance < 10) decrease robot speed else if (local_distance > 20) increase robot speed else do not change robot speed Distance 8 bitar 8 bitar

Avbrott, andra typer av scenarier gemensamma data Buffertar avbrottsrutin skriver/läser, huvudloop skriver/läser Gemensamma datablock huvudloop skriver/läser hela block med avbrott stängda (för att säkerställa konsistens av data inom ett block) Dubbelbuffring huvudloop arbetar med kopia, avbrottsrutin arbetar med en annan - avbrottsrutin gör swap genom att flytta pekare huvudloop stänger av avbrott vid läsning av pekare om dessa inte kan läsas atomärt Avbrott - embedded, referensmaterial AVR : Tutorial, GCC m m https://www.mikrocontroller.net/articles/avr Tysk site, men funkar bra med Google translate Artikel på vanheden http://vanheden.isy.liu.se En artikelserie från embedded.com http://bit.ly/svhrih

Kopplingsschema Kopplingsschema Hur? Varför? Renrita!! Använd rutat papper!!

Kopplingsschema Från schema till bygge Vira in en liten del åt gången Bocka av virade trådar i schemat Kopplingsschema Från schema till bygge Ett eller flera virkort...

Kopplingsschema Från schema till bygge Parallella ledare... Kopplingsschema Från schema till bygge Anslut reset! Utan reset : svår felsökning! Utan reset : felaktig programmering!

Kopplingsschema Från schema till bygge JTAG används för programmering och debugging JTAG-kedja...... eller inte Schemaritningsprogram KiCad www.kicad-pcb.org Open Source via GNU GPL v3 EAGLE https://www.autodesk.com/products/eagle/ Kommersiell, men gratis för mindre storlekar (80 cm^2) av konstruktioner Mentor - Expedition PCB Cadence - Allegro PCB Altium - PCB Designer Kommersiella och kompetenta, MEN komplexa med mycket dyra licenskostnader

10 sätt att lyckas med ett projekt Baserat på råd från tidigare års studenter 10 sätt att lyckas med ett projekt 1 : Börja i tid

10 sätt att lyckas med ett projekt 2 : Gör ordentliga virningar www.bigmessofwires.com 10 sätt att lyckas med ett projekt 3 : Skriv programkoden själv

10 sätt att lyckas med ett projekt 4 : Strukturera programkoden int banan22(int banan13, int banan37) { if (banan37 > banan13) then banan13 = banan37*3; else banan13 = banan37-banan13; return banan13; } 10 sätt att lyckas med ett projekt 5 : Använd versionshantering https://gitlab.ida.liu.se https://docs.isy.liu.se/bin/view/vanheden/git Undvik helst GitHub Håll även kopplingsshemat uppdaterat!!!

10 sätt att lyckas med ett projekt 6 : Läs databladen 1. Översiktligt 2. Detaljerat 3. Verifiering 10 sätt att lyckas med ett projekt 7 : Verifiera komponentens funktion REKLAM VERKLIGHET

10 sätt att lyckas med ett projekt 8 : MÄT! Logikanalysatorlab Tre tillfällen, gå på ett av dom Anmälan på listor utanför Muxen Zu messen ist zu wissen 10 sätt att lyckas med ett projekt 9 : Samarbeta Kommunicera! Färdig i förväg? Sjuk? Alla har ett gemensamt ansvar!

10 sätt att lyckas med ett projekt 10 : Konstruera och lös problemen steg för steg Designspecar Checklista för designspec => Exempel på designspecar => + Fokus på hårdvaran + Pseudokod som bilaga + Upprepa inte datablad Inlämningstid Senast 7/3 kl 16:00 ska en första version av designspecen vara inlämnad till handledaren Senast 20/3 kl 16:00 ska designspecen kunna vara godkänd av handledaren

Designspecifikation : Förslag på arbetsordning 1 : Kopplingsschema - Så detaljerat som möjligt - Ta bort ovidkommande information - Vilken / vilka bussar är lämpliga / krävs? - Namnge signaler och bussar - Planera in anslutning för JTAG samt reset - Behövs nivåkonvertering? 5V <-> 3V 2 : Datastrukturer - Hur ska data lagras? - Vad ska skickas? - På vilken form? Rådata eller SI-enheter? - Behövs nåt protokoll, paketering av data? 3 : Programflöde / struktur - Vad ska vara avbrott? - Vad passar i huvudloopen 4 : Beskrivande information - Textuell - Bilder / figurer