<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
11.6.5. Összefűzési folyamat
Az MPLINK fájl összefűző program a bemeneti objektum fájlokból egyetlen végrehajtható kimeneti hexadecimális adatfájlt hoz létre.
Az objektum fájlok egyaránt tartalmazhatnak abszolút memóriacímeket, valamint az összefűzés során kiosztásra kerülő áthelyezhető memóriacímeket. Ezek, természetesen, adat- vagy programmemória-címek lehetnek. Az áthelyezhető címek értékadását az MPLINK program végzi el az összefűzés vezérlő fájl memóriadeklarációja alapján.
Első lépésként valósul meg a bemeneti objektum fájlokban levő összes szekció memóriában való elhelyezése. Majd ezt követően történik meg a szekciókon belüli cím áthelyezés és értékadás.
A második lépésben valósul meg az egyes bemenő szekciókban definiált külső címkék valós címének meghatározása és ezen címek behelyettesítése a programkódban elfoglalt helyekre.
Az összefűzési folyamat utolsó lépéseként jön létre a végrehajtható kimenő fájl.
Szekció elhelyező algoritmus
Az elhelyezendő szekciók négy típusa:
ˇ
abszolút, társított (előre meghatározott kezdőcímre kerülő, az összefűzés vezérlő fájlban memóriaterülethez társított);
ˇ
abszolút, társítás nélkül;
ˇ
áthelyezhető, társított;
ˇ
áthelyezhető, társítás nélkül.
Az abszolút szekciók az összefűzés vezérlő fájlban társíthatók egy bizonyos memóriaterülethez. Mivel az abszolút szekciók előre megadott, konkrét címeket tartalmaznak, az elhelyezés során az MPLINK csak bizonyos ellenőrzéseket hajt végre. Azt, hogy a társított memóriaterület elegendő nagyságú e a kívánt szekció elhelyezéséhez, valamint, hogy nincs-e átfedés más szekciókkal.
Ha egy abszolút szekcióhoz nincs társítva memóriaterület, az MPLINK automatikusan a kezdőcímnek megfelelő területre próbálja elhelyezni azt. Ha ez sikertelen, hibaüzenetet küld. Mivel az abszolút szekciók csak az előre megadott memóriacímre kerülhetnek, elhelyezésük, a társítástól függetlenül egyértelmű feladat.
Ha minden abszolút szekció elhelyezésre került, az MPLINK megkezdi az áthelyezhető szekciók elhelyezését. Adott memóriaterülethez társított, áthelyezhető szekciók esetében az egyes szekciók az összefűzés vezérlő fájlban elhelyezett társítások sorrendjében kerülnek elhelyezésre. Az MPLINK ellenőrzi, hogy a megadott memóriaterület elegendő-e ehhez.
Végül az áthelyezhető, társítás nélküli szekciók kiosztására kerül sor. Az MPLINK a legnagyobb méretű szekció elhelyezésével kezd, és nagyság szerinti sorrendben megpróbálja elhelyezni az összes társítás nélküli, áthelyezhető szekciót. Az MPLINK minden egyes szekciót először a legkisebb szabad helyre próbál elhelyezni, így maximális az esélye annak, hogy a maradék memóriaterületen minden fennmaradt szekciót sikerül elhelyezni.
A szoftver-verem elhelyezése a közepes teljesítményű, 14-bites programmemóriájú PIC mikrovezérlők esetében nem lehetséges.
Cím meghatározás
A hordozható objektum fájlok készítésekor a fordító program készít egy szimbólum (címke, azonosító) táblázatot, amelyben minden felhasznált szimbólum szerepel. Példaképpen ennek egy (,az ADAT1 szimbólumhoz tartozó) sora:
Symbol[index] => name=ADAT1, value=0, section=.data, class=extern
Amikor a fordító program a forráslista valamely pontján észleli az adott szimbólum jelenlétét, létrehoz egy hivatkozási bejegyzést az objektum fájlban:
Reloc[index] => address=[cím] symbol=ADAT1 type=bank
Miután az MPLINK minden szekciót elhelyezett a memóriákban, a szekciók kezdőcíme ismertté válik. A kezdőcím alapján minden szimbólum értéke számítható. Az MPLINK az összes szekció szimbólum táblázatát felfrissíti a számított értékekkel:
Symbol[index] => name=ADAT1, value=[új érték], section=.data, class=extern
Majd módosulnak a hivatkozási bejegyzések címértékei:
Reloc[index] => address=[új cím] symbol=ADAT1 type=bank
Végül az MPLINK a hivatkozási bejegyzések alapján a szimbólum összes előfordulási helyén behelyettesíti a szimbólumnak megfelelő értéket (value=[új érték]).
Kezdőértékek kezelése
A hordozható objektum fájlok készítésekor a definiált változók kezdőértékkel is elláthatóak. A kezdőértékek adatmemóriába töltésének programsorait az MPLINK automatikusan elkészíti, vagyis beilleszti a végrehajtható kimenő fájlba.
Az MPLINK létrehoz egy .cinit program szekciót, amely egy táblázatot tartalmaz az értékadásos adatszekciók adataival; az értékadó utasításokat tartalmazó programrész kezdőcímével, a kezdőértékkel ellátott változókat tároló adatmemória-terület kezdőcímével és az adatbájtok számával. Az MPLINK által beillesztett indító kódrész a táblázat alapján tölti be a kezdőértékeket a programmemóriából az adatmemóriába.
A kimeneti fájlok elkészítése
Az összefűzési folyamat során az MPLINK.EXE program készíti el az MPLINK segédfájlt, amelynek neve választhatóan *.out vagy *.cof formátumú.
Az MPLINK segédfájlból az MP2COD.EXE program készíti el az MPLAB segédfájlt és a fordítási lista fájlt.
Az MP2HEX.EXE program készíti el a választott típusú hexadecimális kimenő adatfájlt.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>