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 olva­sá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 emu­látor HOST módból TARGET módba történő át­kapcsolá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 TAR­GET-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értel­mű feladat, mint az előzőekben ismertetettek. Az egyszerűbb 8 bites processzoroknál elteijedt meg­oldá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 kel­lene é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 egypro­cesszoros 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 rendelke­ző processzoroknál a TARGET—HOST átkap­csolás vezérlése. A fenti problémákat küszöböli ki az általunk kidolgozott megoldás, amelynek lényege, hogy tar­talmaz 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ény­­szerí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 rendel­kező 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 biz­tosan végrehajtódik kivéve azt az esetet, amikor a CPU megszakítási rendszere olyan, hogy a törés­ponti 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ény­­szerí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 kap­csoló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ít­ve, az eltérő processzortípusok esetén csak a mik­­roprogram tár tartalmát kell kicserélni Ezen mik­roprogramozott 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 kap­csolá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 me­móriát, 5 dm minősítő egységet, 6 vezérlőt, 7 törés­ponti egységet, 8 nyomkövető tárat, 9 buszkapcsoló egységet, 10 utasítás rákényszerítő egységet, 11 uta­sítás végrehajtás figyelő egységet. Az 1 CPU az ín circuit emulátor egyetlen pro­­cesszora, amely vagy HOST, vagy pedig TARGET 4 5 10 15 20 25 30 35 40 45 50 55 60 65

Next

/
Oldalképek
Tartalom