vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord knipperen
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 sluit een bordje aan (parallel + USB) installeer de files uit les7.rar in een lege directory let op: geen spaties in de pathname dubbel-klik op de.ppr file
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 flip.c #include "ark.h" void ARK_LEDs_write( int LEDs ); void ARK_wait_us( int N ); int main(){ while(1){ ARK_LEDs_write( 0x55 ); ARK_wait_us( 500 * 1000 ); ARK_LEDs_write( 0xAA ); ARK_wait_us( 500 * 1000 ); } return 0; }
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 PsPad editor met GNU tools voor ARM asm/C/C++ ontwikkeling
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 build start debugger
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 zet onder file > target settings: Target = Remote/TCP Hostname = Port = 8888 (als je netjes afsluit blijft zou dit moeten blijven staan)
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 run > download
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 continue
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 als het goed is kom je nu op het breakpoint aan het begin van main
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 continue Zoals het een embedded programma betaamt eindigt ons programma nooit. stop
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 Na een ‘stop’ zit je meestal ergens in assembler
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 kitt.c #include "ark.h" void show( int n ){ ARK_LEDs_write( 1 << n ); ARK_wait_us( 50 * 1000 ); } int main(){ int i; for(;;){ for( i = 0; i < 8; i++ ){ show( i ); } for( i = 6; i > 0; i-- ){ show( i ); } } return 0; }
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 Je kan breakpoints toevoegen of verwijderen (ook in andere source files)
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 Je kan variabelen (en andere lijsten) bekijken
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 18 Je kan regel voor regel het programma uitvoeren
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 19 Als je dit krijgt heb je debugger/loader niet afgesloten
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 20 Voor als het even echt niet meer werkt: als je de debugger hebt afgesloten moeten al die DOS schermen ook weg zijn (evt met de hand sluiten) De editor sluiten en weer opstarten de USB en Paralelle kabels er even uithalen om het bordje te resetten, USB eerst weer aansluiten, dan parallel. PC uitzetten en weer aanzetten
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 21 Opdracht : ”knipperen” – 1/2 Schrijf een functie void LED( int n, int x ); Die de LED op positie n uit (als x == 0 ) of aan (als x != 0 ) zet. Die functie gebruikt een globale variabele All_LEDs waarin de toestand van alle LEDs wordt bijgehouden. Die variable wordt bijgewerkt, daarna kan ARK_LEDs_write worden aangeroepen.
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 22 Opdracht : ”knipperen” – 2/2 Gebruik twee FSM’s om een LED op 1/2 Hz en een andere LED op 1/3 Hz te laten knipperen. Je main functie roept de beide FSMs aan, die roepen weer de LED functie aan. Het event dat de main aan de FSMs doorgeeft moet zijn “er is weer 100 ms voorbij”. De FSMs hebben alleen een teller nodig, dus niet echt een state. De initialisatie mag in de main gebeuren.