Emulator EM-11 Handledning 1999
2
Innehåll 1 Allmänt...5 2 Emulering...6 2.1 Beskrivning av emulatorn...6 2.1.1 Emulatorkortet...8 2.1.2 Emuleringskontakter...10 2.2 Anslutningar...12 3 Emulatorns funktion...13 3.1 Minnesarkitektur...13 3.2 Emulering av PORTB och PORTC...14 3.3 Automatisk start av användarprogram...16 4 Utveckling av konstruktioner i expanderad mod...17 5 Monitorprogram för IAR:s C-SPY...18 3
4
1 Allmänt EM-11 är ett utvecklingssystem för konstruktion med enkapseldatorn MC68HC11. Systemet är en vidareutveckling av Motorolas EVM-kort. Det består av en ICE (iin Circuit Emulator) med nödvändiga program för att testa den egna konstruktionen. I en emulator är alla provkörningar helt verklighetstrogna, vilket innebär att alla tester sker i full fart och med den egna kretskonstruktionen inkopplad. Förutom testning (eller sk avlusning) kan man även programmera in det färdiga programmet i flera typer av 68HC11. Då använder man monitorprogrammet Bug-11. Denna handledning beskriver hur emulatorn är uppbyggd. För en fullständig beskrivning hur emulatorn används, hänvisas till en separat handledningar, Bug-11, eller kapitel 5 som beskriver hur emulatorn kontrolleras av högnivådebuggern C-SPY. Vid konstruktionsarbetet bör man ha tillgång till någon av de manualer som finns för 68HC11. Den mest användbara är databoken 'MC68HC11 E SERIES, Technical Data' som innehåller all teknisk information man behöver. Behöver man djupare insikter eller utförliga beskrivningar av assemblyspråket, kan man använda 'M68HC11 REFERENCE MANUAL'. För den vane kan 'PROGRAMMING REFERENCE GUIDE' räcka; det är en liten bok i fickformat som innehåller allt väsentligt i kortfattad form. Den finns liksom databoken i en speciell upplaga för varje HC11-typ. EM-11 kan användas på 3 olika sätt: Med monitorprogrammet Bug-11 (se separat manual): EM-11 direkt. Med hjälp av endast terminal eller terminalemuleringsprogram kan emulatorn användas för fullständig programutveckling och testning. Dock blir editeringsmöjligheterna primitiva och begränsade till enklare assemblerprogram. HC11PDS är ett windowsprogram som innehåller editor, assembler och debugger. Det är speciellt gjort för att vara en inkörsport till datorteknik och konstruktion med enchipsdatorer. Med monitorprogrammet W21: C-SPY, högnivådebugger utvecklad av uppsalaföretaget IAR. Används för testning och felsökning när man också behöver programmera i C. Se kap. 5 Monitorprogram för IAR:s C-SPY. 5
2 Emulering 2.1 Beskrivning av emulatorn En emulator är en anordning som via en emuleringskabel exakt kan uppföra sig som en mikroprocessor eller annan avancerad krets i en konstruktion. Emulera betyder härma. Utan att ha den färdiga kretsen med dess program, ska man kunna manipulera med kretsens in- och utsignaler och laborera med programmet. Vidare ska det finnas stöd för mer eller mindre avancerad felsökning i konstruktion och program. Ett viktigt krav är att emulatorn ska uppföra sig helt verklighetstroget; dvs köra med full klockfrekvens och ge de rätta logiska nivåerna till kringkonstruktionen. I denna emulator, som emulerar 68HC11, utförs emuleringen av just en 68HC11. I emulatorn arbetar HC11:an med externa minnen och vissa andra komponenter. Därför måste den använda två portar (PORTB och PORTC) och två kontrollsignaler för att kunna använda extern data- och adressbuss. De förlorade portarna återskapas i en speciell emuleringskrets, TK68HC24, som har konstruerats speciellt för att uppföra sig som en HC11. Därmed kommer signalerna på emuleringskontakten att bete sig som en enchipsdator. Eftersom HC11:an kan användas med externa minnen, kan man egentligen använda den som en vanlig mikroprocessor, ovanligt rikt utrustad med inbyggda periferienheter. I sådana konstruktioner kan man emellertid inte emulera det externa minnet via emuleringskontakten, utan får göra sin utveckling i emulatorns minne. EM-11 emulerar följande HC11-varianter som enchipsdatorer: MC68HC11A1 MC68HC811E2 MC68HC11E1 MC68HC11E9 MC68HC711E9 MC68HC711E20 6
Alla typer som är kapslade i 48-pinnars tvårad, kan sättas direkt i emulatorn. Typer i 52-pinnars PLCC använder en adapter, med vilken man också kan programmera varianter med EPROM. Man bör utnyttja den unika möjligheten att emulera med just den HC11-typ man senare ska ha i sin konstruktion; dock ska man vara försiktig med att använda en dyr HC11 om man experimenterar mycket. Ett önskemål är att en emulator helt ska lämna alla kretsens funktioner ifred och inte heller inkräkta på kretsens egen minnesarea. EM-11 uppfyller detta önskemål med ett undantag: 9 byte av stackarean måste reserveras. Denna area används vid programbrytning för att kunna avläsa CPU:ns interna register. Denna inskränkning har sällan någon praktisk betydelse. FFFF F000 E000 Emuleringsminne Emuleringsminne D000 C000 B000 A000 9000 8000 7000 6000 5000 4000 3000 2000 1000 0000 I/O eller RAM Figur 1. Plan över emulatorns adressarea. Figuren ovan visar den del av den totala minnesarean som är tillgänglig för emulering. Som synes kan mer än 20 kbyte stora program emuleras och både I/O-arean och RAM-minnet kan ges alternativa basadresser. 7
2.1.1 Emulatorkortet + 5V GND Kontakt för seriekanal MAX233 R65C52 2864 Källkod AE-11 PAL16L8 Emuleringsminne MONITOR-program 68HC24 68HC11 Emuleringskontakt EMUL MODE +5 OUT EXT IRQ X-SELECT Figur 2: Plan över emulatorn EM-11 Figur 2 visar en schematisk bild av emulatorn. I den stora nollkraftsockeln ska en HC11 sitta. Använder man en 52-bens PLCC-kapsling (ex vis HC11E1), kan man använda en adapter och på så vis emulera även en sådan krets. Adaptern, kan även användas för programmering av EPROM-bestyckade HC11:or, såsom HC711E9. Kretsen 68HC24 är en emuleringskrets, som återskapar de portar, B och C, som i emulatorn tjänstgör som adress- och databuss. Tack vare denna krets kommer emuleringskontakten att se ut som en HC11 enchipsdator. 8
Kretsarna R65C52 och MAX 233 sköter kommunikationen med terminal eller arbetsstation. Vidare finns minneskretsar för systemprogram och arbetsminne (uppdelat i emuleringsminne och källkodsminne). Förr användes en inbyggd radeditor, AE-11, vars källkod kunde sparas i ett EEPROM. Två byglingskontakter är väsentliga för att emulatorn ska fungera: I emulatorns främre högra hörn ska en bygling sitta, X-SELECT, över de stift som är närmast kristallen. Då är den interna kristallen inkopplad. Sätter man byglingen i de två yttre stiften krävs ett målsystem med egen kristall för att allt ska fungera. Du använder detta läge för att testa att målsystemets kristall fungerar. En annan bygling, EMUL MODE, sitter i emulatorns vänstra främre hörn. Den måste sitta i när emulatorn används normalt. Se annars mer om den i kapitel 3.3. Alldeles innanför fronten sitter ytterligare två byglingar: +5V OUT ger en möjlighet att stänga av spänningsmatningen genom emuleringskabeln. Den är praktisk att ha i när man använder enkla laborationkort som inte kräver egen spänningsmatning. Vid mer omfattande målsystem, är det olämpligt att spänningsmata via den relativt klena emuleringskabeln. Speciellt bör ej emulatorn spänningsmatas genom denna. EXT XIRQ gör det möjligt att använda XIRQ på målsystemet. Eftersom detta är den enda signal som både målsystemet och emulatorn använder, kan det ibland finnas önskemål att bryta målsystemets inverkan på den. 9
2.1.2 Emuleringskontakter Emuleringskontakten ersätter HC11:an under utvecklingsarbetet. Målsystemet, den egna konstruktionen, ska fungera som om det satt en färdigprogrammerad HC11:a på kontaktens plats. Vissa signaler har dock en något begränsad funktion. Anledningen är att kunna säkerställa emulatorns funktion, även om målsystemet konstruerats felaktigt. Beroende på kapslingstyp, kan man välja mellan två olika emuleringskontakter. 48-pinnars DIL: *5 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PE0 PE1 PE2 PE3 V RL V RH V SS MODB V DD PD5 PD4 PD3 PD2 PD1 PD0 IRQ XIRQ RESET PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 XTAL EXTAL STRB E STRA *1 *2 *3 *4 *6 Figuren visar emuleringskontakten för HC11 i 48-pinnars tvåradskapsel. Vid emulering bör man lägga märke till följande: *1 Spänningsmatningen +5V bör helst ske separat. Emulatorns funktion kan ej garanteras om den strömförsörjs utifrån via emuleringskabeln. Å andra sidan kan enkla inkopplingar strömförsörjas från emulatorn. En bygling i emulatorn kan bryta förbindelsen. 10
*2 Signalen XIRQ kan kopplas ur om man ej behöver den på målsystemet. Se byglingen 'EXT XIRQ' under beskrivningen av emulatorkortet. *3 Resetsignalen i emuleringskabeln är enkelriktad: Reset kan inte fås att verka från målsystemet in till emulatorn; däremot släpps HC11:ans egen reset ut till målsystemet. *4 Med en bygling kan man välja mellan att driva HC11:an med intern eller extern kristall. Har man en speciell kristall på sitt målsystem så bör man tänka på att använda den. Funktioner som är relaterade till kristallfrekvensen blir annars helt felaktiga. *5 MODB-signalen bestämmer om HC11:ans 'bootstrap'-mode eller normala 'single chip'-mode ska emuleras. Det går naturligtvis att utveckla program också i bootstrap mode. *6 Signalen MODA är inte alls utdragen till emuleringskontakten. Med den väljer man ju om HC11:n ska arbeta i Single Chip eller Expanded Mode och processorn i emulatorn arbetar egentligen alltid i expanderad mode; medan den emulerar enchipsmod. På målsystemet ska alltid denna signal vara ansluten till GND. 52-pinnars PLCC: E7 E6 E5 E4 HC11-PLCC E3 E2 E1 E0 Emuleringskontakten för HC11 i 52-pinnarskapsel. Utöver de punkter som är uppräknade för 48-pinnarskontakten, gäller följande inskränkning: *7 Endast A/D-ingångarna E0 E3 finns utdragna i emuleringskabeln. Med byglingarna har man möjlighet att välja vilken uppsättning av A/Dingångar man vill använda. Det går alltså inte att använda E0 och E4 på samma gång. Var noga med att orientera kontakten rätt! 11
2.2 Anslutningar Spänningsmatning sker med +5 volt på emulatorns baksida. Strömförbrukningen är omkring 160 ma. Emulatorn är överströmsskyddad vilket hindrar större strömförbrukning än 700 ma. Detta skyddar emulatorn ifall felaktig spänning har använts eller en kortslutning har uppträtt på målsystemet. På baksidan finns också en kontakt för seriekommunikation med PC. Använder man HC11PDS eller C-SPY får man besked direkt efter start av debugprogrammet att kommunikationen är OK. Använder man enkel terminalkommunikation med Bug-11, får man direkt ett meddelande: Bug-11 v.6.6 HC811E2 Om så inte sker, trycker man på emulatorns resetknapp. Händer fortfarande inget kan det finnas en del förklaringar: Är seriekanalen rätt inställd? Är spänningen OK? (lyser lysdioden på framsidan?) Sitter HC11:an i? Är kristallbyglingen rätt isatt? (finns kristall?) Sitter byglingen EMUL MODE i? Normalt får man alltså ett meddelande som talar om att programmet Bug-11 är igång. Programmet Bug-11 beskrivs i en separat manual 12
3 Emulatorns funktion 3.1 Minnesarkitektur FFFF EMULERING FFFF UPPSTART F000 E000 Emuleringsminne F000 E000 2864 D000 D000 C000 B000 A000 Emuleringsminne C000 B000 A000 Systemprogram 9000 9000 8000 8000 7000 7000 6000 6000 5000 4000 Systemprogram 5000 4000 3000 3000 2000 2000 1000 1000 0000 0000 När man startar emulatorn, hämtas resetvektor på adress BFFE. Därför måste en bit av systemprogrammet finnas på dessa adresser. Att resetvektorn hämtas på denna adress, styrs av att man låter den starta i 'Special Test Mode' och detta bestäms av byglingen 'EMUL MODE'. Om denna bygling avlägsnas, sker start i normal mod, dvs resetvektor hämtas på adress FFFE. Då kan man använda ett externt minne eller minnet ombord på HC11:an för uppstart. Man låter då emulatorn exekvera det färdiga programmet från spänningspåslag. Se kapitel 3.3. 13
3.2 Emulering av PORTB och PORTC IRQ XIRQ RESET Interrupt Logic ROM 12 kbyte EXTAL XTAL E MODA MODB Periodic Interrupt Watchdog EEPROM 512 byte Clock Logic Mode Control Pulse Accumulator Output Compare OC1 Input Capture IC 1 2 3 4 5 4 1 2 3 RAM 512 byte CPU Address/Data Bus R/W AS Serial Peripheral Interface SPI Serial Communication Interface A/D Converter SCI DDRD PORTA A15 A8 A7 A0 / D7-D0 PORTD PORTE Strobe and Handshake Parallel I/O STRB STRA PORTB DDRC PORTC HC24 Emulatorn innehåller ju en mängd kretsar såsom minnen för programutveckling och andra kretsar som behövs för att den ska kunna kommunicera med terminal eller arbetsstation. HC11:an använder således yttre komponenter som måste kopplas in på adress- och databuss. 16 anslutningar som annars används som port B och C, fungerar som emulatorns interna adress- och databuss. Signalerna STRA och STRB används i emulatorn som adresstrob (AS) och läs/skrivsignal (R/W). För att kunna använda PORTB och PORTC även i konstruktioner där HC11:an måste använda yttre minnen, har Motorola konstruerat en speciell 14
emuleringskrets, 68HC24, som återskapar dessa portar och de register som har någon anknytning till dem. I emulatorns emuleringskabel är det HC24:an som genererar alla signaler som har med PORTB och PORTC att göra. Följande register är implementerade i 68HC24: PIOC PORTC PORTB PORTCL DDRC HPRIO: Enbart kontrollbitarna SMOD och IRV. INIT: De fyra lägsta bitarna REG3 - REG0 Det finns några marginella skillnader mellan HC24:s register och motsvarande i HC11: Eftersom HC24 ej har tillgång till kristallfrekvensen direkt, utan klockas av E-signalen från HC11, skiljer sig tidsspecifikationerna något för STRA och STRB. Normalt behöver man inte bry sig om detta. I en HC11 är registret INIT skrivskyddat efter 64 klockcykler; i HC24 skrivskyddas det först efter en skrivning. Den som vill veta mer om funktionen hos 68HC24, kan läsa i 'MC68HC24 PRU Technical Data' 15
3.3 Automatisk start av användarprogram Ett intressant sätt att använda emulatorn är att låta det egna programmet helt överta kontrollen från start. Detta sker med hjälp av byglingen 'EMUL MODE' som sitter i ena främre hörnet på emulatorkortet. Byglingens funktion är att välja om HC11:an ska starta i Special Test Mode eller Expanded Mode. Med byglingen avlägsnad, startar HC11:an i Expanded Mode. Maskinkod i HC11:an: Om man programmerar en HC11:a (HC811 eller HC711) och låter den sitta kvar i emulatorn, kan man få detta program att starta när man sätter igång emulatorn. Man måste då sätta bite EEON eller ROMON i CONFIG-registret. Programmering kan ske med kommandot PROG i Bug-11. Maskinkod i EEPROM: Låter man HC11:ans interna minne vara bortkopplat, läses resetvektor från område 3 i det externa EEPROMet. Med kommandot PUT (i Bug-11) kan man överföra maskinkoden hit från emuleringsminnet. På det här sättet får man emulatorn att helt efterlikna en HC11A8 med 8 kbyte programminne. 16
4 Utveckling av konstruktioner i expanderad mod IRQ XIRQ RESET Interrupt Logic ROM 12 kbyte EXTAL XTAL E MODA MODB Periodic Interrupt Watchdog EEPROM 512 byte Clock Logic Mode Control Pulse Accumulator Output Compare OC1 Input Capture IC 1 2 3 4 5 4 1 2 3 RAM 512 byte CPU Address/Data Bus R/W AS Serial Peripheral Interface SPI Serial Communication Interface A/D Converter SCI DDRD PORTA A15 A8 A7 A0 / D7-D0 PORTD PORTE 74HC573 CS A15 A8 A7 A0 D7 D0 WE OE Kopplingsförslag för externa minnen. Fastän EM-11 inte kan emulera HC11 i expanderad mod, kan man lätt utveckla program för att köras expanderat. Inkoppling görs då enligt figuren ovan. Från adressledningarna A15 och A14 kan en enkel avkodning göras, som placerar programminnet i området C000 - FFFF. Ett ev. skrivminne kan också avkodas direkt från en adressledning (t.ex. A15). Program som utvecklats i emulatorn kan lätt överföras till EEPROM med kommandot PUT. Därefter kan, om så önskas detta minne kopieras till ett EPROM med en vanlig programmeringsutrustning. Avancerade konstruktioner med externa minnen kräver annars en annan emulator. 17
5 Monitorprogram för IAR:s C-SPY EM-11 används med fördel tillsammans med IAR:s C-debugger, C-SPY. För att kunna kommunicera med C-SPY behövs ett speciellt monitorprogram, W21, ett EPROM (27256) som ersätter det normala monitorprogrammet Bug- 11. Några påpekanden när man använder EM-11 tillsammans med C-SPY: Om man använder andra typer än 68HC811E2 måste man se till att biten ROMON i CONFIG-registret är nollställd, annars kan det hända att man inte får kontakt med emulatorn. Rekommenderat värde i CONFIG är 0D. ROMON = 0 innebär att man har emuleringsminnet tillgängligt. I monitorversion W21d och senare, nollställs biten ROMON automatiskt vid uppstart. Från och med monitorversion W21e stöds användning av XIRQ. Dessutom nollställs bitarna BPRT3-0 i registret BPROT för att underlätta testningen av program som använder det inbyggda EEPROMet. Vi testkörning med hårdvarureset måste man dock se till att initieringen av detta register sker korrekt. 18