Bakgrunden till PIC-kursen IL131V

Slides:



Advertisements
Liknande presentationer
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Advertisements

Välkommen till sluta röka för gott! SLUTA RÖKA Dokumenterat hög effekt i kliniska tester DEMO.
Vi utvecklar människor. Människor utvecklar företag Utvärdering Säljutbildning Öppen utbildning Vt 2010 Utbildare: Johan Skogström Plats: Consensus Utvärderingen.
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
William Sandqvist Simulera med ModelSim ModelSim kan användas till att simulera VHDL-kod, för att avgöra om den är "rätt" tänkt. Man kan.
V ill Du handla Xocai Det finns 2 sätt att köpa Xocai Gå in på OM MIG och klicka på mail länken Skicka namn.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
William Sandqvist Störskydd William Sandqvist
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Persondatorer Datorns internminne (Kapitel 6)
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
Komplexa tal inför Laborationerna
PICKit2 programmer-to-go
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
SmartCard laborationen
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Komparatorn en 1 bits AD-omvandlare
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Kommunikation Först några nya PIC-instruktioner
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
i olika programmeringsspråk
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Internet Styrdatorer och kablar Uppkopplade användare Servrar 182.QRZN.
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
Att sälja Lions Quest-kurser till skolor /14.
Exder EPC. Exder EPC Välkommen! I det här bildspelet går vi igenom hur man lägger upp nya artiklar samt skickar artikelinformation. Du bläddrar framåt.
Rollfördelning i funktionärsbåset Vem gör vad i Danicahallen.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Modulär programutveckling
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Namnrum, räckvidd och rekursion Linda Mannila
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
William Sandqvist Lab 1 Några slides att repetera inför Lab 1 William Sandqvist
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Bakgrunden till PIC-kursen IL131V
Trådlösa Nätverk Caffe Latte Man-in-the-middle Denial of Service.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
William Sandqvist Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker.
William Sandqvist Polling och Interrupt Antag att Du sitter i en skön fåtölj och läser en bok. Plötsligt blir Du avbruten av att telefonen.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
Din rapport ? Beskriv din applikation.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
William Sandqvist Många spännande komponenter passar inte 2,54 mm modulen? Därför finns det ”Breakoutboard” som anpassning, för den som.
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
William Sandqvist DA-omvandling, oftast PWM.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Shannon dekomposition
KPP053, HT2015 MATLAB, Föreläsning 4
Course info.
Presentationens avskrift:

Bakgrunden till PIC-kursen IL131V Ingenjörskolan här i Kista införde en Mekatronikinriktning. = Mekanik och Elektronik (Datorteknik) i samverkan. Men tiden i den korta treåriga Maskinutbildningen räckte knappt till maskinämnena … Tilläggen av Elektronik och Datorteknik måste därför ske effektivt och fick inte använda för mycket tid. William Sandqvist william@kth.se

William Sandqvist william@kth.se Lösningen då blev … – En PIC-kurs som visar hur man ansluter de flesta vanliga givare och ställdon till PIC-processorn och som ”bjuder” på omfattande färdig exempelkod. Exempelkoden visar hur PIC-processorn kan användas, men utför aldrig något ”vettigt” – det överlåts till studenterna i projekten i stället. Ingenjörs-skolan i Kista är numera nedlagd, men tanken är att andra nu ska kunna dra nytta av samma ”exempelkod” för att förverkliga sina programmeringsönskningar … William Sandqvist william@kth.se

Idag en fristående kurs Utvecklingslabbet på köksbordet! William Sandqvist william@kth.se

William Sandqvist william@kth.se Distans eller på plats? Eftersom det finns många ”färdiga” exempelprogram kanske kursen kan läsas på distans (vid ditt eget köksbord)? KTH:s distansregler kräver närvaro vid två tillfällen. Till föreläsningar och laborationer varje vecka i skolan är distansstudenter välkomna ( men tvingas kanske avstå om det är långt att åka … ). Laborationerna i skolan är ett ”tidseffektivt” sätt att prova olika PIC-funktioner – men slitet hemma kan mycket väl ge djupare erfarenheter … Obligatorisk närvaro vid:  SmartCard-labben Presentationen ( Detta är förhandlingsbart – maila kursansvarig ) William Sandqvist william@kth.se

William Sandqvist william@kth.se Tid är hårdvaluta På distans gör man fler (i bästa fall nyttiga) misstag än vid de förberedda laborationerna i skolan. Det tar förståss tid. Kursen går på ”kvartsfart”, så den tiden finns kanske? Har man dåligt med tid så går det att läsa kursen över flera kursomgångar (under förutsättning att kursen fortsätter att ges). Kursen är inte en distanskurs på det sättet att det är styrt vad som skall göras vecka för vecka – däremot rekommenderas även distans-studenterna att följa kursprogrammets upplägg. Det är även möjligt att examineras på kursen genom att direkt presentera en egen applikation utan att gå mot målet ”steg för steg”. William Sandqvist william@kth.se

William Sandqvist william@kth.se Lab i skolan Så här fungerar kopplingsdäcket. Flacktången använder man till att pressa ned ledningsändarna i kopplingsdäcket med. Med isolerhylsor på komponentbenen bockas dom inte så lätt och så undviker man kortslutningar. Bygelsats, färdigbockat och med ”färgkodade” längder. William Sandqvist william@kth.se

William Sandqvist william@kth.se koppla så här … William Sandqvist william@kth.se

William Sandqvist william@kth.se Logga in på skoldatorn H:\  Åtminstone en av labdeltagarna i varje grupp måste ha ett KTH-konto för att kunna logga in på labdatorn.  Följ ”steg för steg” beskrivningen som ligger i Lablådan för att sätta upp miljön. Packa upp hela miljön i rätt mapp! PK2proj.zip William Sandqvist william@kth.se

Miljön består sedan bara av en genväg till en texteditor … William Sandqvist william@kth.se

Eller en genväg till en annan texteditor … William Sandqvist william@kth.se

William Sandqvist william@kth.se Texteditor Pfe Work arbetsmapp för dina filer William Sandqvist william@kth.se

eller Texteditor Notpad++ Work arbetsmapp för dina filer William Sandqvist william@kth.se

William Sandqvist william@kth.se Kompilator Cc5x  Kompilatorn startas inifrån texteditorn PFE. kommandonsom startar kompilatorn William Sandqvist william@kth.se

William Sandqvist william@kth.se Kompilator Cc5x  Eller kompilatorn startas inifrån texteditorn Notepad++. Ett script som startar kompilatorn William Sandqvist william@kth.se

Kretsprogrammeraren PICKit 2 Fristående program för Kretsprogrammeraren För nedladdning av kod till chip William Sandqvist william@kth.se

(Spela en testmelodi …)  Så vet Du att utrustningen är OK! William Sandqvist william@kth.se

SmartCard laborationen William Sandqvist william@kth.se

William Sandqvist william@kth.se Två processorer SmartCardet innehåller en processor av typen 16F84A. Den processorn saknar både inbyggd oscillator och seriekommunikationsenhet. Seriekommunikationen är därför programmerad med ”BitBanging”, och kortet använder en yttre oscillatorkrets. På kopplingsdäcket sitter en processor av typen 16F628. Den har inbyggd oscillator och inbyggd seriekommunika-tionsenhet. För säkerhets skull kopplar vi den till samma oscillatorkrets som SmartCardet. ( Vi har därför ändrat till #pragma config |= 0x3F63 ) William Sandqvist william@kth.se

Programmera SmartCardet Programmera SmartCardet med PICKit2 William Sandqvist william@kth.se

”Kommunikationscentral” På kopplingsdäcket bygger Du en ”kommunikationscentral” ( De två dioderna bildar en diodgrind ). För att underlätta felsökning i programmen kan nu all kommunikation mellan PIC-processorn och SmartCardprocessorn övervakas med PICKit2 UART Tool. Om kortet inte säger något, kan Du fylla i det den skulle ha sagt från PC:ns tangentbord (”man in the middle”). William Sandqvist william@kth.se

Kommunikationscentralen ”SmartCard” Lås och Nyckel William Sandqvist william@kth.se

Att programmera två processorer Du kommer att omväxlande använda PICKit2 för SmartCardet och Skolprocessorn 16F628. Viktigt. Varje gång Du byter anslutningen till den andra processorn skall Du använda ”Tools” ”Check Communication” så att PICKit2 vet vilken processor som är ansluten.  Det är jobbigt att omväxlande programmera två processorer!  ( Det är ändå jobbigare att programmera 64 processorer! ) FPGA-kort på avdelning ES. Totalt 64 st 32-bitsprocessorer. PUUH! William Sandqvist william@kth.se

William Sandqvist william@kth.se Quiet62x.c Först provar vi olika program på SmartCardet. Då ”stänger” vi av PIC16F628 på kopplingsdäcket med programmet quiet62x.c så att den processorn inte stör. /* quiet62x.c 16F628 serial port is off */ #include "16F628.h“ #pragma config |= 0x3f70 void main( void) { CM0 = 1; CM1 = 1; CM2 = 1; TRISA.5 = 1; TRISB.3 = 1; TRISB.6 = 1; TRISB.7 = 1; TRISB.2 = 0; PORTB.2 = 1; /* Marking line */ TRISB.1 = 1; while( 1) nop(); } William Sandqvist william@kth.se

 SmartCardet blinkar …  spelar melodi …  rätt eller fel …  minns utan spänning … William Sandqvist william@kth.se

William Sandqvist william@kth.se ”Lås” och ”nyckel” Programmen: smrtlock.hex och smartkey.hex När Du stoppar in SmartCardet i hållaren så frågar kopplingsdäcket: Who is it? SmartCardet svarar: Me please open! Och eftersom detta är rätt svar så öppnar processorn på kopplingsdäcket låset (= lysdioden tänds). När SmartCardet dras ut, stängs låset. William Sandqvist william@kth.se

William Sandqvist william@kth.se Program-mall Programmet till SmartCardet är givet, både källkod, och färdigkompilerad hex-kod. Programmet till processorn på kopplingsdäcket är givet som en hexkods-fil – för att Du ska kunna kontrollera din utrustning, men källkoden skriver Du själv. Till din hjälp för källkoden finns en ”steg för steg” – mall. ( I nödfall finns också en ”facit” källkodsfil så att ingen ska behöva gå lottlös från laborationen ). William Sandqvist william@kth.se

William Sandqvist william@kth.se Program-mall while(1) { /* Write code that waites here until card is inserted */ /* Card in = 1, Card out = 0 */ /* your code and your comment here */ /* Use this readymade card contact debounce time */ delay(100); /* card debounce */ /* now write the code that asks the card the question */ /* your code and your comment here */ /* Use this readymade delay after the question has been asked */ /* in order to wait until all chars are sent */ delay(100); /* wait until all chars sent */ /* Use this redymade function call to empty the reciever FIFO */ OverrunRecover(); /* Write the code that waits for the answer string */ /* from the card and inputs it to s[] buffer */ /* your code and your comment here */ /* Write code here that Compares the input string */ /* with the "correct" answer string */ /* your code lines and your comments here */ /* Write code here to unlock if the comparision of the strings match */ /* your code lines and your comments here */ /* Write code here to wait for card removal */ /* your code lines and your comments here */ . . . William Sandqvist william@kth.se

I Banken behövs krypterad kommunikation Kommunikationen mellan tex ett bankkort och en bankomat, är ”slump-mässigt” olika varje gång så att den inte bara kan avlyssnas och spelas in. Ett SmartCard innehåller ett extra minne för krypteringsnyckel och annan information. Det minnet kan bara nås via PIC-processorn, ej direkt från någon kontakt. I Bankkortet är PIC-processorn ”Lässkyddad” så även programmet är hemligt. William Sandqvist william@kth.se

En typisk C-Slumpfunktion /* random.c produces random numbers */ int random(void) { static unsigned long int next =1; /* the seed */ /* magic formula to generate pseudorandom number */ next = next * 1103515245 + 12345; return (unsigned int) (next/65536) % 32768; } Denna slumpfunktion skulle ta mycket stor plats i en midrange PIC-processor!  Det är med denna funktion kursens webfrågor slumpas ut! William Sandqvist william@kth.se

Hur en PIC-processor kan ”beräkna” pseudoslumptal PIC-processorn är dålig på multiplikation och division. Ett sätt att beräkna “pseudoslumptal” utan mul/div är att använda rotations-instruktionen. Tex. kan PIC-processorn rotera 16 bitar (28). I figuren sker "avtappning" från bit 0, 2, 3, och 5. De avtappade bitarna kombineras med EXOR operationer och roteras tillbaka genom Carry-biten. Just denna "avtappning" ger en maximalt lång talsekvens som upprepas först efter 65535 ggr. ( Om alla bitarna är “0” så stannar slumptalssekvensen, så det är den kombinationen som måste undvikas! ) William Sandqvist william@kth.se

William Sandqvist william@kth.se Ex. PIC-funktion /* Random number function */ char rand( void ) { /* 0x0000 won't run ... */ bit EXOR_out; static char rand_hi, rand_lo; if( !rand_hi && !rand_lo ) rand_lo = 0x01; EXOR_out = rand_lo.0; EXOR_out ^= rand_lo.2; EXOR_out ^= rand_lo.3; EXOR_out ^= rand_lo.5; Carry = EXOR_out; /* rotate right */ rand_hi = rr( rand_hi); rand_lo = rr( rand_lo); return rand_lo; } Linear feedback shift registers William Sandqvist william@kth.se

Så här ser de första 700 8-bitstalen ut … char rand( void ); 100 190 223 239 247 251 253 254 255 127 191 223 111 183 219 109 … William Sandqvist william@kth.se

Bankernas Chip and PIN -teknologi Vid ”ansikte mot ansikte” – transaktioner:  Chip – anger vilket/vems kort det är som används ( för att undvika förfalskade kort )  PIN – anger att det är kortägaren som använder kortet ( för att förhindra användning av stulna kort ) Wikipedia SmartCard William Sandqvist william@kth.se

Ett nyupptäckt säkerhetsproblem? ”Chip and PIN” is broken, 2010 IEEE Symposium on Security and Privacy. Steven Murdoch, Saar Drimer, Ross Anderson, Mike Bond Stulet kort (med ”manipulerad” kortkontakt). Ingen PIN-kod behövs! Chip and PIN broken William Sandqvist william@kth.se

En ”Man in the middle” attack I got no numbers? So ”verifying without PIN” I had ”PIN confirmed” Complete the transaction Enter PIN Transaction begins 1234 ”Man in the middle” PIN correct = 0x9000 Protokollet är för komplicerat. Kortet och kortläsaren kan tro olika om vilken verifieringsmetod som använts! Det är detta som utnyttjas! Standarden tillåter att verifieringen sker på annat sätt än med PIN – till exempel med legitimation och underskrift på kvittot eller utan PIN vid mindre belopp. Det finns också kort utan PIN (tex för personer med handikappet att inte kunna komma ihåg ett PIN) William Sandqvist william@kth.se

Transaktionsprotokoll Card authentication och Transaction authorization sker genom utväxlande av kryptogram, men vad hjälper det när Cardholder verification består av ett enkelt klartextmeddelande som går att manipulera! William Sandqvist william@kth.se

William Sandqvist william@kth.se Hur stort är problemet? Om ett köp signerats med en PIN-kod anser bankerna att Du är ansvarig för köpet. Dom anser att Du varit ”oaktsam” med koden om någon annan har utfört köpet.  Detta resonemang håller inte längre! Kommer bankerna att behöva betala ersättning? Problemet gäller butikernas handterminaler, inte bankomater – där är det banken som verifierar PIN-numret, inte kortet. Men kanske är det tillräckligt allvarligt att det gäller upp till 730 miljoner kort när de används i affärernas betalningsterminaler? William Sandqvist william@kth.se

Var köper man SmartCard? Ett svenskt företag i Mölndal som säljer oprogrammerade SmartCard för tex. elektroniska dörrlås med SmartCard (till hotell, stugbyar mm) är: Hansa-electronic SparkFun Breakout Board for SmartCard William Sandqvist william@kth.se