DSPRelated.com
Forums

EZDSP Flasher

Started by Bob Arnold October 8, 2003
I just downloaded a program skeleton from the companion file to TI
Tech Note "SPRA755A - Getting started ... TMS320LF240x DSP" by David
Alter (clear and consistent). The real time program example
(EXAMPLE_RTM.C] works right out of the box. I read furthermore that
the same code can be programmed directly to flash ---

"Set [JP3 and JP4 on the EZDSP board corresponding to VCCP and MP/MC
pins on the DSP] to the 2�3 position if you want to program the FLASH
with the example program, and leave in the 2�3 position to run the
program out of the FLASH after it is programmed." (SPRA755A, pg 3)

However when I try to load my .OUT file from Code Composer, it tells
me several memory locations failed to load. Could it be that the
memory model is not the same? Is there a prototype CMD file for using
on chip flash? Can I load flash through Code Composer?

The snippet below from this newsgroup suggests that, at least in the
distant past, this was a non-trivial task.

Thanks
Bob

From: A Murphy (ajmurphy@worldnet.att.net)
Subject: Re: Anyone use the TMS320LF2407 eZdsp DSK? 
Newsgroups: comp.dsp
Date: 2001-04-16 09:32:05 PST 
 

We just completed a project on the LF2407. The results came out
alright but
it took 2-3x longer than anticipated, partially due to quirks with the
LF2407 DSP. Hardware design was straightforward with this chip, they
have a
good external interface. The IO mapped space is worthless as the C
compiler
and assembler only support one addressing mode in IO space - no offset
addresses, indirect addressing etc in IO map. The In-circuit Flash
programming was a nitemare. Couldn't do it in C, poor/no support code
from
TI.
Bob,
   First, are you using the code-composer programmer plug-in?  If not,  you
should download it and try again with it.
   If you are using it, I have sometimes seen an error that sounds similar
to what you're reporting (depending on if you're getting it at some random
address or always at some power of two), and closing code composer and
power-cycling the board usually seems to fix it.  Also, I assume you're
building your code for the ROM model (I think the library needs to be
rebuilt as well, in order to support constants being loaded from program
space ROM).

Regarding the message you quoted, that's for a different thing: programming
the FLASH from within the DSP chip.  This is now actually quite easy,
they've developed a nice library for doing this.  And regarding the I/O
memory space, it's indeed a pain -- on an earlier design, I ended up using
self-modifying code to do a general  outport(addr, datum) function, but it
was gross and slow.

HTH,

-Mike




"Bob Arnold" <elfinranger2300@hotmail.com> wrote in message
news:46820631.0310072121.b47777d@posting.google.com...
> I just downloaded a program skeleton from the companion file to TI > Tech Note "SPRA755A - Getting started ... TMS320LF240x DSP" by David > Alter (clear and consistent). The real time program example > (EXAMPLE_RTM.C] works right out of the box. I read furthermore that > the same code can be programmed directly to flash --- > > "Set [JP3 and JP4 on the EZDSP board corresponding to VCCP and MP/MC > pins on the DSP] to the 2-3 position if you want to program the FLASH > with the example program, and leave in the 2-3 position to run the > program out of the FLASH after it is programmed." (SPRA755A, pg 3) > > However when I try to load my .OUT file from Code Composer, it tells > me several memory locations failed to load. Could it be that the > memory model is not the same? Is there a prototype CMD file for using > on chip flash? Can I load flash through Code Composer? > > The snippet below from this newsgroup suggests that, at least in the > distant past, this was a non-trivial task. > > Thanks > Bob > > From: A Murphy (ajmurphy@worldnet.att.net) > Subject: Re: Anyone use the TMS320LF2407 eZdsp DSK? > Newsgroups: comp.dsp > Date: 2001-04-16 09:32:05 PST > > > We just completed a project on the LF2407. The results came out > alright but > it took 2-3x longer than anticipated, partially due to quirks with the > LF2407 DSP. Hardware design was straightforward with this chip, they > have a > good external interface. The IO mapped space is worthless as the C > compiler > and assembler only support one addressing mode in IO space - no offset > addresses, indirect addressing etc in IO map. The In-circuit Flash > programming was a nitemare. Couldn't do it in C, poor/no support code > from > TI.
I am not sure whether I have the "plug-in" - I don't recall there
being any choices on installation. The Code Composer application
reports the following --

Integrated Development Environment	4.10.57.57	Texas Instruments
Board Revision	00.00.81
Target Silicon Revision	00.00.205
Device Driver Revision	2.15	Spectrum Digital Incorporated
Command Window	1.21	Texas Instruments

Should I be using the standalone DOS programmer i.e.
flashtools>lf240xA>serial>rev10>loader1.bat or similar?

The error that I'm getting "Data verification failed at ..." is
reported at the following addresses all the time - I've power cycled
three times--
44h
183h
18Ah
0h

The memory model I'm using is as follows--

MEMORY
{
  PAGE 0:    /* Program Memory */
    VECS:           org=00000h,   len=00040h   /* internal FLASH */
    FLASH:          org=00044h,   len=07FBCh   /* internal FLASH */
    EXTPROG:        org=08800h,   len=07800h   /* external SRAM  */

  PAGE 1:    /* Data Memory */
    B2:             org=00060h,   len=00020h   /* internal DARAM */
    B0:             org=00200h,   len=00100h   /* internal DARAM */
    B1:             org=00300h,   len=00100h   /* internal DARAM */
    SARAM:          org=00800h,   len=00800h   /* internal SARAM */
    EXTDATA:        org=08000h,   len=08000h   /* external SRAM  */
}

SECTIONS
{
/* Sections generated by the C-compiler */
        .text:  >   FLASH      PAGE 0   /* initialized */
       .cinit:  >   FLASH      PAGE 0   /* initialized */
       .const:  >   B1         PAGE 1   /* initialized */
      .switch:  >   FLASH      PAGE 0   /* initialized */
         .bss:  >   B1         PAGE 1   /* uninitialized */
       .stack:  >   SARAM      PAGE 1   /* uninitialized */
      .sysmem:  >   B1         PAGE 1   /* uninitialized */

/* Realtime monitor required sections */      
     mon_main:  >   FLASH      PAGE 0   /* initialized */
     mon_pge0:  >   B2         PAGE 1   /* unitialized */
     mon_rgst:  >   B2         PAGE 1   /* unitialized */

/* Sections declared by the user */
      vectors:  >   VECS       PAGE 0   /* initialized */
}

Thanks for your help.
Bob
Bob,

  The plugin has to be downloaded separately (I can't quite remember
exactly, but somewhere on the TI website).  I get the following versions
(note the addition flash programmer listed).


COMPONENT VERSION COMPANY
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------------------------------
Integrated Development Environment 4.10.57.57 Texas Instruments
Board Revision 00.00.00
Target Silicon Revision 00.00.00
Device Driver Revision 2.15 Spectrum Digital Incorporated
TMS320LF24xx Flash Programmer 1.1.01 Texas Instruments
Command Window 1.21 Texas Instruments


Also, what board & jtag are you using?  I would NOT use the "standalone DOS
programmer -- that's to program it over the serial port, but I managed to
ruin a DSP by not having the timing params right, so it's a bit tricky).

It's also possible you have a bad DSP chip.  Try looking at those locations
in CC using the display memory option.  But first I would use the Flash
programmer plug-in and see if it works.  How are you doing it now, BTW?

Also, here's my .cmd file, it has a few extra things you don't need, but I
don't have anything simpler that I know works:
Note the use of the .const load / run for initializing global vars, which
you will want.


MEMORY
{
  PAGE 0:    /* Program Memory */
    FLASHCHK     org=01000h,   len=01h
    COM_BOOT  org=01001h,   len=20h
    FLSH_S12:       org=01021h,   len=05FdFh   /* internal FLASH */
    ABSRAM:    origin = 0x8000, length = 0x0040
/*   EXTPROG:        org=08800h,   len=07800h   /* external SRAM  */

  PAGE 1:    /* Data Memory */
    B2:             org=00060h,   len=00020h   /* internal DARAM */
    BLKB0FL: origin = 0x0200, length = 0x020 /* internal DARAM -- use for
flash vars*/
    BLKB0B1: origin = 0x0220, length = 0x01e0 /* internal DARAM */
/*    SARAM:          org=00800h,   len=00800h   /* internal SARAM */
    EXTDATA:        org=08000h,   len=06000h   /* external SRAM  */

    PACK_MEM: org=0E000h, len=1000h /* for communications packet */
}

SECTIONS
{
/* Sections generated by the C-compiler */
       .text:  >   FLSH_S12      PAGE 0   /* initialized */
       .cinit:  >   FLSH_S12     PAGE 0   /* initialized */
       .const: load = FLSH_S12 PAGE 0, run = EXTDATA PAGE 1
                  {
                    __const_run = . ;
                    *(.c_mark)
                    *(.const)
                    __const_length = . - __const_run;
                  }
      .switch:  >   FLSH_S12 PAGE 0   /* initialized */
         .bss:  >   EXTDATA    PAGE 1   /* uninitialized */
       .stack:  >   EXTDATA    PAGE 1   /* uninitialized */
      .sysmem:  >   EXTDATA    PAGE 1   /* uninitialized */
/* Sections declared by the user */
/*    .usect "PROGFLSH": > FLASHCHK PAGE 0    */
 .usect "comboot": > COM_BOOT PAGE 0
 .usect "packbuff": > PACK_MEM PAGE 1
 .usect "mks4sys": > B2 PAGE 1
    .flshvar  : {} > BLKB0FL  PAGE 1
}





"Bob Arnold" <elfinranger2300@hotmail.com> wrote in message
news:46820631.0310101301.69490800@posting.google.com...
> I am not sure whether I have the "plug-in" - I don't recall there > being any choices on installation. The Code Composer application > reports the following -- > > Integrated Development Environment 4.10.57.57 Texas Instruments > Board Revision 00.00.81 > Target Silicon Revision 00.00.205 > Device Driver Revision 2.15 Spectrum Digital Incorporated > Command Window 1.21 Texas Instruments > > Should I be using the standalone DOS programmer i.e. > flashtools>lf240xA>serial>rev10>loader1.bat or similar? > > The error that I'm getting "Data verification failed at ..." is > reported at the following addresses all the time - I've power cycled > three times-- > 44h > 183h > 18Ah > 0h > > The memory model I'm using is as follows-- > > MEMORY > { > PAGE 0: /* Program Memory */ > VECS: org=00000h, len=00040h /* internal FLASH */ > FLASH: org=00044h, len=07FBCh /* internal FLASH */ > EXTPROG: org=08800h, len=07800h /* external SRAM */ > > PAGE 1: /* Data Memory */ > B2: org=00060h, len=00020h /* internal DARAM */ > B0: org=00200h, len=00100h /* internal DARAM */ > B1: org=00300h, len=00100h /* internal DARAM */ > SARAM: org=00800h, len=00800h /* internal SARAM */ > EXTDATA: org=08000h, len=08000h /* external SRAM */ > } > > SECTIONS > { > /* Sections generated by the C-compiler */ > .text: > FLASH PAGE 0 /* initialized */ > .cinit: > FLASH PAGE 0 /* initialized */ > .const: > B1 PAGE 1 /* initialized */ > .switch: > FLASH PAGE 0 /* initialized */ > .bss: > B1 PAGE 1 /* uninitialized */ > .stack: > SARAM PAGE 1 /* uninitialized */ > .sysmem: > B1 PAGE 1 /* uninitialized */ > > /* Realtime monitor required sections */ > mon_main: > FLASH PAGE 0 /* initialized */ > mon_pge0: > B2 PAGE 1 /* unitialized */ > mon_rgst: > B2 PAGE 1 /* unitialized */ > > /* Sections declared by the user */ > vectors: > VECS PAGE 0 /* initialized */ > } > > Thanks for your help. > Bob
Mike,

Thanks for your help on this - I found the flash "plugin", however, I
don't have a JTAG connection - I'm programming via the PC parallel
port and so that didn't really work. After I've thoroughly tested
everything I can I might venture to use the DOS utilities - any words
of advice - any foolproof way?

I notice that one diff between your memory map and the one I'm using
is that you load the program above 1000h - I think from my brief
reading of the docs, this is because the boot loader(which is enabled
via BOOT_EN) occupies the first 1000h and branches to 1000h when done
- is this right? I will keep your file for reference.

The memory edit function in my Code Composer does not work as
advertised, however, I can change variables during exection using the
watch window. Any reason for this?

Regards
Bob
Which eval board are you using?


"Bob Arnold" <elfinranger2300@hotmail.com> wrote in message
news:46820631.0310112045.64ce6c35@posting.google.com...
> Mike, > > Thanks for your help on this - I found the flash "plugin", however, I > don't have a JTAG connection - I'm programming via the PC parallel > port and so that didn't really work. After I've thoroughly tested > everything I can I might venture to use the DOS utilities - any words > of advice - any foolproof way? > > I notice that one diff between your memory map and the one I'm using > is that you load the program above 1000h - I think from my brief > reading of the docs, this is because the boot loader(which is enabled > via BOOT_EN) occupies the first 1000h and branches to 1000h when done > - is this right? I will keep your file for reference. > > The memory edit function in my Code Composer does not work as > advertised, however, I can change variables during exection using the > watch window. Any reason for this? > > Regards > Bob
"Mike Shonle" <mike@psychonic.net> wrote in message news:<wN-dnYCcq_nGURSiRTvUqQ@speakeasy.net>...
> Which eval board are you using?
eZdsp&#4294967295; LF2407 for TMS320LF2407A DSP + Power supply + Code Composer for C2xxx http://www.spectrumdigital.com/cgi/catalog.cgi?show_product=761119 Regards, Bob
That's the same board I used.  It does actually do JTAG over parallel port,
so the flash programmer plug-in works fine with it.  Which OS are you using?
I use Windows 2000.



"Bob Arnold" <elfinranger2300@hotmail.com> wrote in message
news:46820631.0310151933.210100df@posting.google.com...
> "Mike Shonle" <mike@psychonic.net> wrote in message
news:<wN-dnYCcq_nGURSiRTvUqQ@speakeasy.net>...
> > Which eval board are you using? > > eZdspT LF2407 for TMS320LF2407A DSP + Power supply + Code Composer for
C2xxx
> > http://www.spectrumdigital.com/cgi/catalog.cgi?show_product=761119 > > Regards, Bob
"Mike Shonle" <mike@psychonic.net> wrote in message news:<GcWdncldxaYQgBOiRTvUqA@speakeasy.net>...
> That's the same board I used. It does actually do JTAG over parallel port, > so the flash programmer plug-in works fine with it. Which OS are you using? > I use Windows 2000. >
Mike, Sorry for taking so long to reply. I use Windows 2000 also -- Are you by any chance using the JP10 JTAG header to connect to the || port and if so do you have pinouts for that? Thanks again. Bob Item Value OS Name Microsoft Windows 2000 Professional Version 5.0.2195 Build 2195 OS Manufacturer Microsoft Corporation System Name BASTIONSQUARE System Manufacturer ECS System Model K7VMM+ System Type X86-based PC Processor x86 Family 6 Model 7 Stepping 0 AuthenticAMD ~1100 Mhz BIOS Version 03/14/03 Windows Directory C:\WINNT Locale United States Time Zone Pacific Daylight Time Total Physical Memory 114,160 KB Available Physical Memory 35,588 KB Total Virtual Memory 360,708 KB Available Virtual Memory 204,984 KB Page File Space 246,548 KB
The JP10- JTAG header is for use with a standard (e.g. XDS510PP etc.) JTAG
interface (There's a standard pinout).  I have used it as well, but the
EZ-dsp board has a built-in XDS510 JTAG emulator, so you don't need a
different one.  You should be able to program the  flash using what you have
plus the programmer plugin.  Note however, that's it's relatively easy to
physically destroy the chip when trying to program it (this happened to me
when I tried to use the serial port programming technique).

-Mike



"Bob Arnold" <elfinranger2300@hotmail.com> wrote in message
news:46820631.0310192201.7b7dd3e2@posting.google.com...
> "Mike Shonle" <mike@psychonic.net> wrote in message
news:<GcWdncldxaYQgBOiRTvUqA@speakeasy.net>...
> > That's the same board I used. It does actually do JTAG over parallel
port,
> > so the flash programmer plug-in works fine with it. Which OS are you
using?
> > I use Windows 2000. > > > Mike, > > Sorry for taking so long to reply. I use Windows 2000 also -- Are you > by any chance using the JP10 JTAG header to connect to the || port and > if so do you have pinouts for that? > > Thanks again. > Bob > > Item Value > OS Name Microsoft Windows 2000 Professional > Version 5.0.2195 Build 2195 > OS Manufacturer Microsoft Corporation > System Name BASTIONSQUARE > System Manufacturer ECS > System Model K7VMM+ > System Type X86-based PC > Processor x86 Family 6 Model 7 Stepping 0 AuthenticAMD ~1100 Mhz > BIOS Version 03/14/03 > Windows Directory C:\WINNT > Locale United States > Time Zone Pacific Daylight Time > Total Physical Memory 114,160 KB > Available Physical Memory 35,588 KB > Total Virtual Memory 360,708 KB > Available Virtual Memory 204,984 KB > Page File Space 246,548 KB