Hello,
I have an application running on OMAP4 that grabs a frame from a video sensor in the Cortex-A9 through a standard v4l2 architecture. The frame is located in a contiguous memory. After some hacks, I have the physical address of this frame. dmesg gives:
cma: dma_alloc_from_contiguous(cma ed11a000, count 29, align 5)
cma: dma_alloc_from_contiguous(): returned c1113000
cma: dma_alloc_from_contiguous(cma ed11a000, count 29, align 5)
cma: dma_alloc_from_contiguous(): returned c1113400
cma: dma_alloc_from_contiguous(cma ed11a000, count 29, align 5)
cma: dma_alloc_from_contiguous(): returned c1113800
cma: dma_alloc_from_contiguous(cma ed11a000, count 29, align 5)
cma: dma_alloc_from_contiguous(): returned c1113c00
Physical address of v4l2 buffer #1/#4 is 0xab080000 (printk added by me)
Physical address of v4l2 buffer #2/#4 is 0xab0a0000 (printk added by me)
Physical address of v4l2 buffer #3/#4 is 0xab0c0000 (printk added by me)
Physical address of v4l2 buffer #4/#4 is 0xab0e0000 (printk added by me)
So the frame is located at 0xab080000 and I have managed to access it with devmem2 in Cortex-A9 user-space.
I would like to acces this frame in my DSP Tesla application which is linked through "tesla-syslink-2.00.09.29", but Tesla crashes:
omap-iommu omap-iommu.0: dsp: version 2.0
omap-iommu omap-iommu.0: iommu fault: da 0xab0803c0 flags 0x0
rproc remoteproc0: fatal error #1 detected in dsp_c0: error type mmufault
omap-iommu omap-iommu.0: dsp: errs:0x00000002 da:0xab0803c0 pgd:0xea0d2ac00
rproc remoteproc0: trying to recover dsp_c0
After some talks, I have the feeling that I need to modify the file TeslaAmmu.cfg but I'm not sure how to modify it and if it's the right file. Any help? Many thanks in advance.
/*
* ======== TeslaAmmu.cfg ========
*
* An example configuration script used by DSP sample applications.
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
A lot of config stuff
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* IPC region: Large Page (512M); non-cacheable, posted */
/* config large page[3] to map 512MB VA 0xA0000000 to L3 0xBFFFFFFF */
AMMU.largePages[4].pageEnabled = AMMU.Enable_YES;
AMMU.largePages[4].logicalAddress = 0xA0000000;
AMMU.largePages[4].size = AMMU.Large_512M;
AMMU.largePages[4].L1_cacheable = AMMU.CachePolicy_NON_CACHEABLE;
AMMU.largePages[4].L1_posted = AMMU.PostedPolicy_POSTED;
AMMU.largePages[4].L1_allocate = AMMU.AllocatePolicy_ALLOCATE;
AMMU.largePages[4].L1_writePolicy = AMMU.WritePolicy_WRITE_THROUGH;
AMMU.largePages[4].L2_cacheable = AMMU.CachePolicy_NON_CACHEABLE;
AMMU.largePages[4].L2_posted = AMMU.PostedPolicy_POSTED;
AMMU.largePages[4].L2_allocate = AMMU.AllocatePolicy_ALLOCATE;
AMMU.largePages[4].L2_writePolicy = AMMU.WritePolicy_WRITE_THROUGH;