Analyse du logiciel

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ère valeurs du 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 de d'édition de liens soclib.ld précise l'organisation mémoire et défini quelques symboles comme par exemple l'adresse du tty virtuel (uart).

Remarque : Arrêt de la simulation à partir du code exécuté par le processeur

A 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");

Comment le logiciel est-il chargé dans la plateforme virtuelle:

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)

  • Liens utiles:
    • La documentation de référence du Lattice Mico32 (LM32) est accessible localement ici:

/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