Changes between Version 45 and Version 46 of AS6-TME-B1


Ignore:
Timestamp:
Jan 31, 2023, 6:54:50 PM (17 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B1

    v45 v46  
    14061406'''''''''''''''
    14071407}}}
    1408 - Pour finir, recompilez à nouveau le noyau en utilisant le mode `-O3`, réexécutez encore l'application en mode debug et regardez combien de cycles sont nécessaire pour exécuter la fonction `fputc()`. Pour ça, vous ouvrez la fonction
     1408- Pour finir, recompilez à nouveau le noyau en utilisant le mode `-O3`, réexécutez encore l'application en mode debug et regardez combien de cycles sont nécessaires pour exécuter la fonction `fputc()`. Pour ça, vous ouvrez le fichier `trace0.s`, vous cherchez le premier appel de `fputc()` (vous notez le cycle) et vous cherchez l'instruction `eret` qui marque la sortie du kernel (vous notez le cycle) et vous faites la différence ? Profitez en pour voir l'entrée dans le kernel, l'analyse de la cause, l'utilisation du vecteur de syscall, etc.
     1409{{{#!protected ------------------------------------------------------------------------------------
     1410'''''''''''''''
     1411- 7391 : appel de `fputc()`
     1412- 7589 : exéction de `eret`
     1413- → 7589 - 7391 = 198 cycles (pour afficher 1 caractère !)
     1414'''''''''''''''
     1415}}}
     1416- Refaite le calcul pour le deuxième appel à `fputc()`, que constatez-vous ? Avez-vous une explication  ?
     1417{{{#!protected ------------------------------------------------------------------------------------
     1418'''''''''''''''
     1419- 7620 : appel de `fputc()`
     1420- 7686 : exéction de `eret`
     1421- → 7686 - 7620 = 66 cycles, c'est plus rapide, c'est à cause des caches que noud verrons plus tard !
     1422'''''''''''''''
     1423}}}
     1424
     1425
    14091426{{{#!comment
     1427
     1428----------- TROP COMPLEXE !!!
     1429
    14101430Vous allez utiliser le composant DMA. En cours, nous avons vu que le DMA réalise un copie de mémoire à partir de l'adresse contenu dans le registre DMA_SRC vers l'adresse contenu dans le registre DMA_DST du nombre d'octet contenu dans le registre DMA_LEN.
    14111431Dans l'ordre, on commence par écrire les adresses SRC, DST et IRQ_DISABLE (si besoin), puis on écrit LEN, ce qui provoque le démarrage de la copie par le DMA