I have a question. I wrote a code utilized two turbo decoders and one EDMA for decoding some blocks. The way I wrote the code was:
I first fill the ping and pong buffers of the two turbo-decoders and manage the EDMA setting to make hardware interrupt whenever any turbo decoder is done. The ISR, associated with the HWI, posts a task which finds which turbo decoder is done with the decoding and posts another task. The other task fills out the turbo decoder which was done with decoding and the code keeps doing this process to decode all the blocks.
I wanted to test my code with different scenarios and I generated my own test vectors for different block sizes. The test with block size of 6144 gave me the throughput of close to throughput formula in 3.5.5.1 of SPRUGS0. I did the test for different iteration number and the results were close to the formula. When I did the test for block size of 1066, the throughput was not even close to the formula. I tried to debug my code with system analyzer and when I put the setting for the system analyzer inside the *.cfg file, it seemed that system analyzer added some overhead to the code and the time took to run the same code was more.
I add these lines to the *.cfg:
LoggingSetup.eventUploadMode = LoggingSetup.UploadMode_STOPMODE;
Load.hwiEnabled = false;
LoggingSetup.sysbiosHwiLogging = true;
LoggingSetup.sysbiosHwiLoggingRuntimeControl = true;
LoggingSetup.loadLoggerSize = 32768;
LoggingSetup.mainLoggerSize = 131072;
LoggingSetup.sysbiosLoggerSize = 131072;
LoggingSetup.loadLogging = true;
LoggingSetup.sysbiosTaskLogging = true;
LoggingSetup.sysbiosSwiLogging = true;
LoggingSetup.sysbiosHwiLogging = true;
The time in cycle which takes to run the code with these configuration is 837978; but without these configuration is 632521.
Does system analyzer in general add overhead to the code or am I missing any part? Since the timing in the code is important, how do you debug it?