200850. lajstromszámú szabadalom • Kapcsolási elrendezés egyprocesszoros in-circuit emulátorok kialakítására
HU 200850 B ténő írással), amely a CPU-val párhuzamosan működve kivárja a tényleges TARGET írási vagy olvasási utasítás elővételét a HOST memóriából, majd az utasítás végrehajtására átkapcsol TARGET módra, majd azonnal vissza. Kezelői parancs hatására vezérelni kell az emulátor HOST módból TARGET módba történő átkapcsolását a kezelő által előzetesen megadott CPU regiszter tartalom mellett. (Beleértve természetesen a TARGET program indulási címét is.) Ennek egy ismert lehetséges megvalósítási módja az, hogy a CPU regiszterek kópiái el vannak tárolva a HOST memóriában és a kezeld csak ezeket módosítja majd a TARGET program indítási parancs kiadásakor induló átkapcsoló program betölti a kópiákat a CPU regiszterekbe és indítja a vezérlőt, majd végrehajt egy ugrást a TARGET program indulási címére. A vezérlő az indítása után kivárja az ugró utasítás elővételét a HOST memóriából, majd annak végrehajtása után átkapcsol TARGET módra, így a következő utasítás elővétele után már a TARGET-bői történik. A vezérlő mindaddig TARGET módban tartja a rendszert, amíg egy töréspont be nem következik. Ekkor vezérelnie kell a TARGET módból HOST módba történd visszakapcsolást oly módon, hogy a CPU regiszterek a töréspont bekövetkezése alatti állapotukban a kezelő rendelkezésére álljanak. A TARGET módból HOST módba történő visszakapcsolás azonban már nem olyan egyértelmű feladat, mint az előzőekben ismertetettek. Az egyszerűbb 8 bites processzoroknál elteijedt megoldás, hogy a töréspont bekövetkezésekor magas prioritású vagy nem maszkolható megszakítást kér a vezérlő, aminek hatására egy fix címről történő szubrutin hívást hajt végre a processzor. A fix címre történő ugrással egyidejűleg a vezérlő átkapcsol HOST módra, így a visszakapcsoló program a HOST memóriának mindig ugyanarról a helyéről indul, amely elmenti a CPU regisztereket a kópiába, majd bejelentkezik a kezelőnek. Ez a megoldás azonban nehézkes ha nincs a processzornak olyan nagy prioritású lehetőleg nem maszkolható interrupt bemenete, amelynek hatására fix címről történő szubrutin hívást hajt végre. Még rosszabb a helyzet olyan bonyolultabb 8 bites vagy 16 bites processzorok esetén, amikor az utasítás beolvasó és a végrehajtó rész közé—a gyorsabb működés érdekében — egy néhány bájtos/szavas FIFO tárat építettek. Ekkor egy utasítás beolvasása még nem jelenti annak végrehajtását is, mert pl. ha előtte egy ugró utasítás volt a FIFO-ban, annak végrehajtása után a FIFO-ban lévő további utasításokat eldobja a processzor. Szerencsétlen esetben szinte az egész FIFO kezelő mechanizmust be kellene építeni a vezérlőbe, hogy eldönthető legyen mikor kérje a megszakítást. A fenti elemek és működések megfigyelhetők a már említett DT-80 mikroprocesszoros fejlesztőterminálban. Összefoglalva tehát a jelenlegi ismert egyprocesszoros emulátorok hátrányai, hogy- nem minden processzortípusnál alkalmazható a TARGET—HOST átkapcsolás vezérlésére egy 3 nagyprioritású megszakítás,- nem megoldott az utasítás FIFO-val rendelkező processzoroknál a TARGET—HOST átkapcsolás vezérlése. A fenti problémákat küszöböli ki az általunk kidolgozott megoldás, amelynek lényege, hogy tartalmaz egy új, úgynevezett utasítás rákényszerítő egységet, amelyet a vezérlő töréspont bekövetkezésekor engedélyez. Az utasítás rákényszerítő egység működése alatt a vezérlő tiltja mind a HOST, mind a TARGET rendszert. Az utasítás rákényszerítő egységet célszerűen egy egybájtos, illetve egyszavas szubrutinhívást kényszerít az adatbuszra az éppen elővétel alatt álló, vagy a következő utasítás helyett, és így teszi lehetővé, hogy a visszakapcsolás után induló HOST proram egy előre meghatározható címről induljon. A megoldáshoz tartozik egy úgynevezett utasítás végrehajtás figyelő egység is, amely figyeli a rákényszerített utasítás végrehajtásának megkezdését és ezt jelzi is a vezérlőnek, amely nem a rákényszerítéskor, hanem csak ezen jelzéskor kapcsol a HOST módra, és így biztosítja az utasítás FIFO-val rendelkező processzoroknál is a TARGET—HOST visszakapcsolást. Amennyiben a CPU nem tartalmaz FIFO egységet az utasítás végrehajtás megkezdésének figyelése elmaradhat, mert a rákényszerített utasítás biztosan végrehajtódik kivéve azt az esetet, amikor a CPU megszakítási rendszere olyan, hogy a törésponti ciklusban bekövetkezett megszakítás hatására a következő utasítást ugyan beolvassa, de aztán figyelmen kívül hagyja. Az utasítás újbóli rákényszerítésével azonban ez a probléma is áthidalható. Az általunk bemutatott megoldás további előnye, hogy felismertük, hogy bizonyos korlátokon belül az egyprocesszoros in-circuit emulátorok is felbonthatók az emulált processzor típusától függő és attól független részekre. így kialakítható egy központi emulátor vezérlő egység, amely csak a közös, és egy másik a TARGET rendszerhez kapcsolódó egység, amely csak a processzorspecifikus elemeket tartalmazza. így a processzorspecifikus rész cseréjével, a központi emulátor vezérlő egység más processzortípus emulálására is alkalmassá válik. A központi emulátor vezérlő egység vezérlőjét célszerűen mikroprogramozott vezérlővel felépítve, az eltérő processzortípusok esetén csak a mikroprogram tár tartalmát kell kicserélni Ezen mikroprogramozott vezérlő órajele célszerűen minden gépi ciklus eleje, vagy egy utasítás elővétel első ciklusának és a rákövetkező ciklusnak az eleje. Az előző részben ismertetett egységekkel felépíthető egyprocesszoros in-circuit emulátor kapcsolási elrendezése az 1. ábrán látható. A kapcsolási elrendezés tartalmaz a rendszer buszra kapcsolódó 1 CPU-t, 2 HOST cím és utasításdekódert, 3 HOST memóriát, 4 emulációs memóriát, 5 dm minősítő egységet, 6 vezérlőt, 7 törésponti egységet, 8 nyomkövető tárat, 9 buszkapcsoló egységet, 10 utasítás rákényszerítő egységet, 11 utasítás végrehajtás figyelő egységet. Az 1 CPU az ín circuit emulátor egyetlen processzora, amely vagy HOST, vagy pedig TARGET 4 5 10 15 20 25 30 35 40 45 50 55 60 65