Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

RTOS/AM5728: OpenMP with FFTLIB giving EDMA errors

$
0
0

Part Number:AM5728

Tool/software: TI-RTOS

First I wanted to give an update to one of my previous threads: https://e2e.ti.com/support/processors/f/791/t/754731

I was able to get the FFTLIB working properly on the AM5728 DSP core using the direct access and EDMA FFT's . Now I'm trying to implement the OpenMP version which only uses EDMA and I'm running into some issues. I'm able to successfully build the project, but at line 224 of the main.c file I get the following error on the second DSP core:

[C66xx_DSP2] ti.sysbios.heaps.HeapMem: line 221: out of memory: handle=0x9a625f00, size=12
xdc.runtime.Error.raise: terminating execution

This only occurs if I press the play button and debug at full speed. If I step through the code on both cores at the same time it does not throw the error. Then when it reaches the next parallel edma command to allocate the memory it fails with the generic message "EdmaMgr_alloc() failed " from the fft_omp_assign_edma_resources function.

I've attempted to modify the heap size in my .cfg file and no matter what size I assign, it gives the above error at the same location and size. Looking at the HeapMem and HeapMemMP in ROV did not provide me much information either:

Attached are the files where I think the problem lies, but I haven't been able to pin point it yet. First is the fft_c6678_config.c file which is where I had to make changes to work with the am5728 which has only 1 EDMA instance verses the c6678 which has 3, as well as the change of register locations and interrupt numbers. Lines edited were 43, 242-275, and 309-328. 

In the omp_config.cfg file, I merged the examples from the FFTLIB project fft_opm_sp_1d_r2c_k1_66_LE_ELF example with the config mentioned in http://downloads.ti.com/mctools/esd/docs/openmp-dsp/building_openmp_app.html#running-applications-within-ccs. I'm using the rtsc platform ti.runtime.openmp.platforms.am57x found in the  openmp_dsp_am57xx_2_06_02_01 library. I modified the DDR locations slightly as shown here:

I feel like I may not have configured the EDMA entirely correctly since it runs on one core, but not two. Also, if I run the commands linearly then both cores succeed. Maybe that when they're doing the parallel execution they're trying to access the same memory? That is my hypothesis at this point anyway. I'm hoping that someone might be able to help figure out why the edmamgr library functions from framework_components_3_40_02_07 do not seem to be working on multiple cores with OpenMP.

I can export and upload my entire project if that would help as well.

(Please visit the site to view this file)  (Please visit the site to view this file)  (Please visit the site to view this file)

Thanks!

John


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>