Changes between Version 79 and Version 80 of SoclibCourseTp3
- Timestamp:
- Dec 6, 2013, 12:44:22 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp3
v79 v80 342 342 343 343 Puisque 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''.344 il est possible de modifier le logiciel embarqué (fichier '''app.bin'''), sans modifier l'architecture matérielle et donc sans regénérer le simulateur. 345 345 346 346 On 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ération348 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 :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 '''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 : 351 351 352 352 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. 358 359 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. 359 360 360 Pour afficher sur le terminal, on utilisera évidemmentl'appel système ''tty_printf()''.361 Pour afficher sur le terminal, on utilisera l'appel système ''tty_printf()''. 361 362 Pour obtenir le numéro de cycle, on utilisera l'appel système ''proctime()''. 362 363 Pour 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 dansla boucle364 Pour 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 366 Pour introduire un peu d'interactivité dans cette application, vous pouvez introduire à la fin de la boucle 366 367 un 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. 367 368