Vous êtes sur la page 1sur 8

Master EEA parcours électronique

Compte rendu des travaux pratiques


Architecture des systèmes

Réalisé par : Encadré par :


LAHBIL Walid M. El-Bay BOURENNANE
Introduction :
L’objectif de ce TP est de réaliser une architecture embarquée sur un processeur RISC
1200, d’où on va travailler dans le système d’exploitation GNU, ainsi découvrir la plate-forme
de simulation appelée or1ksim, la première partie du TP sert à écrire et compiler les
programmes d’applications dédiés à la plate-forme or1k, la deuxième partie c’est pour la
simulation des programmes développés avec le simulateur or1ksim.

I. Initiation au processeur RISC1200


1. Connexion au serveur Eros4
Pour se connecter au serveur Eros4 j’ai taper la commande suivante :
ssh –X eros4.u-bourgogne.fr –l infotronique3

2. OpenRISC 1200 RISC/DSP Core

Caractéristiques :

• 250 MHz dans le pire des cas 0,18u 6LM


• Performances de 250 MIPS à 250 MHz dans les pires conditions
• Taux d'exécution prévisible pour des applications a temps réel dure.
• Interruption interne rapide et déterministe réponse
• Registres à usage général 32 bits DSP MAC 32x32
• Instructions utilisateur personnalisées

2
3. UART

Une liaison série consiste à envoyer une information bit après bit avec un délai entre
chacun. Le bus Universal Asynchronous Receiver Transmitter (UART) est une implémentation
de ce principe.
La communication via l’UART se fait par l’envoi d’une trame c’est-à-dire un paquet de bits
que l’on ne peut pas subdiviser. Le protocole RS232 définit une trame comme étant
constituée de :

• un bit de démarrage (start bit) dont le niveau logique est zéro,


• entre 7 et 8 bits de données,
• éventuellement un bit de parité paire ou impaire (parity),
• et un ou deux bits de stop avec un niveau logique de zéro (stop bits).

4. Le simulateur Or1ksim

Or1ksim, le simulateur d'architecture OpenRISC, est la référence en or pour


L’architecture OpenRISC 1000. Initialement écrit en C, il propose désormais également
unInterface SystemC TLM 2.0. C'est un simulateur de jeu d'instructions d'interprétation
traditionnel (ISS), qui s'exécute généralement à 2-5 MIPS sur un poste de travail moderne. Il
est licencié sous la licence publique générale GNU (GPL).

3
L’affectation d’adressage physique de l’ensemble des éléments de la plateforme se
trouve dans un fichier nommé Board.h, ou on va définir les paramètres comme l’horloge a
25Mhz, et la taille des blocks et leurs adresses.

II. Création d’un premier programme « C »


Le but de cette partie est d’écrire un programme en langage C afin de savoir comment le
simuler en utilisant le simulateur Or1ksim, et de générer les fichiers de compilations et
implémenter les bibliothèques afin d‘obtenir un exécutable adapté au processeur RISC.
Remarque :
Malheureusement je n’ai pas pu accéder au serveur eros4 afin de prendre des captures
sur ce que j’ai réaliser dans cette partie, comme vous voyez dans la photo ci-dessus :

Donc je vais essayer de rédiger ce que j’ai fait pendant les séances de TP.
Les étapes de simulation du programme :
La première étape est de créer un éditeur de texte, pour cela j’ai utilisé l’éditeur vi.
Pour lancer l’éditeur j’ai utilisé la commande : $ vi Hello.c
Dans l’éditeur j’ai tapé le code suivant :

4
En effet ce programme permet d’envoyer la chaine de caractères ‘’Hello InFotronique’’,
en utilisant la communication série, les deux fonctions utilisés sont uart_init() pour initialiser
la communication série, la deuxième est uart_putc() pour envoyer les caractères de la
chaine, sans oublier de déclarer cette dernière avec un pointeur pour la stocker avec une
adresse.

Graphe de dépendance :

Ce graphe montre la relation entre les différents fichiers que je vais les créés afin
d’obtenir le fichier exécutable hello.or32
Le premier programme que j’ai créé est reset.S qui permet d’initialiser le pointeur de pile
et de se brancher à la partie principale du programme.
Le programme est comme suit :

5
Pour le compiler j’ai tapé la commande suivante :

Ensuite j’ai compilé les fichiers uart.c et uart.h, afin d’utiliser le driver de l’uart, pour
cela j’ai tapé la commande suivante :

Puis il reste de compiler le programme principale qui est hello.c par la commande suivante :

Maintenant il reste de faire le lien entre les 3 fichiers compilés (reset.o, uart.o et hello.o),
pour cela j’ai tapé la commande suivante :

Au final j’ai obtenu un exécutable qui est hello.or32, pour le visualiser et l’analyser j’ai
tapé la commande suivante :

Le résultat de la commande affiche l’exécutable du fichier hello.or32 :

Comme vous voyez dans la figure ci-dessus l’affichage des diffèrentes sections :
La section (.text) contient les instructions.
La section (.data) contient les variables globales et locales initialisées.
La section (.bss) contient l’ensemble des variables non initialisées.

6
La section (.rodata) contient les données non altérables comme les constantes, les chaînes
de caractères.
La section (.stack) est dédiée pour la pile.

III. Lancement du simulateur Or1ksim

1. Fichier de configuration de la plate-forme or1k

Avant de lancer la plateforme or1k, il faut ajouter les paramétrages de certains


périphériques, pour cela j’ai ajouté un fichier nommé sim.cfg qui dispose de ces paramètres.
Le fichier présente plusieurs sections comme :
DMMU section qui configure l'unité de gestion de la mémoire de données.
IC section pour la configuration du cache d'instructions.
CPU section pour la spécification divers paramètres du processeur.
DEBUG section pour spécifier comment l'unité de débogage doit se comporter.
UART section pour configurer l’UART.

2. Lancement de la plate-forme or1k

Dans cette partie je vais lancer l’or1ksim, pour cela j’ai tapé la commande suivante :

Pour lancer le simulateur en mode interactif j’ai tapé la commande :

3. Lancement de la plate-forme or1k avec le Débogueur GDB

Un débogueur est pour objectif de lancer des programmes en même temps que le
programme principal afin de donner les possibilités de contrôler et d’examiner l’état des
variables internes lors d’une erreur, on a utilisé débogueur GDB.
Pour le CPU qu’on possède, je peux effectuer le débogage via la liaison JTAG entre le
débogueur et le CPU OR32.

7
Alors pour exécuter ce débogueur j’ai dû ouvrir deux terminales le premier afin de lancer
la plate-forme de simulation or1k et en exécutant la ligne de commande suivante :

Puis le deuxième terminal dans lequel je vais exécuter le débogueur par la commande
suivante :

Par la suite je dois définir la cible du débogueur en configurant le port JTAG qui a
l’adresse 9999 afin de se connecter au débogueur du simulateur or1ksim, ainsi que l’adresse
est configurable sur le fichier de configuration sim.cfg défini précédemment.
J’ai tapé la commande suivante pour établir la connexion :

Pour charger mon fichier exécutable que j’ai tapé la commande suivante :

Maintenant il faut lancer le reset du or1ksim qui se situe à l’adresse 0x100, alors j’ai
effectué les commandes suivantes :

Alors le résultat du lancement du programme affiche le message que j’ai écrit


précédemment en C “Hello InfoTronique!!!”, de plus je peux utiliser aussi les commande du
GDB suivante :

Conclusion :
Ce TP a été une opportunité de découvrir le processeur RISC 1200 avec ses différentes
fonctionnalités, ou j’ai appris comment travailler sur un simulateur Or1ksim, et générer le
fichier exécutable adapté au processeur RISC.
Lors du problème technique lié à la connexion au serveur je n’ai pas pu vous montrez les
résultats des simulations des commandes.

Au final je suis fier pour la réalisation de ce TP même si les problèmes rencontrés.

Vous aimerez peut-être aussi