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

Flash into RAM question
Started by ●August 4, 2003
Reply by ●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 ●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 ●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 ●August 5, 20032003-08-05
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 ●August 5, 20032003-08-05
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/
>
>
>
