Once you have erased a segment you can program it either word at a time
or byte at a time, so no need to buffer an entire segment. ie you can
poll the UART. I do recommned that you add some robust error checking so
that you can retry for lost data, failed data etc. You also should have
some power fail strategy if a power loss is possible, And, if you are
writing new program code especially you need to be aware of failed
bytes. Often repeated write attempts will work, but if this fails you
either scrap the part, or recompile with JMP instructions over the dead
areas. It is not so critical writing data, you can simply maintain a log
of failed bytes
Al
Heather wrote:
> Al,
>
> Thanks for the response... direct Flash programming does sounds
> like it has a number of useful aspects... Question, though -- is it
> possible to poll the UART for input? Or would I have to have an
> entire sector's replacement in RAM before I could use this technique?
>
> Thank you!
>
> Heather
>
> --- In msp430@msp4..., onestone <onestone@b...> wrote:
>
>>I use the direct Flash programming method more than the program
>
> from RAM
>
>>method. Simply because, by the time I've moved the code to RAM,
>
> updated
>
>>Flash, and continued I've lost more time than is involved in the
>
> direct
>
>>write method. This works for nearly everything, even code update. I
>
> have
>
>>a very thoroughly tested piece of comms code combined with flash
>
> manager
>
>>that is the only sector I don't erase, I can then freely erase a
>
> sector
>
>>at a time, re-programming it and verify as I go, allowing retries
>
> etc.
>
>>using markers in data flash I also can handle power failures during
>>update, since my flash code is in the start up code pointed to by
>
> the
>
>>reset vector. It just gets skipped in normal operation. The RAM
>
> based
>
>>method lacks this robustness, and I find it far harder to manage. I
>>mainly use FLASH as a data logging store, workign from flash
>
> directly
>
>>imposes the least interference to the logging cycle as well.
>>
>>Sorry but assembler only for me.
>>
>>Al
>>
>>Heather wrote:
>>
>>>Good Morning!
>>>
>>> I've got a question: I'm using the Quadravox C Compiler
for
>
> the
>
>>>MSP430(f449) microchip, and currently need to overwrite the Flash
>>>memory. I've reviewed and used the app note on Flash Self-
>>>Programming, but the C program shown reprograms the Flash
>
> directly,
>
>>>without moving the function to RAM first. I know the concept is
>>>fairly simple:
>>>1. copy program to RAM
>>>2. change PC to point to RAM copy of function
>>>3. change PC back when finished
>>>... Unfortunately, my experience with assembly is non-impressive
>>>almost to the point of non-existence. As a result, I'm having
a
>>>problem interpreting the assembly functions to figure out how to
>
> do
>
>>>this in C. I'm especially confused on how to copy the program
>
> into
>
>>>RAM... Can anybody help me?
>>>
>>> Thanks
>>> Heather
>>>
>>>
>>>
>>>.
>>>
>>>
>>>
>>>">http://docs.yahoo.com/info/terms/
>
>>>
>>>
>
>
>
> .
>
>
>
> ">http://docs.yahoo.com/info/terms/
>
>
>
Al,
Thanks for the response... direct Flash programming does sounds
like it has a number of useful aspects... Question, though -- is it
possible to poll the UART for input? Or would I have to have an
entire sector's replacement in RAM before I could use this technique?
Thank you!
Heather
--- In msp430@msp4..., onestone <onestone@b...> wrote:
> I use the direct Flash programming method more
than the program
from RAM
> method. Simply because, by the time I've
moved the code to RAM,
updated
> Flash, and continued I've lost more time than
is involved in the
direct
> write method. This works for nearly everything,
even code update. I
have
> a very thoroughly tested piece of comms code
combined with flash
manager
> that is the only sector I don't erase, I can
then freely erase a
sector
> at a time, re-programming it and verify as I go,
allowing retries
etc.
> using markers in data flash I also can handle
power failures during
> update, since my flash code is in the start up code pointed to by
the
> reset vector. It just gets skipped in normal
operation. The RAM
based
> method lacks this robustness, and I find it far
harder to manage. I
> mainly use FLASH as a data logging store, workign from flash
directly
> imposes the least interference to the logging
cycle as well.
>
> Sorry but assembler only for me.
>
> Al
>
> Heather wrote:
> > Good Morning!
> >
> > I've got a question: I'm using the Quadravox C Compiler
for
the
> > MSP430(f449) microchip, and currently need to
overwrite the Flash
> > memory. I've reviewed and used the app note on Flash Self-
> > Programming, but the C program shown reprograms the Flash
directly,
> > without moving the function to RAM first. I
know the concept is
> > fairly simple:
> > 1. copy program to RAM
> > 2. change PC to point to RAM copy of function
> > 3. change PC back when finished
> > ... Unfortunately, my experience with assembly is non-impressive
> > almost to the point of non-existence. As a result, I'm having a
> > problem interpreting the assembly functions to figure out how to
do
> > this in C. I'm especially confused on
how to copy the program
into
> > RAM... Can anybody help me?
> >
> > Thanks
> > Heather
> >
> >
> >
> > .
> >
> >
> >
> > ">http://docs.yahoo.com/info/terms/> >
> >
> >
Reply by onestone●August 4, 20032003-08-04
I use the direct Flash programming method more than the program from RAM
method. Simply because, by the time I've moved the code to RAM, updated
Flash, and continued I've lost more time than is involved in the direct
write method. This works for nearly everything, even code update. I have
a very thoroughly tested piece of comms code combined with flash manager
that is the only sector I don't erase, I can then freely erase a sector
at a time, re-programming it and verify as I go, allowing retries etc.
using markers in data flash I also can handle power failures during
update, since my flash code is in the start up code pointed to by the
reset vector. It just gets skipped in normal operation. The RAM based
method lacks this robustness, and I find it far harder to manage. I
mainly use FLASH as a data logging store, workign from flash directly
imposes the least interference to the logging cycle as well.
Sorry but assembler only for me.
Al
Heather wrote:
> Good Morning!
>
> I've got a question: I'm using the Quadravox C Compiler for
the
> MSP430(f449) microchip, and currently need to overwrite the Flash
> memory. I've reviewed and used the app note on Flash Self-
> Programming, but the C program shown reprograms the Flash directly,
> without moving the function to RAM first. I know the concept is
> fairly simple:
> 1. copy program to RAM
> 2. change PC to point to RAM copy of function
> 3. change PC back when finished
> ... Unfortunately, my experience with assembly is non-impressive
> almost to the point of non-existence. As a result, I'm having a
> problem interpreting the assembly functions to figure out how to do
> this in C. I'm especially confused on how to copy the program into
> RAM... Can anybody help me?
>
> Thanks
> Heather
>
>
>
> .
>
>
>
> ">http://docs.yahoo.com/info/terms/
>
>
>
Reply by Heather●August 4, 20032003-08-04
Ted: Thanks for the quick response!
Hmm... That was what I thought it was telling me to do. How does
one access the stack and the flash and get this all moving, in C?
Unfortunately, running this out of RAM is important to the project...
Thank you!
HAO
--- In msp430@msp4..., "Ted Gregorius" <ted@t...> wrote:
> The app note pushes the RAM CODE onto the STACK. A
call is made to
the RAM code and then returns.
>
> It's a nasty little piece of code but is does work.
>
> I had a tough time with FLASH programming out of RAM code myself.
Timing is very important.
>
> Ted Gregorius (Pres)
> TAG Systems Racing Products, Inc.
> www.tagrace.com
> ----- Original Message -----
> From: Heather
> To: msp430@msp4...
> Sent: Monday, August 04, 2003 9:40 AM
> Subject: [msp430] Flash into RAM question
>
>
> Good Morning!
>
> I've got a question: I'm using the Quadravox C Compiler for
the
> MSP430(f449) microchip, and currently need to
overwrite the Flash
> memory. I've reviewed and used the app note on Flash Self-
> Programming, but the C program shown reprograms the Flash
directly,
> without moving the function to RAM first. I
know the concept is
> fairly simple:
> 1. copy program to RAM
> 2. change PC to point to RAM copy of function
> 3. change PC back when finished
> ... Unfortunately, my experience with assembly is non-impressive
> almost to the point of non-existence. As a result, I'm having a
> problem interpreting the assembly functions to figure out how to
do
> this in C. I'm especially confused on how
to copy the program
into
> RAM... Can anybody help me?
>
> Thanks
> Heather
>
>
Reply by Ted Gregorius●August 4, 20032003-08-04
The app note pushes the RAM CODE onto the STACK. A call is made to the RAM
code and then returns.
It's a nasty little piece of code but is does work.
I had a tough time with FLASH programming out of RAM code myself. Timing is very
important.
Ted Gregorius (Pres)
TAG Systems Racing Products, Inc.
www.tagrace.com
----- Original Message -----
From: Heather
To: msp430@msp4...
Sent: Monday, August 04, 2003 9:40 AM
Subject: [msp430] Flash into RAM question
Good Morning!
I've got a question: I'm using the Quadravox C Compiler for the
MSP430(f449) microchip, and currently need to overwrite the Flash
memory. I've reviewed and used the app note on Flash Self-
Programming, but the C program shown reprograms the Flash directly,
without moving the function to RAM first. I know the concept is
fairly simple:
1. copy program to RAM
2. change PC to point to RAM copy of function
3. change PC back when finished
... Unfortunately, my experience with assembly is non-impressive
almost to the point of non-existence. As a result, I'm having a
problem interpreting the assembly functions to figure out how to do
this in C. I'm especially confused on how to copy the program into
RAM... Can anybody help me?
Thanks
Heather
.
Reply by Heather●August 4, 20032003-08-04
Good Morning!
I've got a question: I'm using the Quadravox C Compiler for the
MSP430(f449) microchip, and currently need to overwrite the Flash
memory. I've reviewed and used the app note on Flash Self-
Programming, but the C program shown reprograms the Flash directly,
without moving the function to RAM first. I know the concept is
fairly simple:
1. copy program to RAM
2. change PC to point to RAM copy of function
3. change PC back when finished
... Unfortunately, my experience with assembly is non-impressive
almost to the point of non-existence. As a result, I'm having a
problem interpreting the assembly functions to figure out how to do
this in C. I'm especially confused on how to copy the program into
RAM... Can anybody help me?
Thanks
Heather