I use OMAPL137 and test DSPlink readwrite example OK, however further experiments confused me and list below:
1. Where do the DSP executeable will be put on?
According to "CFG_OMAPL1XXGEM_SHMEM.c", the dsp memory allocation is from 0xC3E0-0000 and size is 0xFFF80, do it means the PROC_load will automatically put DSP binary from 0xC3E0-0000? If I use Linux toolchain (not using CCS3.3), how do I check to see it load at the right address?
2. How to call proc_read/write to get maximum available data of DSPLink memory area? Do I need to call once to allcate full data area? or just call if I want?
If I run the example readwrite, I got following result.
"./readwritegpp readwrite.out 3287613440 1024 10". OK
If I change the buffersize from 1024 to a large number, say 400000, it crashes. More results are below:
"./readwritegpp readwrite.out 3287613440 400000 10". Arm-Linux crash. It dumps some data...(3287613440 = 0x C3F5-0000)
"./readwritegpp readwrite.out 3287613440 360000 10". OK.
"./readwritegpp readwrite.out 3286257792 360000 10". Arm-Linux hangs. (3286257792 = 0xC3E0-5080)
From wiki I know the default DSPLink is 1MB and can be checked according to "CFG_OMAPL1XXGEM_SHMEM.c", it says the DSPLink is put into 3 parts, "DSPLINKMEM", "DSPLINKMEM1" and "POOLMEM", allocated each from 0xC3E0-5080, 0xC3E3-0080 and 0xC3F0-0080, each size is 0x5000, 0x2B000 and 0x000D-0000 (totally 1MB). Can some one tell me how to use the function properly?