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.

C6701, boot with EEPROM(3D PLUS)



hi,

i'm recently using JTAG programming  bootload into EEPROM. i tried serials ways and finally find a way to burn program into EEPROM, but DSPstill not working after re-boot.(it supposed to display 10 numbers on serial data-receive screen)

I suspect the problem is my .cmd file of the program to burn and the link cmd.

here goes the code:

1:the mcbsp.cmd file

/* mcbsp.cmd file for program*/

-c
-heap 4096
-stack 4096

/* Memory Map 0 - the default */
MEMORY
{
    VECS:   o = 00000100h   l = 00000100h
    PMEM:    o = 00000200h    l = 0000FC00h
    BMEM:    o = 80000000h    l = 00010000h
    CE1:    o = 01400000h    l = 00010000h
}

SECTIONS
{
   " vectors"   : load = CE1, run = VECS
    .text       : load = CE1, run =    PMEM
    .cinit      >       CE1
    .tables     >       BMEM
    .data       >       BMEM
    .stack      >       BMEM
    .bss        >       BMEM
    .sysmem     >       BMEM
    .cio        >       BMEM
    .far        >       BMEM
    xmitbuf     >       PMEM
}

2: link cmd file to generate .hex

mcbsp.out
-m
-byte
-memwidth 8
-romwidth 8
-order l
-map eeprom_boot.map

ROMS
{
EPROM: org = 0x00000000, length = 0x10000
CE1:    org = 0x01400000, length = 0x10000
DATAM: org = 0x80000000, length = 0x10000
}

SECTIONS
{
   " vectors"       
    .text       
    .cinit      
}

My questions are

1 does both the cmd files right?

(When online programming, the first '.cmd file' need to change CE1 to RAM addr  to enter 'main', otherwise it's not working)

2 what's the format for 3DPLUS EEPROM(-m? -i? -a?)

THX A LOT~

  • Yu Chen,

    Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages. Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics.

    What is a 3DPLUS EEPROM?

    Why do you use o=0100 for VECS? Should this be o=0000 for your device? From where did you copy this .cmd file that puts the vectors at 0x100?

    Using CCS and JTAG, you should be able to look at the programmed EEPROM and determine if it has the correct contents.

    Sorry for a lot of ignorance of this, but the C6701 is a very old part. Why are you using it for a new design?

    Regards,
    RandyP

  • hi RandyP

    Our leader decided using  C6701 so...

    now i changed .cmd
    VECS:   o = 00000000h   l = 00000200h

    it's still not working

    3D PLUS is a manufacture making EEPROM, i'm not sure if i need to erase 0xFF before writing.

    I used some EEPROM programmer software to translate .out into .bin and find 0xFF is filled in empty space. However I wrote 0x00 before to fill empty space.

    I'll try this translated .bin file and burn it later :)

  • writing 0xFF to fill the empty will cause a large current when re-boot, 0x00 would be ok

  • problem solved.

    it's the "vecs.asm" file! I didn't config the c_init jump instruction so everytime after rebuild, there was a warning that "VEC is not used and ignored", which I also ignored because it's just warning...

    also, in link.cmd, VEC and PMEM should be addressed seperately in CE1. so

    MEMORY
    {
        VECS:     o = 00000000h    l = 00000200h
        PMEM:    o = 00000200h    l = 0000FC00h

    ...}

    SECTIONS
    {
        vectors     :        load = CE1PMEM, run = VECS
        .text       :        load = CE1PMEM, run = PMEM

    ...}

    anyway, it's working well now :-)