I am trying to setup a simple shared memory space between the DSP and ARM to pass video frames from the DSP over to the ARM for display.
So far I have been able to create an application that can either run the shared memory space OR run the video displays. According to the DM816x EZ Software Developer's Guide, the syslink examples cannot be run at the same time as the video firmware. Is there a guide somewhere as to what changes are necessary to allow both Syslink and the video firmware to operate concurrently?
Thanks in advance.
I am still running into issues with running this program. I modified my DSP platform as follows to match up with the prescribed EzSDK memory map but my program still crashes when video firmware is loaded. In searching the forum it seems the memory config for firmware_loader also needs to be modified? Is that the only other place where changes need to be made to run video firmware and the DSP? If not what other components need to be updated?
metaonly module Platform inherits xdc.platform.IPlatform{ config ti.platforms.generic.Platform.Instance plat = ti.platforms.generic.Platform.create("plat", { clockRate: 800.0, catalogName: "ti.catalog.c6000", deviceName: "TMS320TI816X", externalMemoryMap: [ ["EXT_RAM", { name: "EXT_RAM", base: 0x80000000, len: 0x0A600000, space: "code/data", access: "RWX" } ], ["DDR2", { name: "DDR2", //base: 0x8B000000, //len: 0x01F00000, base: 0x99500000, len: 0x00C00000, space: "code/data", access: "RWX" } ], /*["HOST_DSP_NOTIFYMEM", { name: "HOST_DSP_NOTIFYMEM", base: 0x8CF00000, len: 0x00100000, //base: 0x98000000, //len: 0x01400000, space: "code/data", access: "RWX" } ],*/ ["SR0", { name: "SR0", //base: 0x8E000000, //len: 0x01000000, base: 0x99400000, len: 0x00100000, space: "code/data", access: "RWX" } ], ["SR1", { name: "SR1", //base: 0x8D000000, //len: 0x00C00000, base: 0x9F700000, len: 0x00200000, space: "code/data", access: "RWX" } ], ], l1DMode:"32k", l1PMode:"32k", l2Mode:"256k", });instance : override config string codeMemory = "DDR2"; override config string dataMemory = "DDR2"; override config string stackMemory = "DDR2";}
I'm doing much what you're trying to do, with shared memory regions for images using Syslink, and it works fine. I never changed anything concerning the display firmware. The problem may be the memory space that your app is using, you may have a conflict. I'm also using the low level fbdev driver to display stuff on the screen. Here is my Platform.xdc file:
metaonly module Platform inherits xdc.platform.IPlatform {
config ti.platforms.generic.Platform.Instance plat = ti.platforms.generic.Platform.create("plat", { clockRate: 800.0, catalogName: "ti.catalog.c6000", deviceName: "TMS320TI816X", externalMemoryMap: [ ["EXT_RAM", {name: "EXT_RAM", base: 0x80000000, len: 0x10000000, space: "code/data",access: "RWX"}], ["DDR2", {name: "DDR2", base: 0x98000000, len: 0x02100000, space: "code/data",access: "RWX"}], ["SR0", {name: "SR0", base: 0x9F700000, len: 0x00200000, space: "code/data",access: "RWX"}], ["SR1", {name: "SR1", base: 0x9F900000, len: 0x14400000, space: "code/data",access: "RWX"}], ], l1DMode:"16k", l1PMode:"32k", l2Mode:"256k", });
instance :
override config string codeMemory = "DDR2"; override config string dataMemory = "DDR2"; override config string stackMemory = "DDR2";
}
EXT_RAM is Linux ARM memory
DDR2 is DSP memory
SR0 and SR1 are shared regions for Syslink
Lee
Thanks Lee, I will try these memory settings.
Are you using this definition with the 5.04 EzSDK?
Ben9619 Are you using this definition with the 5.04 EzSDK?
Yes, but I found that I needed to use the xdc and bios libraries from 5.03. I'm using Syslink and Ipc from 5.04.
I made the changes and my app now runs with video firmware loaded, however when I quit the program and clean up I get these errors and have to reset the board in order to run my app again. Is this what drove you to 5.03 on XDC and BIOS?
VPSS_FVID2: contrl event 0x6 timeoutti81xxfb ti81xxfb: failed to stop.VPSS_FVID2: contrl event 0x6 timeoutti81xxfb ti81xxfb: failed to stop.
Ben9619 I made the changes and my app now runs with video firmware loaded, however when I quit the program and clean up I get these errors and have to reset the board in order to run my app again. Is this what drove you to 5.03 on XDC and BIOS?
No, my code will not build using the 5.04 xdc and bios libraries. I haven't seen these errors before, I'm guessing that you are not correctly terminating Syslink.
I changed the area where I was putting my shared buffers to the area above 0x9F900000 and it seems to be behaving.
Thanks for the help.
hi ben,
I am stuck in the similar issue here. Can you tell me, what changes you made in the platform.xdc. I believe you have a stand alone syslink application running, My platform points to the "ti.sdo.ipc.examples.paltforms.evmTI816X.dsp'
and here is the content of the file:
config ti.platforms.generic.Platform.Instance plat =ti.platforms.generic.Platform.create("plat", {clockRate: 800.0, catalogName: "ti.catalog.c6000",deviceName: "TMS320TI816X",externalMemoryMap: [ ["DDR_DSP", {name: "DDR_DSP", base: 0x8C000000, len: 0x02000000, space: "code/data",access: "RWX"}],["DDR_SR0", {name: "DDR_SR0", base: 0x8E000000, len: 0x01000000, space: "code/data",access: "RWX"}],],l1DMode:"32k",l1PMode:"32k",l2Mode:"256k",});instance :override config string codeMemory = "DDR_DSP"; override config string dataMemory = "DDR_DSP"; override config string stackMemory = "DDR_DSP";}
Any help is appreciated.
Thanks
best regards
hitesh
Here is the platform definition I used. Make sure you put the items you are passing from DSP to ARM somwhere in the SR1 region. At first I put them in the SR0 region and I got that vpss error I mentioned above.
metaonly module Platform inherits xdc.platform.IPlatform{ config ti.platforms.generic.Platform.Instance plat = ti.platforms.generic.Platform.create("plat", { clockRate: 800.0, catalogName: "ti.catalog.c6000", deviceName: "TMS320TI816X", externalMemoryMap: [ ["EXT_RAM", { name: "EXT_RAM", base: 0x80000000, len: 0x0A600000, space: "code/data", access: "RWX" } ], ["DDR2", { name: "DDR2", base: 0x98000000, len: 0x02100000, space: "code/data", access: "RWX" } ], ["SR0", { name: "SR0", base: 0x9F700000, len: 0x00200000, space: "code/data", access: "RWX" } ], ["SR1", { name: "SR1", base: 0x9F900000, len: 0x00A00000, space: "data", access: "RW" } ], ], l1DMode:"32k", l1PMode:"32k", l2Mode:"256k", });instance : override config string codeMemory = "DDR2"; override config string dataMemory = "DDR2"; override config string stackMemory = "DDR2";}
hi ben!
Thanks a lot, it works fine.. and i am able to run my application now..