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.

TMDSLCDK138: and TMDSLCDK6748 questions around

Part Number: TMDSLCDK138
Other Parts Discussed in Thread: OMAP-L138, TMS320C6748, OMAPL138,

Hello everyone,

     I have some questions about these two development kits, processors on them and programming them by Code Composer Studio, maybe I overlooked some existing topics or informations in some application notes, in that case please excuse me.

1) Does TMS320C6748 and OMAP-L138 processors on these kits have internal program memory flash such as ROM? Or these processors must have always external memory for program? I looked at this and in datasheets I didn't find any formulations about internal ROM program memory. Reason why I ask for this is memory write cycles in kits when I fiddling with them...

2) This question is related to first one, is related to memories. When I load program to development kits by debugger in CCS is it present in processor and running until I press reset button, then program is lost. Is it possible configure OMAPL138.cmd or C6748.cmd files to load program into boards way like program will be stored in RAM and reset cause only "restart program from zero address" and second way program store into some ROM memory (if I looked correctly - NAND flash on board) and reset function similar functionality and turn off supply doesn't leads to program lost.

My OMAPL138.cmd file from StarterWare looks:

-stack 0x8000 /* SOFTWARE STACK SIZE */
-heap 0x2000 /* HEAP AREA SIZE */
-e Entry

/* SPECIFY THE SYSTEM MEMORY MAP */

MEMORY
{
DDR_MEM : org = 0xC1080000 len = 0x2F7FFFF /* RAM */
}

/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */

SECTIONS
{
.init : {
system_config.lib<init.obj> (.text)
} load > 0xC1080000

.text : load > DDR_MEM /* CODE */
.data : load > DDR_MEM
.bss : load > DDR_MEM /* GLOBAL & STATIC VARS */
RUN_START(bss_start),
RUN_END(bss_end)
.const : load > DDR_MEM /* SOFTWARE SYSTEM STACK */
.cinit : load > DDR_MEM /* SOFTWARE SYSTEM STACK */
.stack : load > 0xC3FF7FFC /* SOFTWARE SYSTEM STACK */

}

and after replacing by default OMAPL138.cmd from CCS looks:

MEMORY
{
#ifdef DSP_CORE /* DSP exclusive memory regions */

DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 DSP local ROM */
DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 DSP local RAM */
DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 DSP local Program RAM */
DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 DSP local Data RAM */

#endif

SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 Shared Internal ROM */
SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */
SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32kB L1 Shared Internal Program RAM */
SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32kB L1 Shared Internal Data RAM */
EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM Data (CS0) */
EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB Async Data (CS2) */
EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB Async Data (CS3) */
EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB Async Data (CS4) */
EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB Async Data (CS5) */
SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */
DDR2 o = 0xC0000000 l = 0x20000000 /* 512MB DDR2 Data */

#ifndef DSP_CORE /* ARM exclusive memory regions */

ARMROM o = 0xFFFD0000 l = 0x00010000 /* 64kB ARM local ROM */
ARMRAM o = 0xFFFF0000 l = 0x00002000 /* 8kB ARM local RAM */

#endif
}

SECTIONS
{
.text > SHRAM
.stack > SHRAM
.bss > SHRAM
.cio > SHRAM
.const > SHRAM
.data > SHRAM
.switch > SHRAM
.sysmem > SHRAM
.far > SHRAM
.args > SHRAM
.ppinfo > SHRAM
.ppdata > SHRAM

/* TI-ABI or COFF sections */
.pinit > SHRAM
.cinit > SHRAM

/* EABI sections */
.binit > SHRAM
.init_array > SHRAM
.neardata > SHRAM
.fardata > SHRAM
.rodata > SHRAM
.c6xabi.exidx > SHRAM
.c6xabi.extab > SHRAM
}

I am a little bit confused what do I have to load and where to make it work like the ways I mentioned, because I am newbie to these processors. And can bad addresses in cmd file damage processor or is there something to pay attention?

3) Is it possible that CCS in version 6.0.1.00040 on Windows 7 64 bit can cause some errors:

ARM9_0: File Loader: Data verification failed at address 0xC1080000 Please verify target memory and memory map

ARM9_0: GEL: File: OMAPL138_ARM9_GPIO.out: a data verification error occurred, file load failed.

when I load demo GPIO program onto OMAP-L138 with StarterWare OMAPL138.cmd file from point 2)? When I compressed project into ZIP and imports it on CCS6.0.1.00040 on Windows 7 32bit these errors doesn't appear, although sometimes I cannot reload program in processor from CCS Debug when program is running, it seems like debugger cannot connect it but on second test ussually connects also work reset the processor (it erase program like it was mentioned in 1) question). TMS320C6748 I load without any problems on both Windows versions and always works, on OMAP-L138 I got on 64 bit Windows into case when it seems like program was successfully loaded into ARM9 and stepping in debugger working but LEDs on board didn't changes its states.

4) The last question is about difference OMAP-L138 and TMS320C6748. If I understand it, the demo programs on OMAP-L138 looks like demo for C6748, but on OMAP-L138 I must run always ARM version and then optionally C6748 with some additional functionality versus C6748 where I run only one program? Or is it possible load only C6748 program on OMAP-L138 and it will be working (I failed on it).

Thank you in advance for your answers

Best regards

Josef K.

  • Hi Josef,

    Yes these devices have ROM but you cannot write to it. You can however use the ROM bootloader to boot your application from various sources, including flash. When you do this the application will automatically boot and run at board power-up which I believe is what you are looking to do. 

    With multi-core devices, doing a CCS reset is typically not sufficient, you will need to do either a system reset or power-cycle your board between debug sessions. 

    Having "bad addresses" in your linker cmd file won't damage the device but it will prevent you from loading the code - CCS should throw an error when this happens. 

    The data verification error sounds like a case of not having the correct memory map in your linker cmd file, or not properly resetting your board (as mentioned above). It could also occur if something is already running on your board at power-up (check your boot mode pins).

    C6748 applications can indeed run on the OMAPL138, but the ARM needs to boot up first and take the DSP out of reset. This is handled by the GEL file when connecting to the cores via CCS, you should see a message in the console window indicating the DSP has been taken out of reset. When using the bootloader, the bootloader will take care of this before loading the DSP core.

    I recommend reviewing this FAQ, particularly the Bootloader section, for guidance on what I mentioned above. 

    [FAQ] OMAP-L13x/C674x Resources and FAQ

    If you still have any questions or doubts, please let me know. 

    Hope this helps,
    Sahin

  • Hello Sahin,

         thanks for your answer, posted link and spend time also. I fiddled today with TMDSLCDK138 also and identified the problems. At early time it seems that only problem (data verification) was in some inconsistent installation of CCS IDE, so I uninstall it and reinstall it and it solve my problem for some time, but when I added to my project watchdog timer, the error from FTDI was present. It only solve disconnect power supply from board and reconnect, then XDS100V2 debugger load program successfully. So I tried uninstall CCS and install it some times, with reboot of computer also and also remove XDS100V2 device from Device Manager also with software, also FTDI drivers from program list and I also accidentally damaged for some time Windows installation, but I recover it without any data lost. And then I try to import GPIO demo from StarterWare and this demo didn't cause this error, so I comment line with WatchdogTimerActivate in my project and error didn't occur. So I think to have to focus on WTD initialization and using... But I am a little bit confused that on other computer (also Windows 7 and 64 bit) this error didn't occured and watchdog timer was present, but I think that it can be random positive situation, because at first time this error wasn't present neither on both computers. But as you said the debugger reset is typically not suficient, so I will remember it.

    Thanks Josef K.