Changes between Version 4 and Version 5 of MjpegCourse/Station


Ignore:
Timestamp:
Feb 11, 2008, 3:49:09 PM (17 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Station

    v4 v5  
    157157 * Exécutez la description, qui fait la compilation
    158158{{{
    159 $ ./mjpeg.py
     159$ ./mjpeg
    160160}}}
    161161 * Lancez l'exécution de l'application
     
    232232 * Réécrivez la définition de la tâche IQZZ dans la description DSX
    233233{{{
    234 # On avait:
    235 LlvmBlob('iqzz', stack_size = 1024, blob = 'src/iqzz_48x48.bc')
     234# On avait dans iqzz.task:
     235sources = [ 'iqzz.bc' ],
    236236
    237237# On peut alors déclarer iqzz comme une tâche logicielle en C.
    238 SwTask( ... )
     238sources = [ 'iqzz.c' ],
    239239}}}
    240240Inspirez-vous des autres déclarations, n'oubliez pas les `defines` si vous voulez un code portable.
    241241
    242 En fonction de la définition d'{{{iqzz}}} que vous utilisez (celle de `LlvmBlob` ou la vôtre),
     242En fonction de la définition d'{{{iqzz}}} que vous utilisez (celle en `.bc` ou la vôtre en `.c`),
    243243et en recompilant, vous observerez les résultats l'implémentation de référence ou de la vôtre.
    244244
     
    249249
    250250Un Ramdac est une RAM couplée à un DAC (Digital to Analog Converter). Le contenu de la ram est
    251 converti en signal analogique pour être envoyé sur un écran. Notre Ramdac a un accès particulier:
    252 Il a un comportement Fifo. Il faut écrire les pixels dans l'ordre où ils vont être affichés :
    253 tous les pixels d'une ligne, puis toutes les lignes d'une image.
     251converti en signal analogique pour être envoyé sur un écran. Notre ramdac s'utilise de manière logicielle avec
     252les fonctions `fb_init` et `fb_display()`. Il déclare un tableau `fb_buffer`.
     253
     254On doit faire une tâche LIBU qui prend ce qui vient de la décompression pour le ranger dans le RAMDAC.
    254255
    255256Il se trouve que les blocs issus de la décompression JPEG font 8x8 pixels. Ils ne font pas la
     
    258259
    259260Libu prend BLOCKS_W blocs de 8x8 pixels et en construit 8 lignes de WIDTH pixels de large
    260 (rappel: BLOCKS_W*8 = WIDTH). Il peut alors envoyer successivement ces lignes au Ramdac.
     261(rappel: BLOCKS_W*8 = WIDTH).
    261262
    262263En pseudo-code, le traitement de Libu est:
     
    270271        Pour chaque ligne du bloc
    271272            Copier les 8 pixels en les mettant à leur place dans buffer
    272     Pour chacune des 8 lignes du buffer:
    273         Envoyer la ligne
    274273}}}
    275274 * Implémentez cette tâche en C à l'aide de l'API logicielle définie dans SrlApi
     
    281280Vous devrez créer une archive `tar.gz`, contenant un seul répertoire nommé `tp1`. Dans ce répertoire vous devrez mettre:
    282281
    283  * Les répertoires des tâches iqzz et libu, contenant uniquement les fichier `.task` et `.c`
     282 * Les répertoires des tâches iqzz et libu, contenant uniquement les fichier `.task` et `.c` (pas le `.bc`)
     283   Bien entendu, ces deux descriptions de tâches doivent faire référence au .c, pas au .bc !
    284284 * Votre rapport (une page maximum) en format PDF (et aucun autre) dans `tp1/rapport.pdf`.
    285285