Le logiciel qui sera exécuté par le LM32 se trouve dans le répertoire
soft.
Le fichier Makefile qui s’y trouve, décrit les
opérations nécessaires pour la construction de l’exécutable
soft.elf.
Le programme principal se trouve dans le fichier main.c.
Pour l’instant ce programme calcul, puis affiche, les 9 premières
valeurs de la suite de Fibonacci.
La compilation de la partie logicielle se fait pour une cible LM32. La chaîne de compilation comprend un compilateur C (gcc) et une bibliothèque C (la newlib) fonctionnelle.
Le script d’édition de liens, soclib.ld, précise
l’organisation mémoire et défini quelques symboles, par exemple,
l’adresse du tty virtuel (uart).
À la fin du programme la fonction exit est appelée. Dans
l’implémentation que nous vous fournissons, celle-ci fait appel à
l’instruction break du LM32 qui génère une exception (un
breakpoint logiciel).
Cette exception est interceptée par le module SystemC
Iss2Simhelper qui arrête la simulation en appelant
sc_stop().
Si vous voulez, vous aussi, arrêter la simulation dans le code C vous
pouvez soit appeler la fonction exit ou générer la même
exception en utilisant l’instruction break. Le code
assembleur suivant utilise la directive asm et peut être
inséré dans votre code C:
asm volatile("break");
Dans le fichier SystemC qui décrit le système, un module
loader est utilisé pour le chargement du logiciel dans la
RAM. Ce module prend comme argument de constructeur le chemin vers le
fichier ELF qui est utilisé.
Le chemin est relatif au répertoire d’où sera exécutée la simulation.
soclib::common::Loader loader("soft/soft.elf");Ce loader est ensuite passé en argument des instances de
mémoires qui seront ainsi automatiquement chargées en fonction des
sections du fichier ELF et du mapping mémoire.
soclib::caba::VciRom<vci_param> rom("rom", IntTab(0), maptab, loader);Le chargement se fait au moment de l’exécution de la simulation, on
peut donc modifier le code du logiciel sans recompiler la plateforme
virtuelle (ie. faire make dans le répertoire
soft)
/comelec/softs/opt/soclib/TPT/doc/LatticeMico32ProcessorReferenceManual.pdf
remarque: nous n’utilisons que le cœur du processeur, pas les périphériques fournis par Lattice