Changes between Version 5 and Version 6 of library_mwmr
- Timestamp:
- Nov 6, 2014, 7:53:05 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
library_mwmr
v5 v6 8 8 This 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. 9 9 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.10 An 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''. 11 11 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.12 WARNING (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). 13 13 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. 14 WARNING (ii) The MWMR channel, can be accessed by several tasks, but it must be initialized by one single task. 15 16 WARNING (iii) The channel must be declared in a non cacheable segment, if the platform does not provide hardware cache coherence. 15 17 16 18 == __ Blocking Functions__ == 17 19 18 The ''mwmr_read()'' and ''mwmr_write()'' functions are blocking functions, that return only when the transfer is completed.20 The ''mwmr_read()'' and ''mwmr_write()'' functions are blocking functions, that return only when the requested transfer is completed. 19 21 20 22 === void '''mwmr_write'''( mwmr_channel_t* mwmr, unsigned int* buffer, unsigned int nitems ) ===