LAB2: Skripta za povezivanje; ispitivanje koda (debugiranje)


Priprema koda "za učitavanje u ROM" i "izvođenje iz RAM-a"

Promijeniti skriptu za povezivanje ldscript.ld te dodati datoteku premjesti.c u direktorij boot tako da se sav sustav pripremi za učitavanje na adresu ROM=0x100000 (kao i sada), ali da ispravno radi tek kad se:
  • podaci iz odjeljaka .data* premjeste na adresu ADDR_DATA (postaviti ju u config.ini na npr. 0x200000)
  • podaci iz odjeljaka .bss* premjeste odmah iza .data*
  • stog postavi tako da mu je vrh na adresi 0x800000 (vrh=kraj, početak postaviti na manju adresu: 0x800000 - STACK_SIZE)
  • dodati polja p1[P1SIZE] i p2[P2SIZE] i postaviti ih na adrese P1ADDR i P2ADDR
    • sve konstante definirati u config.ini
    • način ostvarenja polje je proizvoljan - može i samo kroz skriptu, ili i kroz kod
    • dodati kod u neki program koji popunjava zadana polja s vrijednošću 0xab.

Pokazati da je navedeno napravljeno ispisom adresa odgovarajućih elemenata (npr. adresa neke funkcije, adresa globalne varijable, adresa lokalne varijable na stogu).

Ako odjeljak .eh_frame stvara probleme, odbaciti ga sa /DISCARD/ : { *(.eh_frame) }

Primjer prikazan na predavanju (prije par godina) lab2-demo.diff.

Ispitivanje koda, traženje grešaka

Upoznati se s ispitnim pokretanjem i traženjem grešaka korištenjem alata gdb. U datoteci Makefile već postoje pripremljeni predmeti prevođenja debug_qemu i debug_gdb.

Primjeri koda s greškama.