Sign in

username:

password:



Not a member?

Search motoroladsp



Search tips

Subscribe to motoroladsp



motoroladsp by Keywords

56303 | 563xx | 5680 | 56805 | 5680x | 56F80 | 56F800DEMO | 56F805 | 56f807 | 56F830 | ADC | Bootloader | Codec | CodeWarrior | CW5 | CW6 | Debugger | DSP56303 | DSP56303EVM | DSP563xx | DSP5680 | DSP56800 | DSP56807 | DSP56858 | DSP56858EVM | DSP56F803 | DSP56F805 | DSP56F807 | DSP56F80x | DSP56F826 | DSP56F827 | DSP56F8xx | EVM | FFT | Flash_over_jtag | GPIO | Interrupt | Interrupts | JTAG | LCD | Linker | MCF5307 | Metrowerks | Modulus | MSCAN | PCMaster | PWM | Quad | Rif | RTOS | SDK | SPI

Ads

Discussion Groups

Discussion Groups | Freescale DSPs | Using flash program memory for non-volatile storage in 56/F800E family

Technical discussions about Freescale (Motorola) DSPs (including the DSP56000, DSP56300, DSP56600, 56800 DSPs).

  

Post a new Thread

Using flash program memory for non-volatile storage in 56/F800E family - rodr...@yahoo.com.br - Aug 6 8:15:22 2007



Hi all,
If possible, I would like to get some help with the following issue:

I'm using the DEMO56F8014 EVM board, which is shipped with an 56F8014 DSC, CodeWarrior 5.6 and
Processor Expert 2.96 for 56/F800E family.

With this configuration, I need do use a given amount of the flash program memory as a
non-volatile memory storage, to emulate EEPROM features. In my case, this non-volatile memory
must store the operational configuration of my embedded software and also an even greater
amount of data. Both these "portions" of data must be retrieved during reboots and
may be modified during the embedded software run-time.

After some researching in libraries of references/documents, I found two possibilities:

1 - To use flash memory program variables, as is said in the documents Targeting_56800E.pdf and
 by the video PMEMDATA.wmv;

2 - To declaring a new section of program flash memory (splitting the program memory) and use
it in companion of one Processor Expert Memory Bean or a SDK library to read an write from/to
this section of program flash memory.
The first possibility was already tested by me, but I noticed that if I declare a flash program
memory variable, its content, even modified during run-time, is not updated in program memory.


An example:

__pmem int viTest = 1;   // variable in flash program memory.

int main()
{
   word viAux;
...
   viTest = 10;     // Does not work!!!!!!!!
   viAux  = viTest  // "viAux" receives 1 even after the last statement 
...
}

Once its seems not work, I would like to test the second possibility. So, 
I would like to now if anyone could give some directions about what document I should read and
what to do to implement the second possibility....

Any direction will be appreciated.

Thank you,
Rodrigo



(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )

Re: Using flash program memory for non-volatile storage in 56/F800E family - Bende Georg - Aug 7 10:51:56 2007

Hi Rodrigo,
=20
I think this is a general understanding problem with flash memory.=20
You can use of course variables defined as flash vars; but modifying them w=
on't work, since you need to write the flash content which is way more comp=
licated than RAM operations.
=20
There are 4 rules:
1) Erased bits are always "1"
2) You can only turn "1" bits into "0"=20
3) To reset the content (set to "1") you have to erase a full flash page.
4) Write and erase operations go through programming the flash controller.
=20
For the "normal" usage, you can treat flash variables as constants.
If you want to use the flash content as a NVRAM storage, you should copy it=
s content into the RAM; use in in from the RAM, and when you want to store =
them, erase the flash and copy the RAM content into the desired Flash area.
=20
BR,
George
=20
=20
=20

	-----Urspr=FCngliche Nachricht-----
	Von: m...@yahoogroups.com [mailto:m...@yahoogroups.com] Im A=
uftrag von r...@yahoo.com.br
	Gesendet: Freitag, 3. August 2007 18:13
	An: m...@yahoogroups.com
	Betreff: [motoroladsp] Using flash program memory for non-volatile storage=
 in 56/F800E family
=09
=09

	Hi all,
=09
	If possible, I would like to get some help with the following issue:
=09
	I'm using the DEMO56F8014 EVM board, which is shipped with an 56F8014 DSC,=
 CodeWarrior 5.6 and Processor Expert 2.96 for 56/F800E family.
=09
	With this configuration, I need do use a given amount of the flash program=
 memory as a non-volatile memory storage, to emulate EEPROM features. In my=
 case, this non-volatile memory must store the operational configuration of=
 my embedded software and also an even greater amount of data. Both these "=
portions" of data must be retrieved during reboots and may be modified duri=
ng the embedded software run-time.
=09
	After some researching in libraries of references/documents, I found two p=
ossibilities:
=09
	1 - To use flash memory program variables, as is said in the documents Tar=
geting_56800E.pdf and by the video PMEMDATA.wmv;
=09
	2 - To declaring a new section of program flash memory (splitting the prog=
ram memory) and use it in companion of one Processor Expert Memory Bean or =
a SDK library to read an write from/to this section of program flash memory=
.
=09
	The first possibility was already tested by me, but I noticed that if I de=
clare a flash program memory variable, its content, even modified during ru=
n-time, is not updated in program memory.=20
=09
	An example:
=09
	__pmem int viTest =3D 1; // variable in flash program memory.
=09
	int main()
	{
	word viAux;
	...
	viTest =3D 10; // Does not work!!!!!!!!
	viAux =3D viTest // "viAux" receives 1 even after the last statement=20
	...
	}
=09
	Once its seems not work, I would like to test the second possibility. So,=
=20
	I would like to now if anyone could give some directions about what docume=
nt I should read and what to do to implement the second possibility....
=09
	Any direction will be appreciated.
=09
	Thank you,
	Rodrigo
=09
=09

=09=20

=20


(You need to be a member of motoroladsp -- send a blank email to motoroladsp-subscribe@yahoogroups.com )