EVBplus2 68HC11 bord voor projecten.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de THRijswijk.

De THRijswijk is in het bezit van een (flink) aantal EVBplus2 68HC11 ontwikkelborden. Deze borden worden ingezet bij diverse projecten (onder andere het Wheatstone Bridge project in P2 en het Hotel project in H1. Als je z'n bord wilt gebruiken voor een project in H3 of H4 dan kun je z'n bord bij mij (Harry Broeders, kamer 411) krijgen.

Op deze pagina vind je de belangrijkste verschillen tussen de EVBplus2 en de EVM die we bij de micocontroller practica gebruiken. De belangrijkste verschillen:

Microcontroller.

De EVBplus2 gebruikt een 68HC11E microcontroller. Er zijn maar weinig verschillen met de in de EVM kast gebruikte 68HC11A microcontroller. Het belangrijkste verschil is de pin PA3. Dit is een output pin bij de 68HC11A microcontroller maar een bi-directionele pin bij de 68HC11E microcontroller.

Geheugenindeling.

Het EVBPlus2 bord heeft de volgende geheugenindeling (memory map):

adressen functie toelichting
$0000-$01FF On-chip 512 byte RAM (U12) Maar pas op! $002D-$00FF worden gebruikt door het BUFFALO monitor programma. Dit programma start als het bord wordt gereset met jumper J15 in de middelste positie (gemarkeerd met BUFFALO) en is nodig om te kunnen debuggen met THRSim11.
$1000-$103F On-chip I/O registers (U12 en U6) De 68HC11E1 (U12) wordt gebruikt in de external mode. Dit wil zeggen dat de poorten B en C gebruikt worden als adres/data bus om de externe geheugens aan te spreken. De 68HC24 (U6) port replacement unit zorgen ervoor dat een "nieuwe" B en C poort ontstaat. De combinatie van de 68HC11E1 met de 68HC24 gedraagt zich dus als een 68HC11E in single chip mode met extra (schijnbaar On-chip) geheugen.
$2200-$220F 65C22 VIA (U1) Deze chip zorgt voor 16 extra I/O lijnen en bevat ook 2 extra 16 bits timers/counters. Dit device wordt later uitgebreid besproken. Let op: Doordat niet alle adreslijnen in de adresdecoder voor dit device zijn gebruikt, vind je "schaduwen" van deze registers op de adressen: $2210-$23FF.
$2400-$2401 68B50 UART (U5) Deze chip zorgt voor een extra seriële poort. Dit device wordt later uitgebreid besproken. Let op: Doordat niet alle adreslijnen in de adresdecoder voor dit device zijn gebruikt, vind je "schaduwen" van deze registers op de adressen: $2402-$25FF.
$4000-$7FFF 16K EEPROM (U3) Dit geheugen kun je gebruiken in je programma om data op te slaan die behouden moet blijven als de spanning wegvalt. Je kunt ook je programma in dit geheugen opslaan en "automatisch" laten opstarten als het bord wordt gereset met jumper J15 in de onderste positie (gemarkeerd met U3). Dit wordt later nog uitgebreid besproken.
$8000-$DFFF RAM (U4) Deze chip kun je gebruiken voor de opslag van je programma (en eventueel voor data).
$E000-$FFFF OTPROM (U2) Deze chip bevat de BUFFALO monitor firmware (U2). Dit programma start als het bord wordt gereset met jumper J15 in de middelste positie (gemarkeerd met BUFFALO) en is nodig om te kunnen debuggen met THRSim11.

Voeding.

Om de EVBPlus2 te gebruiken is een 9V adapter nodig.

Debuggen met behulp van de THRSim11 simulator.

Je kunt een programma in het EVBplus2 bord laden met behulp van THRSim11. Het is ook mogelijk een programma op het bord te debuggen (breakpoints zetten, registers en geheugen bekijken, single steppen enz.). Let op: jumper J15 moet op de stand BUFFALO staan, jumper J9 moet op de stand RUN staan en jumper J22 moet in de stand TRACE staan.

Om programma's voor de EVBplus2 met behulp van THRSim11 te kunnen simuleren moet het geheugenindeling van de simulator worden aangepast.

  1. Start THRSim11.
  2. Kies de menu optie File, Options, Memory Configuration...
  3. Configureer het geheugen als volgt:

Toelichting:

Je kunt nu een eenvoudig assemblertaal programma voor het EVBplus2 bord schrijven. Bijvoorbeeld (vb1.asm):

portb	equ	$1004
portc	equ	$1003

	org	$8000
start	lds	#$01ff
again	ldaa	$1003	read switches
	staa	$1004	write leds
	bra	again

Dit programma kun je eenvoudig testen op de simulator met behulp van de I/O box. Als je dit programma op het EVBplus2 bord wilt testen dan moet je de seriële poort P2 van het bord (rechts boven) verbinden met een COM poort van de PC. Als het goed is, is een seriële kabel bij het bord aanwezig. In THRSim11 moet je de communicatie opties via het menu Target, Target Communications Options... als volgt instellen:

Je kunt nu het programma in het EVBplus2 bord downloaden. Bijvoorbeeld via de sneltoets Ctrl+D. Via de spatiebalk kun je het programma instructie voor instructie op het bord uitvoeren. Met de sneltoets Ctrl+F9 kun je het programma op het target bord starten. De enige manier om het programma daarna te stoppen is via de reset switch (SW2). Als de PC0 en PC1 dip switches naar boven staan (en de LED's PB0 en PB1 branden) kun je PC0 of PC1 laag maken door de drukknop PC0 (SW4) respectievelijk PC1 (SW3) in te drukken.

Je kunt het EVBplus2 bord ook in C/C++ programmeren met behulp van de GNU gcc compiler. Deze compiler is opgenomen in de volledige installatie van THRSim11. Meer informatie over het debuggen van een C programma met behulp van THRSim11 kun je vinden op: http://bd.eduweb.hhs.nl/thrsim11/hllsupport.htm.

Het bovenstaande voorbeeld kun je in C als volgt implementeren (vb1.c):

int main() {
	volatile char* portb=(volatile char*)0x1004;
	volatile char* portc=(volatile char*)0x1003;
	while(1) {
		*portb = *portc; /* copy switches to leds */
	}
	return 0;
}

Om dit programma te kunnen compileren is een link script nodig waarin je de linker van gcc (onder andere) vertelt hoe de geheugenindeling van de target is. Je kunt hiervoor de file evbplus2.ld gebruiken. De geheugenindeling is hierin als volgt gespecificeerd:

MEMORY
{
  ram    (rwx) : ORIGIN = 0x0000, LENGTH = 0x0200
  rom    (rx)  : ORIGIN = 0x8000, LENGTH = 0x6000
}
PROVIDE (_stack = 0x01ff);

Toelichting:

Om het programma eenvoudig te kunnen compileren kun je de volgende makefile gebruiken. Als je wilt weten hoe dit werkt dan kun je de handleiding voor het programma make vinden op http://www.gnu.org/software/make/manual/html_node/make_toc.html.

Je kunt het bovenstaande C programma nu als volgt op het EVBplus2 bord testen:

  1. Maak een nieuw directory aan en kopieer de files: vb1.c, evbplus2.ld en makefile in dit directory. Let op: Internet Explorer zet de extensie .txt achter de makefile. Deze extensie moet je verwijderen.
  2. Laad het programma vb1.c in THRSim11. Als het goed is wordt nu de editor SciTe automatisch geopend.
  3. Compileer het programma en laad het resultaat met behulp van de sneltoets F5.
  4. Je kunt het programma nu testen op de simulator met behulp van de I/O box.
  5. Je kunt nu het programma in het EVBplus2 bord downloaden door het List Window te selecteren en de sneltoets Ctrl+D te gebruiken. Je kunt onder andere ook de CPU registers en de C variabelen op het target board zichtbaar maken.

Documentatie:

TODO:

Voorbeeldprogramma's.

De volgende voorbeeldprogramma's worden meegeleverd met het EVBplus2 bord: