This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Changes in the Syslink Platform Samples

In Syslink 2.00.03.82, I notice that the Platform.xdc file for the TI816 has been changed to:

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, space: "code/data",access: "RWX"}],
                ["HOST_DSP_NOTIFYMEM",
                    {name: "HOST_DSP_NOTIFYMEM", base: 0x8CF00000, len: 0x00100000, space: "code/data",access: "RWX"}],
                ["SR0",
                    {name: "SR0",         base: 0x8E000000, len: 0x01000000, space: "code/data",access: "RWX"}],
                ["SR1",
                    {name: "SR1",         base: 0x8D000000, len: 0x00C00000, space: "code/data",access: "RWX"}],
            ],
            l1DMode:"32k",
            l1PMode:"32k",
            l2Mode:"256k",
    });

In particular, there is now an extra segment for "HOST_DSP_NOTIFYMEM".  I understand that notify is now in the Linux kernel, but does the DSP need to allocate some particular region for notify?  Am I going to have problems using the following:

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";

}

Lee

 

  • Lee,

    The HOST_DSP_NOTIFYMEM in the Platform.xdc file is there to create a hole for the Linux kernel notify driver.  It will prevent the linker from allocating any DSP sections in that small chunk of memory.  As long as your memory map does not overlap with that region, you should be ok.  However, it looks like the EXT_RAM in your second Platform file overlaps with the Notify driver memory.  So yes, it looks like you could have problems.

    Best regards,

        Janet

     

  • janet said:
    The HOST_DSP_NOTIFYMEM in the Platform.xdc file is there to create a hole for the Linux kernel notify driver.  It will prevent the linker from allocating any DSP sections in that small chunk of memory.  As long as your memory map does not overlap with that region, you should be ok.  However, it looks like the EXT_RAM in your second Platform file overlaps with the Notify driver memory.  So yes, it looks like you could have problems.

    My app seems to be running ok built using the Platform file that I described, however, how does the Linux kernel notify driver know what piece of memory has been allocated for it?  Has the Linux kernel been built assuming that notify uses a particular chuck of memory, or is this something that may be configured later?  For example, it appears that I must define SR0 to use IPC_SR_COMMON  at 0x9F7000000.  I have tried changing this and messageQ stops working.  The DSP app knows what has been defined via the .cfg configuration file including shared region definitions.  I know that these are getting communicated to the Linux host as I can use sharedregion_getentry() from the host to see what has been defined.  I've been using Syslink for several months now, but some of the details on how it works and how to configure it still escape me.

    Lee