Hi,
I am using OMAP3530 based custom board on Windows CE 6.0. Using DSPLink_1.64, I want to send data buffer of 65K from gpp to dsp for some processing.As a starting point I am using readwrite sample application. As I need to send 65K size data buffer I changed memory configuration according to given link
http://wiki.davincidsp.com/index.php/Writing_DSPLink_Application_using_PROC_read_and_write_APIs
But whenever I am trying to access Memory location 0x8FC00000, it gives first chance exception. The debug messages are as follows:
PB Debugger Loaded symbols for 'C:\WINCE600\OSDESIGNS\UBMONITOR_OS\UBMONITOR_OS\RELDIR\UBMONITOR_OS_ARMV4I_DEBUG\READWRITEGPP.EXE' 336210 PID:207000a TID:45f0006 ============= Sample Application : READWRITE ========== 336210 PID:207000a TID:45f0006 Entered RDWR_Create () 336210 PID:400002 TID:45f0006 DSP Clk Rate 430000 336210 PID:400002 TID:45f0006 RELFSD: Opening file readwrite.out from desktop 337291 PID:207000a TID:45f0006 Leaving RDWR_Create () 337291 PID:207000a TID:45f0006 Entered RDWR_Execute () 337291 PID:400002 TID:45f0006 Exception 'Data Abort' (4): Thread-Id=045f0006(pth=9023b75c), Proc-Id=00400002(pprc=8c04caa0) 'NK.EXE', VM-active=0207000a(pprc=9034a648) 'readwritegpp.exe' 337291 PID:400002 TID:45f0006 PC=c016da3c(k.coredll.dll+0x000ada3c) RA=c1065628(dsplinkk.dll+0x00005628) SP=d190fcd8, BVA=ffffffff
PB Debugger Loaded symbols for 'C:\WINCE600\OSDESIGNS\UBMONITOR_OS\UBMONITOR_OS\RELDIR\UBMONITOR_OS_ARMV4I_DEBUG\READWRITEGPP.EXE'
336210 PID:207000a TID:45f0006 ============= Sample Application : READWRITE ==========
336210 PID:207000a TID:45f0006 Entered RDWR_Create ()
336210 PID:400002 TID:45f0006 DSP Clk Rate 430000
336210 PID:400002 TID:45f0006 RELFSD: Opening file readwrite.out from desktop
337291 PID:207000a TID:45f0006 Leaving RDWR_Create ()
337291 PID:207000a TID:45f0006 Entered RDWR_Execute ()
337291 PID:400002 TID:45f0006 Exception 'Data Abort' (4): Thread-Id=045f0006(pth=9023b75c), Proc-Id=00400002(pprc=8c04caa0) 'NK.EXE', VM-active=0207000a(pprc=9034a648) 'readwritegpp.exe'
337291 PID:400002 TID:45f0006 PC=c016da3c(k.coredll.dll+0x000ada3c) RA=c1065628(dsplinkk.dll+0x00005628) SP=d190fcd8, BVA=ffffffff
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Can Anyone share his experience to resolve my problem? Whether I am configuring memory map correctly on windows CE or I need to modify some other place.
Thanks & Regards,
Chandra Shekhar Mishra
Hello,
The wiki page was 1.5x specific and outdated. I have updated it to make it 1.6x compatible.
The possible reasons for the crash are:
1) The sample structures for WRITEMEM and READMEM given in the wiki page were copied into the DSPLink memory map. These structures are out of date when used for 1.64. I have updated the wiki page. Please check the latest structure definition.
2) The entry number used by you are 6 for WRITEMEM and 7 for READMEM. These entry numbers are already in use. If you are updating the default memory map, you need to use 10 and 11 respectively.
3) Is the address 0x8FC00000 valid for OMAP3530? After looking at the OMAP memory map, this address seems valid. So this can be ruled out as an issue.
Please let me know if this helps. I can verify the DSPLink memory map if you attach it to this post.
Deepali
To add to Deepali's response, even though 0x8FC00000 is valid for OMAP3530 ES3.x silicon this needs to be reserved in config.bib else the WinCE kernel is told that it is available memory. Take a look at TI_EVM_3530/FILES/config.bib that reserves memory and find the right flags. I'm not sure if you are using the latest EVM (Rev G) which has the OMAP ES3.x silicon. But as an example look at CMEM_DSP section that is used in config.bib to reserve the space for DSP memory/CMEM.
Also take a look at the platform.reg that is in the same directory which shows examples of CMEM pool definitions.
Jatin
---
Hi Deepali,
1) From which link I can get the latest structure definition.
2) I used entry number 10 and 11 respectively.
Hi Jatin,
I also reserved memory for WRITEMEM and READMEM in config .bib.
Also find the attached configuration files.Is there any other thing I need to check?
Thanks & Regards,Chandra Shekhar Mishra
It seems I can only attach single file to a post I am attaching DSPlink Memry configuration and DSP Memory configuration seperatly.
Thanks,
Now this is my DSP Memory configuration.
For config.bib file, I will let Jatin review it.
Regarding CFG_OMAP3530_SHMEM.c, the structure was outdated and corresponding to 1.5x and not 1.6x DSPLink release. I have updated the wiki page http://wiki.davincidsp.com/index.php/Writing_DSPLink_Application_using_PROC_read_and_write_APIs for the latest structure definition and also pasted the correct definition below. Please use this. The DSP side configuration seems correct.
{ 10, /* ENTRY : Entry number */ "WRITEMEM", /* NAME : Name of the memory region */ 0x8FC00000, /* ADDRPHYS : Physical address */ 0x8FC00000, /* ADDRDSPVIRT : DSP virtual address */ (Uint32) -1u, /* ADDRGPPVIRT : GPP virtual address (if known) */ 0x100000, /* SIZE : Size of the memory region */ FALSE, /* SHARED : Shared access memory */
FALSE, /* SYNCD : Synchornized */ }, { 11, /* ENTRY : Entry number */ "READMEM", /* NAME : Name of the memory region */ 0x8FD00000, /* ADDRPHYS : Physical address */ 0x8FD00000, /* ADDRDSPVIRT : DSP virtual address */ (Uint32) -1u, /* ADDRGPPVIRT : GPP virtual address (if known) */ 0x100000, /* SIZE : Size of the memory region */ FALSE, /* SHARED : Shared access memory */
FALSE, /* SYNCD : Synchornized */ }
READMEM and WRITEMEM appear to be fine with the new config.bib (again I assume you are using Rev G EVM. If not then this address will not be valid). How are you accessing the memory on the ARM side. You should be using the virtual address (same as the one used in config.bib) i.e, (0x8FC00000 + 0x4000000).
I am not using EVM board. It is custom OMAP3530 based board. But after looking into the platform builder debug messages I can say that we are using silicaon Rev 3.1. As messages are like that.
4294767296 PID:0 TID:2 Processor Revision : 3.1 4294767296 PID:0 TID:2 Silicon ID Code Reg : 0x4b7ae02f 4294767296 PID:0 TID:2 CPU Main ID Register : 0x411fc083 4294767296 PID:0 TID:2 Architecture ID : 0x0000000f 4294767296 PID:0 TID:2 ARM Ver : ARMv6 or greater 4294767296 PID:0 TID:2 ----------------------------------------- And I passed the virtual address from ARM code to readwrite application but it was giving first chance exception. For the time being I increased code/data section Memory map in both gpp and dsp side and able to transfer buffer of 1MB in that memory location. Regards, Chandra Shekhar Mishra
4294767296 PID:0 TID:2 Processor Revision : 3.1
4294767296 PID:0 TID:2 Silicon ID Code Reg : 0x4b7ae02f
4294767296 PID:0 TID:2 CPU Main ID Register : 0x411fc083
4294767296 PID:0 TID:2 Architecture ID : 0x0000000f
4294767296 PID:0 TID:2 ARM Ver : ARMv6 or greater
4294767296 PID:0 TID:2 -----------------------------------------
And I passed the virtual address from ARM code to readwrite application but it was giving first chance exception.
For the time being I increased code/data section Memory map in both gpp and dsp side and able to transfer buffer of 1MB in that memory location.
Regards,
Chandra,
Did your issue get resolved?
Still I am not able to allocate separate WRITEMEM and READMEM memory section.But by increasing the code/data section in default memory maps I can send and receive 1MB data between gpp and dsp.I dont know whether this is a correct method to do that. I am developing some application and subsequently after testing I can confirm whether it is resolved or not.
Please send the specific error so we can debug it further.