Changes between Version 5 and Version 6 of library_mwmr


Ignore:
Timestamp:
Nov 6, 2014, 7:53:05 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • library_mwmr

    v5 v6  
    88This software FIFO can be directly accessed by an hardware coprocessor, thanks to the vc_mwmr_controller, but be describe here the the software API that can be used by a software application.
    99
    10 An MWMR transaction transfer an integer number of items. An item is an integer number of unsigned int (32 bits words). The max number of words that can be stored in a MWMR channel is defined by the"depth" parameter. The "width" parameter define the minimal number of words contained in an atomic item. Therefore, the "depth" parameter must be a multiple of the "width" parameter.
     10An MWMR transaction transfer an integer number of ''items''. An ''item'' is an integer number of unsigned int (32 bits words). The "width" parameter define the number of words contained in an atomic ''item''.
    1111
    12 WARNING : The MWMR channels, being generally shared by several tasks, must be defined in the mapping, to be initialised by the GIET in the boot phase, and to define the ''length'' and ''width'' parameters. The channel must be in a non cacheable segment, if the platform does not provide hardware cache coherence.
     12WARNING (i) The max number of words that can be stored in a MWMR channel is 1018 words (4072 bytes), because  the mwmr_channel_t object has a fixed size (4Kbytes in the present implementation).
    1313
    14 The ''vobj_get_vbase()'' system call can be used by the tasks to get the virtual base address of the channel from it's name.
     14WARNING (ii) The MWMR channel, can be accessed by several tasks, but it must be initialized by one single task.
     15
     16WARNING (iii) The channel must be declared in a non cacheable segment, if the platform does not provide hardware cache coherence.
    1517
    1618== __ Blocking Functions__ ==
    1719
    18 The ''mwmr_read()'' and ''mwmr_write()'' functions are blocking functions, that return only when the transfer is completed.
     20The ''mwmr_read()'' and ''mwmr_write()'' functions are blocking functions, that return only when the requested transfer is completed.
    1921
    2022=== void '''mwmr_write'''( mwmr_channel_t* mwmr, unsigned int* buffer, unsigned int    nitems ) ===