Design vid utveckling av inbyggda system



Relevanta dokument
Design av inbyggda system

Design av inbyggda system

Design av inbyggda system

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

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

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

Digitalt lärande och programmering i klassrummet

Bilen som inte kan krocka

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

Digitala Projekt (EITF11)

Flaxande Fågel. Introduktion. Level

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14

Program & programmering

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Digitala Projekt(EITF40) - Larm

Laboration i datateknik

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

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

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

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Logik och kontrollstrukturer

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

Bruksanvisning KABA MAS AUDITCON KABA MAS HAMILTON Modell 100, 200, 400, 50 och 52

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

Inlämningsuppgifter, EDAF30, 2015

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

Digitala projekt rapport

Digitala projekt Linjeföljande bil

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

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

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

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

Extramaterial till Matematik Y

Före Kravspecifikationen

Lego Robot [ ] [ ] [ ]

Projektlaboration 4, synkronisering av klockan

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

Whack-a-Witch. Introduktion. Nivå

Labb 1: Vad, hur, och varför?

Programmering med Arduino

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

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

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

Programmeringsteknik I

Programmering i C, 7,5 hp

Introduk+on +ll programmering i JavaScript

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

Strukturerad problemlösning. Metoder och verktyg för datavetare Ht09

Programmering robotprogrammering med mbot

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

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

Code-Lite tutorial ( /RoJ)

Roboten. Sida 1 av 11

Databaser design och programmering. Transaktionshantering och säkerhet säkerhetsproblem fleranvändarproblem transaktioner låsning

Laborationsrapport av robotprogrammering

Blockly är en av apparna som används för att styra roboten Dash. Den är väldigt enkel i sin utformning och kan med fördel användas av yngre barn.

Vad händer egentligen före en krasch? Svarta lådor och tidsmaskiner sparar pengar för företag

Programmering. Scratch - grundövningar

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

Micro:bit och servomotorer

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

The Intelligent Timer

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

Grundläggande programmering med C# 7,5 högskolepoäng

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

Simon Johansson Introduktionskurs Datateknik 1310

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Objektorienterad Programkonstruktion. Föreläsning jan 2017

1 Kravspecifikation Snake App

Planering Programmering grundkurs HI1024 HT data

JavaScript Block Editor:

Pulsmätare med varningsindikatorer

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Planering Programmering grundkurs HI1024 HT TIDAA

Snabbstart av Aspen med hjälp av skärmdumpar

Prestanda och code cleanup

Laborationshandledning

Föreläsning 1 & 2 INTRODUKTION

Kursinformation Grundkurs i programmering med Python

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Programmeringsappar. Av Alex

Programmering B med Visual C

Digitala Projekt VT13. PING-Pong

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

Ipad i teknikundervisningen

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Laboration i datateknik

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

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

Manual för Autostart Speed Control

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

EV3 Roboten. Sida 1 av 13

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Helena Harrysson och Linnéa Wickberg

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

Transkript:

Design vid utveckling av inbyggda system Föreläsning i KMM, 2013-10-11

Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

Dagens föreläsning Hårdvarunära design - värt att tänka på Avbrottsrutiner och huvudloopar - hantering av gemensamma data Kopplingsschema - Hur och varför Designspec - bra / dåligt / hur / varför / när

Hårdvarunära design Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Hårdvarunära design Hårdvarunära design Inbyggt system = man ser inget Systemet byggs samtidigt som man programmerar det Man behöver ta *SMÅ* utvecklingssteg Börja med låga hastigheter - öka vid behov Spana framåt - undvik hinder Se bakåt - ingen del av systemet är färdigt förrän hela systemet är klart Var paranoid!

Avbrottsrutiner och huvudloopar Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

Avbrottsrutiner och huvudloopar Avbrottsrutiner och huvudloopar Vilka avbrott skall vi hantera? Vad skall göras i avbrottsrutiner? Vad skall göras i kod som inte är avbrottsrutiner? Vad är lagom mycket att göra i en avbrottsrutin? Hur klarar vi krav på timing? Vilka data delas mellan avbrottsrutiner? Vilka data delas mellan avbrottsrutiner och kod som inte är avbrottsrutiner? Hur delas data? En läser och en skriver, båda läser, båda skriver och läser, etc.

Avbrottsrutiner och huvudloopar Antaganden Avbrott är avstängda när avbrottsrutin körs Avbrott som inkommer när avbrottsrutin körs latchas (ett avbrott per vektor) Vissa variabler kan läsas och skrivas atomärt

Avbrottsrutiner och huvudloopar Atomär läsning av en variabel vid upprepade tillfällen Gemensam variabel mellan ISR och huvudloop int Direction; Variabeln sätts av ISR

Avbrottsrutiner och huvudloopar Atomär läsning av en variabel vid upprepade tillfällen Kod i huvudloop if (Direction > 0) { increase robot speed } else if (Direction < 0) { decrease robot speed } else { do not change robot speed }

Avbrottsrutiner och huvudloopar Atomär läsning av en variabel vid ett tillfälle local_direction = Direction; if (local_direction > 0) { increase robot speed } else if (local_direction < 0) { decrease robot speed } else { do not change robot speed }

Avbrottsrutiner och huvudloopar Icke-atomär läsning av en variabel DISABLE_INTERRUPTS; local_direction = Direction; ENABLE_INTERRUPTS; if (local_direction > 0) { increase robot speed } else if (local_direction < 0) { decrease robot speed } else { do not change robot speed }

Avbrottsrutiner och huvudloopar Andra typer av scenarier - gemensamma data Buffertar - avbrottsrutin skriver, huvudloop läser Buffertar - avbrottsrutin läser, huvudloop skriver Gemensamma datablock - huvudloop läser/skriver hela block med avbrott avstängda (för att säkerställa konsistens av data inom ett block) Dubbelbuffring - huvudloop arbetar med en 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

Avbrottsrutiner och huvudloopar Referensmaterial Artikel på Vanheden http://bit.ly/xo5fzz En artikelserie från embedded.com - http://bit.ly/svhrih Embedded Gurus - http://embeddedgurus.com/ The Ganssle Group - http://www.ganssle.com/

Kopplingsschema Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

Design vid utveckling av inbyggda system Kopplingsschema Kopplingsschema Hur ritar man ett kopplingsschema och varför?

Design vid utveckling av inbyggda system Kopplingsschema Kopplingsschema Från kopplingsschema till bygge I Vira in en liten del åt gången I Bocka av virade trådar i schemat

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge Ett eller flera virkort...

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge Parallella ledare...

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge Anslut reset! Utan reset : svår felsökning Utan reset : felaktig programmering

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge Anslut reset! Utan reset : svår felsökning Utan reset : felaktig programmering

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge Anslut reset! Utan reset : svår felsökning Utan reset : felaktig programmering

Kopplingsschema Kopplingsschema Från kopplingsschema till bygge JTAG används för programmering och debugging JTAG-kedja...... eller inte

Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

If you like living on the edge... Börja inte i tid Undvik ordentliga virningar Använd någon annans programkod Låt bli att strukturera programkoden Använd inte versionshantering Läs inte databladen Undvik att verifiera en komponents funktion Mät inte Undvik att samarbeta Bygg allt på en gång Man kan lära sig av misstagen - om man får dom i lagom doser

Designspec Innehåll Hårdvarunära design Avbrottsrutiner och huvudloopar Kopplingsschema Designspec

Designspec Designspec Checklista för designspec => Exempel på designspecar => +Fokus på hårdvaran +Pseudokod som bilaga +Upprepa *INTE* datablad Inlämningstid 5/11 kl 16:00 senast, ska en första version av designspecen vara inlämnad till handledaren. 3 arbetsdagar efter inlämnad version ska handledaren ge återmatning. Godkänd designspec ger tillgång till Muxen

Designspec Designspec Checklista för designspec => Exempel på designspecar => +Fokus på hårdvaran +Pseudokod som bilaga +Upprepa *INTE* datablad Inlämningstid 5/11 kl 16:00 senast, ska en första version av designspecen vara inlämnad till handledaren. 3 arbetsdagar efter inlämnad version ska handledaren ge återmatning. Godkänd designspec ger tillgång till Muxen

Designspec Designspec Checklista för designspec => Exempel på designspecar => +Fokus på hårdvaran +Pseudokod som bilaga +Upprepa *INTE* datablad Inlämningstid 5/11 kl 16:00 senast, ska en första version av designspecen vara inlämnad till handledaren. 3 arbetsdagar efter inlämnad version ska handledaren ge återmatning. Godkänd designspec ger tillgång till Muxen

Designspec Designspec Checklista för designspec => Exempel på designspecar => +Fokus på hårdvaran +Pseudokod som bilaga +Upprepa *INTE* datablad Inlämningstid 5/11 kl 16:00 senast, ska en första version av designspecen vara inlämnad till handledaren. 3 arbetsdagar efter inlämnad version ska handledaren ge återmatning. Godkänd designspec ger tillgång till Muxen