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.

Loading a TMS320VC5502 program via EEPROM on I2C bus ...

Other Parts Discussed in Thread: TMS320VC5502, CC1200

I'm attempting to boot from an Atmel AT24C512B EEPROM. The processor is aTMS320VC5502-300. I was sucessful in creating a 'hex' file using hex55. I'm using a Kanda EEPROM programer, which is able to write and verify the contents of the Atmel EEPROM. On power up, the 5502 seems to read the EEPROM correctly - I see the random read issued to the EEPROM, and GPIO4 toggle as expected. The problem is that the program does not begin execution following the 'boot' sequence.

The hex55 command that I am using is as follows:

hex55 -boot -v5510:2 -serial8 -delay 0xA08E -i -o AA_DSP.hex C:\Dual_Radio_DSP_5502_AA\Debug\Dual_Radio_DSP_5501.out

Questions:

How can I use CCS in debug mode to verify what's in memory? CCS defaults the start address to 0x0100. Is that correct? Any ideas?

Mike Burns

  • Hi,

     

    What is your entry point? You can add an option -map your_mapfile.mxp in your hex55 command to check it.

    hex55 -boot -v5510:2 -serial8 -delay 0xA08E -i -o AA_DSP.hex C:\Dual_Radio_DSP_5502_AA\Debug\Dual_Radio_DSP_5501.out -map boot.mxp

     

    You can see through CCS memory look up. Go to View-->Memory in CCS menu bar. You can select PROGRAM and enter your entry point address.

    You can verify your boot code loaded correctly.

    Regards,

    Hyun


  • Hyun -

    I was able to verify that data from the EEPROM is being correctly loaded into the 5502's RAM. Using the CCS debugger, I can force the program to start at address 0x100 (this is the address programed into the first four bytes of the boot table) and things work O.K. (when using the debugger). However, when you press 'reset' button, the EEPROM data is read by the 5502 but the program does not start. Any ideas? I have tried two different cards, so I don't believe that it's a hardware issue.

    Mike

     

     

     

  • Yes, I know that it's been over 4 years since I last inquired about this, but the customer has asked for a code update, and, frankly, I can't remember how I resolved the issue. So, I am back to where I was in January of 2011 - I can load the program into the serial EEPROM, but the TMS320VC5502 won't run on power up.

    In reading SPRA911C, section 2.6.5 on page 31 bullet 5 state that the program entry point should be specified using the "-e entry_point_address" option. Follows is the "boot.map: generated by hex55 using the "-map" option:

    ********************************************************************************
    TMS320C55x Hex Converter                                                  v4.3.8
    ********************************************************************************

    INPUT FILE NAME: <ProLinkIIPlus.out>
    OUTPUT FORMAT:   Intel

    PHYSICAL MEMORY PARAMETERS
       Default data width   :   8
       Default memory width :   8
       Default output width :   8

    BOOT LOADER PARAMETERS
       Table Type:    SERIAL PORT (McBSP 8 bit Mode)
       Entry Point:    0x00008a26


    OUTPUT TRANSLATION MAP
    --------------------------------------------------------------------------------
    00000000..00ffffff  Page=0  Memory Width=8  ROM Width=8
    --------------------------------------------------------------------------------
       OUTPUT FILES: AA_DSP.hex [b0..b7]

       CONTENTS: 00000000..00008bef   BOOT TABLE
                                .text : dest=00000200  size=00008889  width=00000001
                               .cinit : dest=0000c668  size=0000023e  width=00000001
                              vectors : dest=0000ff00  size=00000100  width=00000001

    --------------------------------------------------------------------------------
    00000000..00ffffff  Page=1  Memory Width=8  ROM Width=8  "*DEFAULT PAGE 1*"
    --------------------------------------------------------------------------------
       NO CONTENTS

    As you can see, the default entry address is  0x00008A26. Looking at the ".map" file generated by the compiler (CCSV4), you can see that this address corresponds to a program called "boot". Is this the correct entry point? I sort of remember hearing that the entry point should be 0x00000200, which corresponds to "main". Is that correct?

    SECTION ALLOCATION MAP
    (Addresses surrounded by []'s are displayed for convenience only!)

    output                                                          attributes/
    section   page  orgn(bytes) orgn(words) len(bytes) len(words)   input sections
    --------  ----  ----------- ----------- ---------- ----------   --------------
    .pinit       0   [ 00000200 ]  00000100          *   00000000   UNINITIALIZED

    .text        0     00000200  [ 00000100 ] 00008889          *  
                       00000200  [ 00000100 ] 00003df5          *   main.obj (.text)
                       00003ff5  [ 00001ffa+] 00002a1c          *   g726.obj (.text)
                       00006a11  [ 00003508+] 00000986          *   Radio_SPI.obj (.text)
                       00007397  [ 000039cb+] 000005c4          *   CC1200_Init.obj (.text)
                       0000795b  [ 00003cad+] 00000482          *   Radio_Functions.obj (.text)
                       00007ddd  [ 00003eee+] 0000039e          *   i2c.obj (.text)
                       0000817b  [ 000040bd+] 00000298          *   misc_subs.obj (.text)
                       00008413  [ 00004209+] 00000279          *   init_peripherals.obj (.text)
                       0000868c  [ 00004346 ] 000000f6          *   init_Codec.obj (.text)
                       00008782  [ 000043c1 ] 000000d1          *   isr.obj (.text)
                       00008853  [ 00004429+] 000000b9          *   rts55x.lib : extaddr.obj (.text)
                       0000890c  [ 00004486 ] 0000004d          *              : autoinit.obj (.text)
                       00008959  [ 000044ac+] 0000004b          *              : args_main.obj (.text)
                       000089a4  [ 000044d2 ] 00000044          *   init_ports.obj (.text)
                       000089e8  [ 000044f4 ] 0000003e          *   rts55x.lib : exit.obj (.text)
                       00008a26  [ 00004513 ] 00000034          *              : boot.obj (.text)
                       00008a5a  [ 0000452d ] 00000013          *              : lmpy.obj (.text)
                       00008a6d  [ 00004536+] 00000012          *              : _lock.obj (.text)
                       00008a7f  [ 0000453f+] 00000007          *              : exit.obj (.text:CIO_breakpoint)
                       00008a86  [ 00004543 ] 00000002          *              : vectors.obj (.text)
                       00008a88  [ 00004544 ] 00000001          *   --HOLE-- [fill = 20]

    .data        0   [ 00000200 ]  00000100          *   00000000   UNINITIALIZED

    .stack       0   [ 00008a8c ]  00004546          *   00001000   UNINITIALIZED
                     [ 00008a8c ]  00004546          *   00001000   --HOLE--

    .sysstack
    *            0   [ 0000aa8c ]  00005546          *   00000800   UNINITIALIZED
                     [ 0000aa8c ]  00005546          *   00000800   --HOLE--

    .bss         0   [ 0000ba8c ]  00005d46          *   000005ee   UNINITIALIZED
                     [ 0000ba8c ]  00005d46          *   00000579   main.obj (.bss)
                     [ 0000c57e ]  000062bf          *   0000002e   Radio_Functions.obj (.bss)
                     [ 0000c5da ]  000062ed          *   00000001   --HOLE--
                     [ 0000c5dc ]  000062ee          *   0000002d   g726.obj (.bss)
                     [ 0000c636 ]  0000631b          *   0000000b   misc_subs.obj (.bss)
                     [ 0000c64c ]  00006326          *   00000005   Radio_SPI.obj (.bss)
                     [ 0000c656 ]  0000632b          *   00000001   --HOLE--
                     [ 0000c658 ]  0000632c          *   00000004   rts55x.lib : _lock.obj (.bss)
                     [ 0000c660 ]  00006330          *   00000004              : exit.obj (.bss)

    .cinit       0   [ 0000c668 ]  00006334          *   0000011f  
                     [ 0000c668 ]  00006334          *   000000bd   main.obj (.cinit)
                     [ 0000c7e2 ]  000063f1          *   00000029   g726.obj (.cinit)
                     [ 0000c834 ]  0000641a          *   0000001c   Radio_Functions.obj (.cinit)
                     [ 0000c86c ]  00006436          *   0000000a   rts55x.lib : _lock.obj (.cinit)
                     [ 0000c880 ]  00006440          *   0000000a              : exit.obj (.cinit)
                     [ 0000c894 ]  0000644a          *   00000008   misc_subs.obj (.cinit)
                     [ 0000c8a4 ]  00006452          *   00000001   --HOLE-- [fill = 0]

    vectors      0     0000ff00  [ 00007f80 ] 00000100          *  
                       0000ff00  [ 00007f80 ] 00000100          *   rts55x.lib : vectors.obj (vectors)

    Thanks!