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.

Compiler/TMS320C6678: Initialization of const variables

Part Number: TMS320C6678
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI C/C++ Compiler

Hello,


Abstract of the Problem:

We are updating all libs of our c6678-Project to newer versions which are coming with the the "sdk-rtos-c667x-evm-04.03.00.05". In the current
state the MAR-CPU-Registers are corrupted when reaching the "main" after "_c_int00". Depending on the values, some Core's won't see the
MAGIC_ADDRESS, because thier addressspace became unwanted cacheable in Core_0. The DSP is booting from a SPI-Flash.

///////////////////////////////////////////////////////////////////////////////

Version/Build details:

Custom-Board. Our Project is compiled with the 8.1.3 Compiler in CCS 8.1.0.00011.

Probably most relevant version changes related to this Problem:

Old:
      XDCtools:             3.25.4.88
      SYS/BIOS:             6.35.4.50
      (PDK 6678:            1.1.2.6)

New:
      XDCtools:             3.50.03.33
      SYS/BIOS:             6.52.00.12
      (PDK 6678:            1.1.2.6)

PDK isn't changed to the PDK C667x 2.0.9 because we can't currently build with this version in the moment.

Question0: Is a change neccessary?

The error occurs with BIOS config "instrumented" and "debug". The project is compiled in both cases without optimization.


The constants for MAR's are placed in *.map:

.const.3   0    0c2aef80    00011d44     UNINITIALIZED
"other stuff"
0c2bba70    00000400     firmware_pe66.oe66 (.const:ti_sysbios_family_c66_Cache_marvalues__C)
"more other stuff"

Sidenote0: const.3 is placed in MSMC-Ram
Sidenote1: When looking into firmware_pe66.c we can see the correct default values for the token "ti_sysbios_family_c66_Cache_marvalues__C"
Question1: What is the exact meaning of "UNINITIALIZED"?

The MAR's Hardware addresses are beginning at: 0x01848000 (MAR0-MAR255)

///////////////////////////////////////////////////////////////////////////////

What happens with screens:

The first screen shows the state of the addresses when we reached the "_c_int00" routine. The constants are not loaded. The MAR's have default values.
This is funny because they have exactly the same values what should be written anyway, when the constants are loaded.


The second screen shows the state of the addresses when we reached the "main" function. The constants are loaded. The MAR's are broken, because the last
nibble comes from the uninitialized constants. With the Debugger we could track that the MAR's are indeed initialized with the uninitialized constant
values. So the constants must be loaded sometime later.




With the old libraries we obviously didn't had this problem.

Question2: Are the constants loaded too late or the initialization of the MAR's is too early?
Question3: When should the constants be loaded?
Question4: Who is responsible for loading the constants?

Sidenote: Reseting the CPU/System and loading the *.out into the Core0 didn't change anything.
Sidenote: When the constants are loaded (second screen state), then resetting the system causes all the Cores to start correctly.

If more informations are necessary, please ask.


Thanks and kind regards,
Lukasz


  • Hi,

    I've notified the RTOS team. They will post their feedback directly here.

    Best Regards,
    Yordan
  • Lukasz,

    Did both setups use the same compiler version & compiler/linker settings? Also, were both loaded the exact same way. Do you have a small example project take demonstrates the problem?

    Todd
  • Hello,

    sorry for the late response, but i was on vaccation. Responses will come now faster, promise.

    To your questions:

    1) Yes both setups are compiled with the 8.1.3 compiler and no linker settings were changed.
    2) Both setups started from the SPI-Flash.

    Now the last question:

    To create the small example, i stripped everything from our project, except the main. After doing that, the problem was gone, also the constants were correctly initialized. Per method of elimination i pinned it down, it seems that the JPEG-Encoder is the culprit.

    We are using the the Ti JPEG Baseline Profile Encoder (v02.02.03) for C66x. This version is from 2014, but we cant find anything newer and sources for this lib are not available.

    I had to fix the includes of the idmjpge.h to compile the project without errors, nothing else were changed.

    #include <std.h>

    is changed to

    #include <stdint.h>
    #include <xdc/std.h>


    Questions:

    1) Does an actual version of this encoder exist, if yes how can we receive it?
    2) Is the small example for problem demonstration still necessary?


    If more informations are needed, please ask.

    Thanks and kind regards,
    Lukasz
  • Lukasz,

    Did the small example still include SYS/BIOS with the device configuration (note device settings, not tasks, semaphores, etc.)?

    Todd
  • Hello Todd,

    yes, the SYS/BIOS was still included into the project and no device configuration was changed.

    Other details:

    - Some basic initialization was done (PLL/Caching)

    - One Semaphore was created.

    - BIOS_start() wasnt called, so Tasks didnt run.

    The problem was also gone after removing only the JPEG-Encoder, but everything else remaining and used as usual (IPC, NDK, BIOS, Image_Processing_Pipeline minus the JPEG-Encoder). With removing, i mean replacing the function calls to the JPEG-Encoder with stubs and removing the #include of the headerfile.

    Kind regards,

    Lukasz

  • Hello,

    any news regarding the problem?

    Kind regards,

    Lukasz

  • Hello,

    I am Benny and responsible for software development in our company. Are there any news about the problem Lukasz explained? Can we assist you somehow, e.g. with an example project or other information you might need?

    Thanks in advance
    Benny
  • Sorry for the delay. Can you please provide a small sample project with the behavior you are describing?
  • The stripped project is attached to this replay, the password will arrive through pm.


    The "jpeg.c" file is important for reproduction of this error. Use the "#define NO_ERROR" for switching between correct and misbehaviour.
    After building, the "DSP_Firmware.out" and "DSP_Firmware.map" can both be found under "DSP_Firmware/Release/".

    One particular interesting thing i found is, that with the JPEG stuff the "ti_sysbios_family_c66_Cache_marvalues__C" are placed in ".const.2"
    section, but the ".const.2" section is "UNINITIALIZED". When "NO_ERROR" is 1, then "ti_sysbios_family_c66_Cache_marvalues__C" are placed in
    ".const" section, but without the "UNINITIALIZED" keyword.

    It seems that 15Mb are too much for this forum, so i uploaded it here:

    https://wetransfer.com/downloads/a9aa218d95e149fe9b37d1cfa57f5ef920180921144125/bc04f693f7500710f87837a18e75a3c620180921144125/80caa5


    Regards,

    Lukasz

  • WeTransfer deletes files after 7 days, so i uploaded the zip again here:

    s000.tinyupload.com/index.php

  • Any news regarding the problem?

  • Hi Lukasz,

    Sorry. I dropped the ball on this one. I'll try to get some resolution on it.

    Todd
  • Hello Todd,

    since its nearly 2 weeks since your last replay, could you give at least some feedback, when the ball will be picked up??

    I can give you in the meantime additional infos:

    It looks like the JPEG-Encoder is only the trigger for the misbeaviour. When the encoder is not used, then the ".const" section is not loaded through the ".cinit" section, so its loaded at "boot time"? With the encoder the ".const" section will be loaded at "run time" and then, the misbevaoiur occurs, because it seems like it happens too late and looks like a bug.

    I can work around this problem, when i change the Linker option "Initialization model" from "ROM" to "RAM" so that every initialization happens at "boot time".

    Kind regards,
    Lukasz
  • Hi Lukasz, could you please share with us linker cmd files for both working case and non-working (after porting to newer RTOS tools) case?
    Want to see if this could give us some additional clues.

    thank you,
    Paula
  • Hi Paula,

    did you try the minimal version i uploaded? With that you can reproduce the behaviour. In the minimal version the linker.cmd stays the same between working/non-working versions. I uploaded the old/new command files of the complete project to compare.

    The pw for the minimal project is: inotec

    OLD:

    linkerOLD_cmd.txt
    /*
     * Do not modify this file; it is automatically generated from the template
     * linkcmd.xdt in the ti.targets.elf package and will be overwritten.
     */
    
    /*
     * put '"'s around paths because, without this, the linker
     * considers '-' as minus operator, not a file name character.
     */
    
    
    -l"E:\Projekte\CCS\H12_DSP_prj\DSP_Firmware\Release\configPkg\package\cfg\firmware_pe66.oe66"
    -l"C:\ti\ipc_1_25_00_04\packages\ti\sdo\ipc\lib\ipc\instrumented\ipc.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\hal\timer_bios\lib\hal_timer_bios.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\os\lib\os.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\hal\userled_stub\lib\hal_userled_stub.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\hal\eth_stub\lib\hal_eth_stub.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\tools\cgi\lib\cgi.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\tools\hdlc\lib\hdlc.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\tools\console\lib\console_min_ipv4.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\netctrl\lib\netctrl_ipv4.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\nettools\lib\nettool_ipv4.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\hal\ser_stub\lib\hal_ser_stub.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\tools\servers\lib\servers_min_ipv4.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\ndk_2_24_01_18\packages\ti\ndk\stack\lib\stk_ppp_pppoe.ae66"
    -l"C:\ti\bios_6_35_04_50\packages\ti\sysbios\lib\sysbios\instrumented\sysbios.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\transport\ndk\nimu\lib\release\ti.transport.ndk.nimu.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\release\ti.platform.evm6678l.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\drv\pa\lib\ti.drv.pa.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\drv\srio\lib\ti.drv.srio.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.ae66"
    -l"C:\ti\xdctools_3_25_04_88\packages\ti\targets\rts6000\lib\ti.targets.rts6000.ae66"
    -l"C:\ti\xdctools_3_25_04_88\packages\ti\targets\rts6000\lib\boot.ae66"
    
    --retain="*(xdc.meta)"
    
    
    --args 0x0
    -heap  0x0
    -stack 0x1000
    
    MEMORY
    {
        L2SRAM (RWX) : org = 0x800000, len = 0x60000
        MSMCSRAM (RWX) : org = 0xc000000, len = 0x400000
        DDR3 (RW) : org = 0x80000000, len = 0x80000000
    }
    
    /*
     * Linker command file contributions from all loaded packages:
     */
    
    /* Content from xdc.services.global (null): */
    
    /* Content from xdc (null): */
    
    /* Content from xdc.corevers (null): */
    
    /* Content from xdc.shelf (null): */
    
    /* Content from xdc.services.spec (null): */
    
    /* Content from xdc.services.intern.xsr (null): */
    
    /* Content from xdc.services.intern.gen (null): */
    
    /* Content from xdc.services.intern.cmd (null): */
    
    /* Content from xdc.bld (null): */
    
    /* Content from ti.targets (null): */
    
    /* Content from ti.targets.elf (null): */
    
    /* Content from xdc.rov (null): */
    
    /* Content from xdc.runtime (null): */
    
    /* Content from ti.targets.rts6000 (null): */
    
    /* Content from ti.sysbios.interfaces (null): */
    
    /* Content from ti.sysbios.family (null): */
    
    /* Content from xdc.services.getset (null): */
    
    /* Content from ti.sysbios.hal (null): */
    
    /* Content from ti.csl (null): */
    
    /* Content from ti.ndk.rov (null): */
    
    /* Content from ti.drv.qmss (null): */
    
    /* Content from ti.drv.cppi (null): */
    
    /* Content from ti.drv.srio (null): */
    
    /* Content from ti.sdo.ipc.interfaces (null): */
    
    /* Content from xdc.runtime.knl (null): */
    
    /* Content from ti.sdo.ipc.family (null): */
    
    /* Content from ti.drv.pa (null): */
    
    /* Content from ti.platform.evmc6678l (null): */
    
    /* Content from ti.transport.ndk (null): */
    
    /* Content from ti.sysbios.family.c66 (ti/sysbios/family/c66/linkcmd.xdt): */
    
    /* Content from ti.sysbios.rts (null): */
    
    /* Content from ti.sysbios (null): */
    
    /* Content from ti.sysbios.knl (null): */
    
    /* Content from ti.sysbios.family.c64p (ti/sysbios/family/c64p/linkcmd.xdt): */
    
    /* Content from ti.sysbios.family.c66.tci66xx (null): */
    
    /* Content from ti.sysbios.gates (null): */
    
    /* Content from ti.sysbios.heaps (null): */
    
    /* Content from ti.sdo.utils (null): */
    
    /* Content from ti.sysbios.syncs (null): */
    
    /* Content from ti.sysbios.xdcruntime (null): */
    
    /* Content from ti.sysbios.family.c62 (null): */
    
    /* Content from ti.sysbios.timers.timer64 (null): */
    
    /* Content from ti.sysbios.family.c64p.tci6488 (null): */
    
    /* Content from ti.ndk (null): */
    
    /* Content from ti.ndk.hal.timer_bios (null): */
    
    /* Content from ti.ndk.os (null): */
    
    /* Content from ti.ndk.hal.userled_stub (null): */
    
    /* Content from ti.ndk.hal.eth_stub (null): */
    
    /* Content from ti.ndk.tools.cgi (null): */
    
    /* Content from ti.ndk.tools.hdlc (null): */
    
    /* Content from ti.ndk.stack (null): */
    
    /* Content from ti.ndk.tools.console (null): */
    
    /* Content from ti.ndk.netctrl (null): */
    
    /* Content from ti.ndk.nettools (null): */
    
    /* Content from ti.ndk.hal.ser_stub (null): */
    
    /* Content from ti.ndk.tools.servers (null): */
    
    /* Content from ti.ndk.config (null): */
    
    /* Content from ti.sysbios.utils (null): */
    
    /* Content from ti.catalog.c6000 (null): */
    
    /* Content from ti.catalog (null): */
    
    /* Content from ti.catalog.peripherals.hdvicp2 (null): */
    
    /* Content from xdc.platform (null): */
    
    /* Content from xdc.cfg (null): */
    
    /* Content from ti.platforms.generic (null): */
    
    /* Content from H12_MB_revB (null): */
    
    /* Content from ti.sdo.ipc.heaps (null): */
    
    /* Content from ti.sdo.ipc (ti/sdo/ipc/linkcmd.xdt): */
    
    SECTIONS
    {
        ti.sdo.ipc.SharedRegion_0:  { . += 0x80000;} run > 0xc000000, type = NOLOAD
    }
    
    
    /* Content from ti.sdo.ipc.family.c647x (null): */
    
    /* Content from ti.sdo.ipc.notifyDrivers (null): */
    
    /* Content from ti.sdo.ipc.transports (null): */
    
    /* Content from ti.sdo.ipc.nsremote (null): */
    
    /* Content from ti.sdo.ipc.gates (null): */
    
    /* Content from configPkg (null): */
    
    
    /*
     * symbolic aliases for static instance objects
     */
    xdc_runtime_Startup__EXECFXN__C = 1;
    xdc_runtime_Startup__RESETFXN__C = 1;
    TSK_idle = ti_sysbios_knl_Task_Object__table__V + 76;
    
    SECTIONS
    {
        .text: load >> MSMCSRAM
        .ti.decompress: load > MSMCSRAM
        .stack: load > L2SRAM
        GROUP: load > L2SRAM
        {
            .bss:
            .neardata:
            .rodata:
        }
        .cinit: load > MSMCSRAM
        .pinit: load >> L2SRAM
        .init_array: load > L2SRAM
        .const: load >> MSMCSRAM
        .data: load >> L2SRAM
        .fardata: load >> L2SRAM
        .switch: load >> L2SRAM
        .sysmem: load > L2SRAM
        .far: load >> L2SRAM
        .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x0; }
        .cio: load >> L2SRAM
        .ti.handler_table: load > L2SRAM
        .c6xabi.exidx: load > L2SRAM
        .c6xabi.extab: load >> L2SRAM
        systemHeap: load > L2SRAM
        nimuHeap: load > MSMCSRAM
        .sharedMem: load > MSMCSRAM
        .ethIOMem: load > MSMCSRAM
        .srioMem: load > MSMCSRAM
        .far:NDK_PACKETMEM: load > MSMCSRAM
        .far:NDK_MMBUFFER: load > MSMCSRAM
        .far:NDK_OBJMEM: load > MSMCSRAM
        .far:taskStackSection: load > L2SRAM
        .qmss: load > L2SRAM
        .cppi: load > L2SRAM
        .resmgr_memregion: load > L2SRAM align = 0x80
        .resmgr_handles: load > L2SRAM align = 0x10
        .resmgr_pa: load > L2SRAM align = 0x8
        .nimu_eth_ll2: load > L2SRAM
        platform_lib: load > MSMCSRAM
        .code: load > MSMCSRAM
        .vecs: load > MSMCSRAM
        xdc.meta: load > MSMCSRAM, type = COPY
    
    }
    

    NEW:

    linkerNEW_cmd.txt
    /*
     * Do not modify this file; it is automatically generated from the template
     * linkcmd.xdt in the ti.targets.elf package and will be overwritten.
     */
    
    /*
     * put '"'s around paths because, without this, the linker
     * considers '-' as minus operator, not a file name character.
     */
    
    
    -l"E:\Projekte\CCS\H12_DSP_prj_update\DSP_Firmware\Release\configPkg\package\cfg\firmware_pe66.oe66"
    -l"C:\ti\ipc_3_47_01_00\packages\ti\sdo\ipc\lib\ipc\instrumented\ipc.ae66"
    -l"C:\ti\ipc_3_47_01_00\packages\ti\sdo\utils\lib\utils\instrumented\utils.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\hal\timer_bios\lib\hal_timer_bios.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\os\lib\os.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\hal\userled_stub\lib\hal_userled_stub.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\hal\eth_stub\lib\hal_eth_stub.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\tools\cgi\lib\cgi.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\tools\hdlc\lib\hdlc.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\tools\console\lib\console_min_ipv4.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\netctrl\lib\netctrl_ipv4.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\nettools\lib\nettool_ipv4.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\hal\ser_stub\lib\hal_ser_stub.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\tools\servers\lib\servers_min_ipv4.ae66"
    -l"C:\ti\ndk_2_26_00_08\packages\ti\ndk\stack\lib\stk_ppp_pppoe.ae66"
    -l"E:\Projekte\CCS\H12_DSP_prj_update\DSP_Firmware\src\sysbios\sysbios.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\transport\ndk\nimu\lib\c6678\c66\release\ti.transport.ndk.nimu.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\platform\evmc6678l\platform_lib\lib\release\ti.platform.evm6678l.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\drv\pa\lib\c66\ti.drv.pa.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\drv\srio\lib\c66\ti.drv.srio.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\drv\qmss\lib\c6678\c66\ti.drv.qmss.c6678.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\drv\cppi\lib\c6678\c66\ti.drv.cppi.c6678.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\drv\rm\lib\c66\ti.drv.rm.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\csl\lib\c6678\c66\release\ti.csl.ae66"
    -l"C:\ti\pdk_c667x_2_0_8\packages\ti\osal\lib\tirtos\c6678\c66\release\ti.osal.ae66"
    -l"C:\ti\bios_6_52_00_12\packages\ti\targets\rts6000\lib\ti.targets.rts6000.ae66"
    -l"C:\ti\bios_6_52_00_12\packages\ti\targets\rts6000\lib\boot.ae66"
    
    --retain="*(xdc.meta)"
    
    
    --args 0x0
    -heap  0x0
    -stack 0x1000
    
    MEMORY
    {
        L2SRAM (RWX) : org = 0x800000, len = 0x60000
        MSMCSRAM (RWX) : org = 0xc000000, len = 0x400000
        DDR3 (RW) : org = 0x80000000, len = 0x80000000
    }
    
    /*
     * Linker command file contributions from all loaded packages:
     */
    
    /* Content from xdc.services.global (null): */
    
    /* Content from xdc (null): */
    
    /* Content from xdc.corevers (null): */
    
    /* Content from xdc.shelf (null): */
    
    /* Content from xdc.services.spec (null): */
    
    /* Content from xdc.services.intern.xsr (null): */
    
    /* Content from xdc.services.intern.gen (null): */
    
    /* Content from xdc.services.intern.cmd (null): */
    
    /* Content from xdc.bld (null): */
    
    /* Content from ti.targets (null): */
    
    /* Content from ti.targets.elf (null): */
    
    /* Content from xdc.rov (null): */
    
    /* Content from xdc.runtime (null): */
    
    /* Content from ti.targets.rts6000 (null): */
    
    /* Content from ti.sysbios.interfaces (null): */
    
    /* Content from ti.sysbios.family (null): */
    
    /* Content from xdc.services.getset (null): */
    
    /* Content from ti.osal (null): */
    
    /* Content from ti.csl (null): */
    
    /* Content from ti.ndk.rov (null): */
    
    /* Content from ti.drv.rm (null): */
    
    /* Content from ti.drv.cppi (null): */
    
    /* Content from ti.drv.qmss (null): */
    
    /* Content from ti.drv.srio (null): */
    
    /* Content from xdc.runtime.knl (null): */
    
    /* Content from ti.sdo.ipc.interfaces (null): */
    
    /* Content from ti.sdo.ipc.family (null): */
    
    /* Content from ti.drv.pa (null): */
    
    /* Content from ti.platform.evmc6678l (null): */
    
    /* Content from ti.transport.ndk.nimu (null): */
    
    /* Content from ti.sysbios.family.c62 (null): */
    
    /* Content from ti.ndk (null): */
    
    /* Content from ti.ndk.hal.timer_bios (null): */
    
    /* Content from ti.ndk.os (null): */
    
    /* Content from ti.ndk.hal.userled_stub (null): */
    
    /* Content from ti.ndk.hal.eth_stub (null): */
    
    /* Content from ti.ndk.tools.cgi (null): */
    
    /* Content from ti.ndk.tools.hdlc (null): */
    
    /* Content from ti.ndk.stack (null): */
    
    /* Content from ti.ndk.tools.console (null): */
    
    /* Content from ti.ndk.netctrl (null): */
    
    /* Content from ti.ndk.nettools (null): */
    
    /* Content from ti.ndk.hal.ser_stub (null): */
    
    /* Content from ti.ndk.tools.servers (null): */
    
    /* Content from ti.sysbios.family.c64p.tci6488 (null): */
    
    /* Content from ti.catalog.c6000 (null): */
    
    /* Content from ti.catalog (null): */
    
    /* Content from ti.catalog.peripherals.hdvicp2 (null): */
    
    /* Content from xdc.platform (null): */
    
    /* Content from xdc.cfg (null): */
    
    /* Content from ti.platforms.generic (null): */
    
    /* Content from H12_MB_revB (null): */
    
    /* Content from ti.sysbios (null): */
    
    /* Content from ti.sysbios.hal (null): */
    
    /* Content from ti.sysbios.rts (ti/sysbios/rts/linkcmd.xdt): */
    
    /* Content from ti.sysbios.rts.ti (ti/sysbios/rts/ti/linkcmd.xdt): */
    
    /* Content from ti.sysbios.family.c64p (ti/sysbios/family/c64p/linkcmd.xdt): */
    
    /* Content from ti.sysbios.knl (null): */
    
    /* Content from ti.sysbios.timers.timer64 (null): */
    
    /* Content from ti.sysbios.family.c66 (ti/sysbios/family/c66/linkcmd.xdt): */
    ti_sysbios_family_c66_Cache_l1dSize = 32768;
    ti_sysbios_family_c66_Cache_l1pSize = 32768;
    ti_sysbios_family_c66_Cache_l2Size = 131072;
    
    /* Content from ti.sysbios.family.c66.tci66xx (null): */
    
    /* Content from ti.ndk.config (null): */
    
    /* Content from ti.sysbios.gates (null): */
    
    /* Content from ti.sysbios.heaps (null): */
    
    /* Content from ti.sdo.utils (null): */
    
    /* Content from ti.sysbios.syncs (null): */
    
    /* Content from ti.sysbios.xdcruntime (null): */
    
    /* Content from ti.sysbios.utils (null): */
    
    /* Content from ti.sdo.ipc.heaps (null): */
    
    /* Content from ti.sdo.ipc (ti/sdo/ipc/linkcmd.xdt): */
    
    SECTIONS
    {
        ti.sdo.ipc.SharedRegion_0:  { . += 0x80000;} run > 0xc000000, type = NOLOAD
    }
    
    /* Content from ti.sdo.ipc.family.c647x (null): */
    
    /* Content from ti.sdo.ipc.notifyDrivers (null): */
    
    /* Content from ti.sdo.ipc.transports (null): */
    
    /* Content from ti.sdo.ipc.nsremote (null): */
    
    /* Content from ti.sdo.ipc.gates (null): */
    
    /* Content from configPkg (null): */
    
    /* Content from xdc.services.io (null): */
    
    /* Content from ti.ipc.remoteproc (ti/ipc/remoteproc/linkcmd.xdt): */
    
    
    
    
    /*
     * symbolic aliases for static instance objects
     */
    xdc_runtime_Startup__EXECFXN__C = 1;
    xdc_runtime_Startup__RESETFXN__C = 1;
    
    SECTIONS
    {
        .text: load >> MSMCSRAM
        .ti.decompress: load > MSMCSRAM
        .stack: load > L2SRAM
        GROUP: load > L2SRAM
        {
            .bss:
            .neardata:
            .rodata:
        }
        .cinit: load > MSMCSRAM
        .pinit: load >> L2SRAM
        .init_array: load > L2SRAM
        .const: load >> MSMCSRAM
        .data: load >> L2SRAM
        .fardata: load >> L2SRAM
        .switch: load >> L2SRAM
        .sysmem: load > L2SRAM
        .far: load >> L2SRAM
        .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x0; }
        .cio: load >> L2SRAM
        .ti.handler_table: load > L2SRAM
        .c6xabi.exidx: load > L2SRAM
        .c6xabi.extab: load >> L2SRAM
        systemHeap: load > L2SRAM
        nimuHeap: load > MSMCSRAM
        .sharedMem: load > MSMCSRAM
        .ethIOMem: load > MSMCSRAM
        .srioMem: load > MSMCSRAM
        .far:NDK_PACKETMEM: load > MSMCSRAM
        .far:NDK_MMBUFFER: load > MSMCSRAM
        .far:NDK_OBJMEM: load > MSMCSRAM
        .far:taskStackSection: load > L2SRAM
        .qmss: load > L2SRAM
        .cppi: load > L2SRAM
        .resmgr_memregion: load > L2SRAM align = 0x80
        .resmgr_handles: load > L2SRAM align = 0x10
        .resmgr_pa: load > L2SRAM align = 0x8
        .nimu_eth_ll2: load > L2SRAM
        platform_lib: load > MSMCSRAM
        .code: load > MSMCSRAM
        .vecs: load > MSMCSRAM
        xdc.meta: load > MSMCSRAM, type = COPY
    
    }
    

    Kind regards,

    Lukasz

  • Lukasz, unfortunately, after checking internally we are not supporting C66x codecs directly but via 3rd parties. I will send you our 3rd parties information in a private message, so you can contact them.

    I believe the solution would be to rebuild JPEG encoder library with latest tools. And taking care .cons is located in the correct memory section so it gets initialized correctly.

    Another idea could be try to force .cons to be located in another section, via CCS View/Edit platforms in RTSC tools.

    A related thread for your information:

    Or you can add  a modified linker in CCS *.cfg. via "Program.linkTemplate". I documented a high level steps/tips in this app note sections 4.2.1 and 4.2.2. In that app note, we moved some critical sections to a closer memory using an linker *.xdt file

    thank you,

    Paula

  • Hi Paula,

    thanks for the infos/ideas. I need to discuss the further steps with the team leader, since changing the "Initialization model" from "ROM" to "RAM" also works fine.

    Thanks for the help and kind regards,
    Lukasz