source: soft/giet_vm/display/main.c @ 257

Last change on this file since 257 was 254, checked in by alain, 11 years ago

Improving support for Chained Buffer DMA in drivers.c file.

File size: 2.5 KB
Line 
1#include <stdio.h>
2
3#define NBLOCKS 32   // number of blocks per image (128 * 128) / 512
4
5unsigned char buf0[128*128] __attribute__((aligned(64)));
6unsigned char buf1[128*128] __attribute__((aligned(64)));
7
8__attribute__((constructor)) int main(void)
9{
10    unsigned int  x;
11    unsigned int  base = 0;
12
13    /* initialise CDMA transfert (double buffer) */
14
15    giet_tty_printf( "*** Starting task DISPLAY_CMA on processor %d at cycle %d\n",
16                     giet_procid(), giet_proctime() );
17    giet_tty_printf( "  - buf0 address (LSB) = %x\n", (unsigned int)buf0 );
18    giet_tty_printf( "  - buf1 address (LSB) = %x\n", (unsigned int)buf1 );
19
20    x = giet_fb_cma_init( buf0,       // buf0 base address
21                          buf1,       // buf1 base address
22                          128*128 );  // buffer size (bytes)
23    giet_assert( (x==0), "echec giet_fb_cdma_init" );
24
25    while (base < 10 * NBLOCKS)
26    {
27        /* Phase 1 : transfer one image from disk to buf0 and display  */
28
29        giet_tty_printf( "\n *** image %d *** at date = %d \n",
30                         (base/NBLOCKS), giet_proctime() );
31
32        x = giet_ioc_read( base,            // lba on disk
33                           buf0,            // user buffer address
34                           NBLOCKS );       // number of blocks
35        giet_assert( (x==0) , "echec giet_ioc_read for buf0" );
36
37        x = giet_ioc_completed();
38        giet_assert( (x==0) , "echec giet_ioc_completed for buf0" );
39
40        giet_tty_printf( "ioc_read buf0 completed at date = %d \n", giet_proctime() );
41
42        x = giet_fb_cma_write( 0 );         // buf0
43        giet_assert( (x==0) , "echec giet_fb_cma_write for buf0" );
44       
45        base = base + NBLOCKS;
46
47        /* Phase 2 : transfer one image from disk to buf1 and display  */
48
49        giet_tty_printf( "\n *** image %d *** at date = %d \n",
50                         (base/NBLOCKS), giet_proctime() );
51
52        x = giet_ioc_read( base,            // lba on disk
53                           buf1,            // user buffer address
54                           NBLOCKS );       // number of locks
55        giet_assert( (x==0) , "echec giet_ioc_read for buf1");
56
57        x = giet_ioc_completed();
58        giet_assert( (x==0) , "echec giet_ioc_completed for buf1");
59
60        giet_tty_printf( "ioc_read buf1 completed at date = %d \n", giet_proctime() );
61
62        x = giet_fb_cma_write( 1 );         // buf1
63        giet_assert( (x==0) , "echec giet_fb_cma_write for buf1" );
64       
65        base = base + NBLOCKS;
66    } // end while
67
68    giet_fb_cma_stop();
69    giet_exit();
70    return 0;
71}
Note: See TracBrowser for help on using the repository browser.