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.

UART BOOT loads corrupted data.

Hello ,
I am having a problem with an AIS software(including SYS/BIOS)  loaded by RS232 with the PC AIS application.
I am using C6748.
Using only internal memory (L2 only).
Loading is OK but the software itself doesn’t run.
Its seems like some of the code (the start of the code) is being run over by CCS or SYS/BIOS automatic code generation. (below are explanations and screenshots).
For debugging this issue I have put an endless loop at the first line of the code. (task with the highest priority).
1. I have loaded the software via UART. (The code should loop endlessly).
2. I have connected a JTAG ICE without powering off or resetting the system.
3. I have loaded the symbols.
4. I have put a Breakpoint in the endless loop and run the code.
The code stopped at the loop.
5. I have opened the assembly view and looked at function which is called just after my endless loop.
6. I have saved an image of this view.
7. By changing a value in the endless loop I have managed to get out of the endless loop.
The Software has crashed.
8. I have loaded the same code (.out file) with the JTAG and run the code
The code stopped at the loop.
9. I have saved an image of the assembly view of the same function as before.
In that image the name of the function is the same but the code is different.

Summary : function code is OK when using JTAG but not ok when using UART loading!
It seems like xdc.meta  and xdc.noload (see map file below) run over the code.

Any suggestions ?

1. The code of the endless loop :
 
2. The assembly when loading with UART :
 
3. The assembly when loading with JTAG :
 
4. AIS file : In Blue the “Load Section” command , In RED the assembly code when loaded by UART.
 

5. AIS file : In RED the assembly code when loaded by JTAG
 
6. First lines of .map file :
******************************************************************************
               TMS320C6x Linker PC v7.4.4                     
******************************************************************************
>> Linked Mon Apr 20 12:01:07 2015

OUTPUT FILE NAME:   <TI_Target_Loader.out>
ENTRY POINT SYMBOL: "_c_int00"  address: 11811e60


MEMORY CONFIGURATION

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
  IROM                  11700000   00100000  00000000  00100000  R  X
  IRAM                  11800000   00040000  00020cf8  0001f308  RW X
  L1PSRAM               11e00000   00010000  00000000  00010000  RW X
  L1DSRAM               11f00000   00010000  00000000  00010000  RW 
  L3_CBA_RAM            80000000   00020000  00000000  00020000  RW X
  DDR_NO_CACHE          c0000000   01000000  00000000  01000000  RW X
  DDR                   c1000000   04000000  00000000  04000000  RW X


SEGMENT ALLOCATION MAP

run origin  load origin   length   init length attrs members
----------  ----------- ---------- ----------- ----- -------
11800000    11800000    00015240   00015240    r-x
  11800000    11800000    00015240   00015240    r-x .text
11815240    11815240    00004884   00000000    rw-
  11815240    11815240    00004884   00000000    rw- .far
11819ac8    11819ac8    00003c00   00000000    rw-
  11819ac8    11819ac8    00003c00   00000000    rw- .far:taskStackSection
1181d6c8    1181d6c8    000020ca   000020ca    r--
  1181d6c8    1181d6c8    000020ca   000020ca    r-- .const
1181f798    1181f798    00000784   00000784    rw-
  1181f798    1181f798    00000784   00000784    rw- .fardata
1181ff20    1181ff20    00000400   00000000    rw-
  1181ff20    1181ff20    00000400   00000000    rw- .stack
11820320    11820320    000000b0   000000b0    r--
  11820320    11820320    000000b0   000000b0    r-- .switch
11820400    11820400    00000200   00000200    r-x
  11820400    11820400    00000200   00000200    r-x .vecs
11820600    11820600    00000138   00000000    rw-
  11820600    11820600    00000120   00000000    rw- .cio
  11820720    11820720    00000018   00000000    rw- .bss
11820738    11820738    00000025   00000025    rw-
  11820738    11820738    00000025   00000025    rw- .neardata
11820760    11820760    0000003a   0000003a    r--
  11820760    11820760    0000003a   0000003a    r-- .rodata
1182079c    1182079c    0000059c   0000059c    r--
  1182079c    1182079c    0000059c   0000059c    r-- .cinit


SECTION ALLOCATION MAP

 output                                  attributes/
section   page    origin      length       input sections
--------  ----  ----------  ----------   ----------------
.init_array
*          0    11800000    00000000     UNINITIALIZED

xdc.meta   0    11800000    000000f0     COPY SECTION
                  11800000    000000f0     app_pe674.oe674 (xdc.meta)

xdc.noload
*          0    11800000    00001268     COPY SECTION
                  11800000    00001268     app_pe674.oe674 (xdc.noload)

.text      0    11800000    00015240    
                  11800000    00001c20     Flash_Tables_Driver.obj (.text)

  • Now with the pictures ....

    Hello ,
    I am having a problem with an AIS software(including SYS/BIOS)  loaded by RS232 with the PC AIS application.
    I am using C6748.
    Using only internal memory (L2 only).
    Loading is OK but the software itself doesn’t run.
    Its seems like some of the code (the start of the code) is being run over by CCS or SYS/BIOS automatic code generation. (below are explanations and screenshots).
    For debugging this issue I have put an endless loop at the first line of the code. (task with the highest priority).
    1. I have loaded the software via UART. (The code should loop endlessly).
    2. I have connected a JTAG ICE without powering off or resetting the system.
    3. I have loaded the symbols.
    4. I have put a Breakpoint in the endless loop and run the code.
    The code stopped at the loop.
    5. I have opened the assembly view and looked at function which is called just after my endless loop.
    6. I have saved an image of this view.
    7. By changing a value in the endless loop I have managed to get out of the endless loop.
    The Software has crashed.
    8. I have loaded the same code (.out file) with the JTAG and run the code
    The code stopped at the loop.
    9. I have saved an image of the assembly view of the same function as before.
    In that image the name of the function is the same but the code is different.

    Summary : function code is OK when using JTAG but not ok when using UART loading!
    It seems like xdc.meta  and xdc.noload (see map file below) run over the code.

    Any suggestions ?

    1. The code of the endless loop :
     
    2. The assembly when loading with UART :
     
    3. The assembly when loading with JTAG :
     
    4. AIS file : In Blue the “Load Section” command , In RED the assembly code when loaded by UART.
     

    5. AIS file : In RED the assembly code when loaded by JTAG
     
    6. First lines of .map file :
    ******************************************************************************
                   TMS320C6x Linker PC v7.4.4                     
    ******************************************************************************
    >> Linked Mon Apr 20 12:01:07 2015

    OUTPUT FILE NAME:   <TI_Target_Loader.out>
    ENTRY POINT SYMBOL: "_c_int00"  address: 11811e60


    MEMORY CONFIGURATION

             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      IROM                  11700000   00100000  00000000  00100000  R  X
      IRAM                  11800000   00040000  00020cf8  0001f308  RW X
      L1PSRAM               11e00000   00010000  00000000  00010000  RW X
      L1DSRAM               11f00000   00010000  00000000  00010000  RW 
      L3_CBA_RAM            80000000   00020000  00000000  00020000  RW X
      DDR_NO_CACHE          c0000000   01000000  00000000  01000000  RW X
      DDR                   c1000000   04000000  00000000  04000000  RW X


    SEGMENT ALLOCATION MAP

    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    11800000    11800000    00015240   00015240    r-x
      11800000    11800000    00015240   00015240    r-x .text
    11815240    11815240    00004884   00000000    rw-
      11815240    11815240    00004884   00000000    rw- .far
    11819ac8    11819ac8    00003c00   00000000    rw-
      11819ac8    11819ac8    00003c00   00000000    rw- .far:taskStackSection
    1181d6c8    1181d6c8    000020ca   000020ca    r--
      1181d6c8    1181d6c8    000020ca   000020ca    r-- .const
    1181f798    1181f798    00000784   00000784    rw-
      1181f798    1181f798    00000784   00000784    rw- .fardata
    1181ff20    1181ff20    00000400   00000000    rw-
      1181ff20    1181ff20    00000400   00000000    rw- .stack
    11820320    11820320    000000b0   000000b0    r--
      11820320    11820320    000000b0   000000b0    r-- .switch
    11820400    11820400    00000200   00000200    r-x
      11820400    11820400    00000200   00000200    r-x .vecs
    11820600    11820600    00000138   00000000    rw-
      11820600    11820600    00000120   00000000    rw- .cio
      11820720    11820720    00000018   00000000    rw- .bss
    11820738    11820738    00000025   00000025    rw-
      11820738    11820738    00000025   00000025    rw- .neardata
    11820760    11820760    0000003a   0000003a    r--
      11820760    11820760    0000003a   0000003a    r-- .rodata
    1182079c    1182079c    0000059c   0000059c    r--
      1182079c    1182079c    0000059c   0000059c    r-- .cinit


    SECTION ALLOCATION MAP

     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    .init_array
    *          0    11800000    00000000     UNINITIALIZED

    xdc.meta   0    11800000    000000f0     COPY SECTION
                      11800000    000000f0     app_pe674.oe674 (xdc.meta)

    xdc.noload
    *          0    11800000    00001268     COPY SECTION
                      11800000    00001268     app_pe674.oe674 (xdc.noload)

    .text      0    11800000    00015240    
                      11800000    00001c20     Flash_Tables_Driver.obj (.text)

  • Are you trying to boot through UART ?
    Have you tried any other simple code say, LED blink ?
  • 1. Yes , As I wrote I am loading via a UART.

    2. Yes. It doesnt metter. the first function called is being ran over by the xdc section data.

    10x

    Eran

  • Hi , 

    When I manually change linker.cmd last lines from

    xdc.meta: load > IRAM, type = COPY
    xdc.noload: load > IRAM, type = COPY

    Into 

    xdc.meta: load > IRAM
    xdc.noload: load > IRAM

    (just removed the COPY type) , It starts to work. 

    The meta and noload sections doesnt run over my code in that case.  why is that ?

    They are created automaticaly every time I clean the project. where is the option in the project options or SYS/BIOS to change it ? (I couldnt find)

    10X ,

    Eran.

  • Hi,
    You have to change the platform file in the following location.
    File -> New -> other -> RTSC -> Edit/View RTSC Platform
    Provide your project path here to edit the RTSC memory configuration which is responsible for *.cmd creation.
  • I have found out the problem.

    I used AISgen application version 1.09. It has an undocumented bug which causes the generated AIS file to include all the Meta data inside the .out file. When loading via the JTAG ICE, the CCS removes this metadata and doesn’t load it. When loading software using the AIS file the Meta data runs over the software real data.

     

    Now I am using version 1.13 and it is all OK.

     

     

     

  • Hi Eran,
    I'm glad that you able to solve the problem.
    Thanks for your update.