Changes between Version 79 and Version 80 of SoclibCourseTp3


Ignore:
Timestamp:
Dec 6, 2013, 12:44:22 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp3

    v79 v80  
    342342
    343343Puisque le logiciel embarqué est chargé dynamiquement dans la RAM et dans la ROM lors du lancement du simulateur,
    344 il est possible de modifier le logiciel embarqué (fichier ''bin.soft''), sans modifier l'architecture matérielle et donc sans regénérer le simulateur ''simulator.x''.
     344il est possible de modifier le logiciel embarqué (fichier '''app.bin'''), sans modifier l'architecture matérielle et donc sans regénérer le simulateur.
    345345
    346346On va donc maintenant écrire une application logicielle un peu plus complexe, qui utilise le coprocesseur GCD,
    347 simplement en modifiant le fichier ''main.c'' dans le répertoire ''soft'', et en relançant la compilation et la génération
    348 du fichier ''bin.soft''.
    349 
    350 Modifiez le fichier `main.c`, pour que les programme C exécute une boucle infinie dans laquelle on effectue successivement les opérations suivantes :
     347simplement en modifiant le fichier '''main.c''' dans le répertoire ''soft'', et en relançant la compilation et la génération
     348du fichier '''bin.soft'''.
     349
     350'''Question:''' Modifiez le fichier '''main.c''', pour que les programme C exécute une boucle infinie dans laquelle on effectue successivement les opérations suivantes :
    351351
    352352 1. affichage du numéro de cycle et du numéro d'itération.
    353  1. génération aléatoire de deux variables OPA et OPB de type `int`.
    354  1. écriture de OPA dans le registre `GCD_OPA` du coprocesseur GCD.
    355  1. écriture de OPB dans le registre `GCD_OPB` du coprocesseur GCD.
    356  1. écriture dans le pseudo-registre `GCD_START`, pour démarrer le coprocesseur GCD.
    357  1. lecture du registre `GCD_STATUS` du coprocesseur GCD pour tester la fin du calcul.
     353 1. génération aléatoire de deux variables ''opa'' et ''opb'' de type `int`.
     354 1. écriture de ''opa'' dans un registre du coprocesseur GCD.
     355 1. écriture de ''opb'' dans un autre registre du coprocesseur GCD.
     356 1. écriture dans un troisième registre du coprocesseur GCD, pour démarrer le calcul.
     357 1. lecture du registre  d'état du coprocesseur GCD pour tester la fin du calcul.
     358 1. lecture du registre du coprocesseur GCD contenant le résultat.
    358359 1. affichage du numéro d'itération, du numéro de cycle, des valeurs des opérandes et du résultat sur le TTY.
    359360
    360 Pour afficher sur le terminal, on utilisera évidemment l'appel système ''tty_printf()''.
     361Pour afficher sur le terminal, on utilisera l'appel système ''tty_printf()''.
    361362Pour obtenir le numéro de cycle, on utilisera l'appel système ''proctime()''.
    362363Pour la génération aléatoire, on utilisera la fonction ''rand()''.
    363 Pour les accès au coprocesseur GCD on utilisera les appels système spécifiques au coprocesseur GCD.
    364 
    365 Pour introduire un peu d'interactivité dans cette application, vous pouvez introduire dans la boucle
     364Pour les accès au coprocesseur GCD on utilisera les appels système spécifiques au coprocesseur GCD définis dans le fichier '''stdio.c'''.
     365
     366Pour introduire un peu d'interactivité dans cette application, vous pouvez introduire à la fin de la boucle
    366367un appel système ''tty_getc()'' qui lit un caractère au clavier, et bloque l'exécution du programme tant que le caractère n'est pas saisi.
    367368