summaryrefslogtreecommitdiffstats
path: root/README
blob: df394f00675ae4d83760f47293c20f3205919651 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sample event engine for pcilib driver platform
  - This driver does not require real PCIe hardware and produces dummy data
    * Register values are random
    * DMA continuously return current buffer context with anyway modifying it (so it is either 0 or random content)
  - The pciDriver should be loaded in 'dummy' mode with the following options
	modprobe pciDriver DUMMY_DEVICE=1
  - The driver implements all 3 APIs define by pcilib
    * Register protocol generating random numbers (and ignoring 'set' values). The registers are defined via included xml definitions and by DMA engine
    * DMA engine just prvoiding unmodified buffers in the memory as fast as possible
    * Event engine building a histogram over pre-defined integration period and returning either this histograms or raw data via rawdata-callback mechanism.
    The access to raw data via standard getdata mechanism is not implemented as it would inflict significant performance penalty. As well, get_next_event API
    call is not implemented and is expected to be implemented (with substantial performance penalities) in pcitool via general-purpose implementation relying
    on available 'stream' call. This is general-purpose implementation is not enabled yet, but is available and just need testing.
  - The implementation of histograming is single-threaded and not optimized. Some thinking should be put here for real applications to ensure that 
    * It is fast enough to process expected data stream. Likely multi-processing will be needed here and can be implemented either with OpenMP (question of efficiacy)
    or using dedicated threads (see ipecamera event engine for an example of trully multiprocessed event engine).
    * If still processing was too slow for some period of time, the system can drop some data and recover operation (in provided example, it will misbehave after
    losing the data for a first time)