Hardware en ontwikkelomgeving voor 2TPRJ8
This presentation is the property of its rightful owner.
Sponsored Links
1 / 60

Wouter van Ooijen Mail: [email protected] Sheets en info: voti.nl/hvu/2TPRJ8 voti.nl/hvu/arm PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on
  • Presentation posted in: General

hardware en ontwikkelomgeving voor 2TPRJ8. Wouter van Ooijen Mail: [email protected] Sheets en info: www.voti.nl/hvu/2TPRJ8 www.voti.nl/hvu/arm. onderwerpen. het ARM bordje de fiets Virtual Machine - opstarten DevEnv – opstarten, editen, compileren debuggen met Insight

Download Presentation

Wouter van Ooijen Mail: [email protected] Sheets en info: voti.nl/hvu/2TPRJ8 voti.nl/hvu/arm

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

hardware en ontwikkelomgeving voor 2TPRJ8

Wouter van Ooijen

Mail: [email protected]

Sheets en info:

www.voti.nl/hvu/2TPRJ8

www.voti.nl/hvu/arm

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

onderwerpen

  • het ARM bordje

  • de fiets

  • Virtual Machine - opstarten

  • DevEnv – opstarten, editen, compileren

  • debuggen met Insight

  • downloaden met OCD Commander

  • het BSP

  • opdrachten

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

het ARM bordje

  • Philips ARM2106 microcontroller (64k RAM, 128k FLASH)

  • voeding uit USB (maar geen USB communicatie)

  • LCD 2x16 char (HD44780-compatible)

  • klein luidsprekertje

  • 16 schakelaars, uitlezen via 2 x HC165 schuifregisters

  • 8 LEDjes, aansturen via 1 x HC595 schuifregister

  • parallel JTAG programming interface (McGraigor Wiggler compatibel)

  • RS232 serial interface

  • connector voor uitbreidingen

    http://www.voti/nl/hvu/arm

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

LPC2106

(ARM chip)

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Uitlezen v.d. toetsjes

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Aansturen v.d. LEDjes

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

JTAG interface

RS232 interface

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

de fiets

  • snelheidsregeling voor een LEGO motortje

  • aansluiting van een hall (= magneet) sensor

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

de fiets

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

  • Log in (met je email en password)

  • ‘Start’ de Virtual Machine met het Artisan image

  • In de Virtual machine settings moet de paralelle poort meegenomen worden

  • Nu kan je de Virtual Machine echt starten

  • Als je een USB stick wil gebruiken dan moet je die nu pas inpluggen

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Virtual Machine

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

DevEnv

  • PSPAD editor

  • GNU assmbler/C/C++ compiler

  • Insight debugger

  • MAC_MOT TCP-to-parallel JTAG interface

    Los:

  • OCD Commander (Philips Flash utility)

  • C++ BSP/RTOS

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

DevEnv

  • installeer de files uit de BSP (BikeComputer.zip?)

    • in een lege directory

    • let op: geen spaties in de pathname 

  • dubbel-klik op de .ppr file

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

DevEnv

PsPad editor

met GNU tools

voor ARM

asm/C/C++

ontwikkeling

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

DevEnv

build

foutmeldingen

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

DevEnv

Als je dit krijgt bij het linken heb je debugger/loader niet afgesloten

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Jullie werken uitsluitend in RAM.

De microcontroller heeft 64Kb RAM, maar daar moet alles in: code, globale data, stack. Wees dus “een beetje” zunig.

Downloaden met de de JTAG debugger gaat niet erg snel. Zuinig zijn met code werkt dus sneller! Een klasse op zich kost geen code, maar (klasse) variabelen en (klasse) functies wel!

Downloaden met de OCD Commander gaat veel sneller, maar je kan dan nauelijks debuggen.

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

  • sluit het bordje aan (USB + parallel)

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Dit is de setting voor JTAG

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

  • start debugger

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

zet onder file > target settings:

  • Target = Remote/TCP

  • Hostname = 127.0.0.1

  • Port = 8888

    (als je netjes afsluit blijft zou dit moeten blijven staan)

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

run > download

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

continue

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

als het goed is kom je nu op het breakpoint aan het begin van main

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

Je kan breakpoints toevoegen of verwijderen

(ook in andere source files)

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

Je kan variabelen (en andere lijsten) bekijken

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

Je kan regel voor regel het programma uitvoeren

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

continue

Zoals het een embedded programma betaamt eindigt ons programma nooit.

stop

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

Insight debugger

Na een ‘stop’ zit je meestal ergens in assembler

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

start de OCD Commander

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

check

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

Load file

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

run

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

loader : OCD commander

Overnieuw:

 Halt

 Load file

 Go

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

MAC_MOT

Als je dit krijgt moet je dat ding installeren / starten.

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

MAC_MOT

Als je dit thuis krijgt kan je onder control panel > system > hardware > device manager (select view > show hidden devices) > non plug-and-pray devices > MAC_MOT > driver instellen op status = started, type = automatic

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

MAC_MOT

Als de thuis die MAC_MOT driver niet kan vinden: installeer de Macraigor OCD commander (de link staat op www.voti.nl/hvu/arm)

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

troubles...

Als het echt niet werkt: de USB aansluiting er even uithalen om het bordje te resetten, evt ook je PC resetten.

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_BSP {

public:

// get the one and only BSP:

static C_BSP * getInstance( void );

C_Busy * busy;

C_Interrupts * interrupts;

C_Timer0 * timer0;

C_Timer1 * timer1;

C_Pins * pins;

C_Beeper * beeper;

C_LEDs * leds;

C_Keyboard * keyboard;

C_LCD * lcd;

private: . . .

Chip

On-board peripherals

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_Busy {

public:

// wait n microseconds

void waitUs( int n );

// wait n milliseconds

void waitMs( int n );

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_Interrupts {

public:

// Check whether interrupts are currently enabled.

bool isEnabled( void );

// guards for an region of code that must run uninterruptable

// these calls work properly when nested

void unInterruptableBegin( void );

void unInterruptableEnd( void );

// check the current nesting of uninterruptable regions

// probably usefull for debugging

int unInterruptableCount( void );

private: ...

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_Timer {

public:

// abstract methodes:

virtual unsigned long getMillisec( void ) = 0;

virtual void registerCallback( void (* cb)( void ) ) = 0;

protected: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_Timer0 : public C_Timer { // C_Timer1 is similar

public:

// The registered function is called on each timer interrupt

// Registering another function overwrites the previous.

// N.B. The function cb() should not do any I/O write operations

// neither directly nor indirectly!

void registerCallback( void (* cb)( void ) );

// static member for the routines to call if the timer ticks

static void (* callback)( void );

// handler called when timer interrupt occurs

static void timerInterruptHandler0 (void);

// static member for the number of milliseconds

static unsigned long nrMillis;

inline unsigned long getMillisec( void ){ return nrMillis; }

// clock frequency

static const unsigned CLOCK_FREQ;

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

enum DirectionT {

DirectionInput,

DirectionOutput };

class C_Pins {

public:

// set the direction of a pin

void setDirection( unsigned char pin,

DirectionT direction );

// get and set pin value

// set is usefull when the pin direction is output

// get is usefull when the pin direction is input

bool get( unsigned char pin );

void set( unsigned char pin, bool value );

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_Beeper {

public:

// switch the Beeper on (== high)

void on( void );

// switch the Beeper off (== low)

void off( void );

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_LEDs {

public:

// set the LEDs according to the 8 bits in value

void setAll( unsigned char value );

// switch the LED nr on or off

void setOne( unsigned char nr, bool value );

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

enum KeyT {

Key0 = 6, Key1 = 15, Key2 = 14, Key3 = 13, Key4 = 12,

Key5 = 11, Key6 = 10, Key7 = 9, Key8 = 8, Key9 = 7,

KeyA = 3, KeyB = 2, KeyC = 1, KeyD = 0,

KeyStar = 5, KeySharp = 4,

KeyNone = 0xFF };

class C_Keyboard {

public:

// read the keyboard, return

// whether a key is pressed

// and if so which one

KeyT read( void );

// read the keyboard, to get

// the status of the given key

bool readKey ( KeyT key );

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

class C_LCD {

public:

// send a HD44780 command byte to the LCD

void command( unsigned char cmd );

// send a HD44780 data byte to the LCD

void data( unsigned char chr );

// put the write cursor at (row, col)

// row = line number, 0 = top line

// col = column, 0 = leftmost

void gotoRowCol( unsigned char row, unsigned char col );

// write a char at the write cursor position and

// advance the write cursor position

void write( char chr );

private: . . .

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Wouter van ooijen mail wouter voti nl sheets en info voti nl hvu 2tprj8 voti nl hvu arm

LET OP!

1. De ‘hogere’ I/O classes (LCD, Keyboard, LEDs, etc) mogen niet uit de interrupt (ge-schedulde timerticks) aangeroepen worden. Pinnen lezen en/of schrijven mag wel.

2. In de huidige versie van de opstart code en linker scripts worden de creators (initialisatie) van globale objecten niet aangeroepen! Gebruik dus locale objecten, evt. een globale pointer naar zo’n object (of references doorgeven).

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Opdrachten vrijwillig maar

Opdrachten – vrijwillig, maar…

  • Laat de LEDs knipperen: iedere seconde heel even (bv 200ms) aan.

  • Geluid: maak een korte piep (bv 1 seconde 1 kHz).

  • Zet ‘Hello world’ op het LCD scherm, en iets naar keuze op de tweede regel.

  • Laat op het LCD of de LEDs zien als toets 1 of toets 2 wordt ingedrukt.

Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


  • Login