EmbeddedRelated.com
Forums
Memfault Beyond the Launch

CONST IAR optimization

Started by FB December 28, 2007
Hi!
Hi!
I have a software that need to have some values stored in flash.
As an example I defined:
const float dT = { 2 };

Obviously 2 is the default value.
Now, when I pass the address of that variable to a function the
compiler do the right thing (In this case I can see dT defined in the .map
file)
When I use the variable in any other part of the code (not passing
it as reference to a function) the compiler uses the default value instead
the reference to a memory address.

All this with high optimization option.

I would like to know if you have a solution for me. How can I define
that variable so the compiler use it as reference in any case of usage.

Thanks
Bukitoo
Internal Virus Database is out-of-date.
Checked by AVG Free Edition.
Version: 7.5.503 / Virus Database: 269.17.5 - Release Date: 19/12/2007 12:00
a.m.




Beginning Microcontrollers with the MSP430

When you declare dT to be a const, you're telling the compiler that its value will not be changed.
Thus the compiler doesn't need to bother with looking up the value of dT (it has been set to 2.0),
it is more efficient to just pass 2.0 as 32 bit float directly in 2 registers, rather than wasting
cycles fetching the value 2.0 from the flash address where it is stored.

Best Regards,
Kris

-----Original Message-----
From: m... [mailto:m...] On Behalf Of FB
Sent: Friday, 28 December 2007 11:51 PM
To: m...
Subject: [msp430] CONST IAR optimization

Hi!
Hi!
I have a software that need to have some values stored in flash.
As an example I defined:
const float dT = { 2 };

Obviously 2 is the default value.
Now, when I pass the address of that variable to a function the
compiler do the right thing (In this case I can see dT defined in the .map
file)
When I use the variable in any other part of the code (not passing
it as reference to a function) the compiler uses the default value instead
the reference to a memory address.

All this with high optimization option.

I would like to know if you have a solution for me. How can I define
that variable so the compiler use it as reference in any case of usage.

Thanks
Bukitoo
Internal Virus Database is out-of-date.
Checked by AVG Free Edition.
Version: 7.5.503 / Virus Database: 269.17.5 - Release Date: 19/12/2007 12:00
a.m.




I think you need to declare the variable as volatile. That way, the
compiler doesn't assume the value to be fixed and uses the address
instead of the default value.

Michael K.

--- In m..., "FB" wrote:
>
> Hi!
> Hi!
> I have a software that need to have some values stored in flash.
> As an example I defined:
> const float dT = { 2 };
>
> Obviously 2 is the default value.
> Now, when I pass the address of that variable to a function the
> compiler do the right thing (In this case I can see dT defined in
the .map
> file)
> When I use the variable in any other part of the code (not passing
> it as reference to a function) the compiler uses the default value
instead
> the reference to a memory address.
>
> All this with high optimization option.
>
> I would like to know if you have a solution for me. How can I define
> that variable so the compiler use it as reference in any case of usage.
>
> Thanks
> Bukitoo
> Internal Virus Database is out-of-date.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
19/12/2007 12:00
> a.m.
>
That actually reminds me - whatever happened to qualifiers like 'persistent' ?
(IIRC I used that on Hitech XA compiler)

Best Regards,
Kris


-----Original Message-----
From: m... [mailto:m...] On Behalf Of FB
Sent: Friday, 28 December 2007 11:51 PM
To: m...
Subject: [msp430] CONST IAR optimization

Hi!
Hi!
I have a software that need to have some values stored in flash.
As an example I defined:
const float dT = { 2 };

Obviously 2 is the default value.
Now, when I pass the address of that variable to a function the
compiler do the right thing (In this case I can see dT defined in the .map
file)
When I use the variable in any other part of the code (not passing
it as reference to a function) the compiler uses the default value instead
the reference to a memory address.

All this with high optimization option.

I would like to know if you have a solution for me. How can I define
that variable so the compiler use it as reference in any case of usage.

Thanks
Bukitoo
Internal Virus Database is out-of-date.
Checked by AVG Free Edition.
Version: 7.5.503 / Virus Database: 269.17.5 - Release Date: 19/12/2007 12:00
a.m.




What I meant was for you to declare the variable as
const volatile float dT = { 2 };

Have you considered the implications of changing a value stored in
flash? I mean, you will have to erase the whole segment flash and then
write the new value. Maybe you should think of something like

float dT = { 2 } @ ;

don't know if you will be needing 'volatile' and/or 'const'.

Michael Kusch

--- In m..., "FB" wrote:
>
> Thanks!
> I tried use volatile keyword and IAR tries to store the variable in
RAM. :(
> Any other suggestion ?
>
> _____
>
> From: m... [mailto:m...] On
Behalf Of
> tintronic
> Sent: Viernes, 28 de Diciembre de 2007 10:29 a.m.
> To: m...
> Subject: [msp430] Re: CONST IAR optimization
>
> I think you need to declare the variable as volatile. That way, the
> compiler doesn't assume the value to be fixed and uses the address
> instead of the default value.
>
> Michael K.
>
> --- In HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@...,
> "FB" wrote:
> >
> > Hi!
> > Hi!
> > I have a software that need to have some values stored in flash.
> > As an example I defined:
> > const float dT = { 2 };
> >
> > Obviously 2 is the default value.
> > Now, when I pass the address of that variable to a function the
> > compiler do the right thing (In this case I can see dT defined in
> the .map
> > file)
> > When I use the variable in any other part of the code (not passing
> > it as reference to a function) the compiler uses the default value
> instead
> > the reference to a memory address.
> >
> > All this with high optimization option.
> >
> > I would like to know if you have a solution for me. How can I define
> > that variable so the compiler use it as reference in any case of
usage.
> >
> > Thanks
> > Bukitoo
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> Internal Virus Database is out-of-date.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
19/12/2007 12:00
> a.m.
>
> Internal Virus Database is out-of-date.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
19/12/2007 12:00
> a.m.
>
>
>
I need to store my variable in flash because it is a calibration value which
will change when we calibrate the system.
Probably I will put it into Information Memory.

_____

From: m... [mailto:m...] On Behalf Of
Kipton Moravec
Sent: Viernes, 28 de Diciembre de 2007 11:12 a.m.
To: m...
Subject: Re: [msp430] Re: CONST IAR optimization

I do not know why you feel you need to store the variable in flash and
access it as such.

You can't just go in and change the flash value. Most likely you will
have to recompile. And if you have to recompile then why does it matter?

The other option is to put the value in a EEPROM which can be changed
outside the program.

I have both used const and #define for constants that may change in the
lifetime of the program and both seem to work fine for me. I do have a
case where we put values in EEPROM and as we are fine tuning we can
change the values in EEPROM without recompiling.

I feel you are looking at a solution and not looking at the problem.

Kip

On Fri, 2007-12-28 at 13:58 +0000, tintronic wrote:
> What I meant was for you to declare the variable as
> const volatile float dT = { 2 };
>
> Have you considered the implications of changing a value stored in
> flash? I mean, you will have to erase the whole segment flash and then
> write the new value. Maybe you should think of something like
>
> float dT = { 2 } @ ;
>
> don't know if you will be needing 'volatile' and/or 'const'.
>
> Michael Kusch
>
> --- In HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com,
"FB" wrote:
> >
> > Thanks!
> > I tried use volatile keyword and IAR tries to store the variable in
> RAM. :(
> > Any other suggestion ?
> >
> > _____
> >
> > From: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
[mailto:HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com]
On
> Behalf Of
> > tintronic
> > Sent: Viernes, 28 de Diciembre de 2007 10:29 a.m.
> > To: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
> > Subject: [msp430] Re: CONST IAR optimization
> >
> >
> >
> > I think you need to declare the variable as volatile. That way, the
> > compiler doesn't assume the value to be fixed and uses the address
> > instead of the default value.
> >
> > Michael K.
> >
> > --- In HYPERLINK "mailto:msp430%-40yahoogroups.-com"msp430@-...,
> > "FB" wrote:
> > >
> > > Hi!
> > > Hi!
> > > I have a software that need to have some values stored in flash.
> > > As an example I defined:
> > > const float dT = { 2 };
> > >
> > > Obviously 2 is the default value.
> > > Now, when I pass the address of that variable to a function the
> > > compiler do the right thing (In this case I can see dT defined in
> > the .map
> > > file)
> > > When I use the variable in any other part of the code (not passing
> > > it as reference to a function) the compiler uses the default value
> > instead
> > > the reference to a memory address.
> > >
> > > All this with high optimization option.
> > >
> > > I would like to know if you have a solution for me. How can I define
> > > that variable so the compiler use it as reference in any case of
> usage.
> > >
> > > Thanks
> > > Bukitoo
> > >
> > >
> > > Internal Virus Database is out-of-date.
> > > Checked by AVG Free Edition.
> > > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> > 19/12/2007 12:00
> > > a.m.
> > >
> >
> >
> >
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> >
> >
> "m...@-egroups.com
>
The easiest solution might be not to initialise the const. That way you don't have startup code
copying it from Flash to RAM.(when volatile) since it's non-initialised and the optimisation
should be irrelevant (w/o volatile)
Since you need to calibrate your product anyway, what does it matter what the initial value is ?
Worst case you look at the value in INFO flash with init code. If it's 0xFFFFFFFF then have your
code use 2.0 (or whatever) for calibration purpose - or - until the system is calibrated.

Best Regards,
Kris

-----Original Message-----
From: m... [mailto:m...] On Behalf Of FB
Sent: Saturday, 29 December 2007 1:17 AM
To: m...
Subject: RE: [msp430] Re: CONST IAR optimization

I need to store my variable in flash because it is a calibration value which
will change when we calibrate the system.
Probably I will put it into Information Memory.

_____

From: m... [mailto:m...] On Behalf Of
Kipton Moravec
Sent: Viernes, 28 de Diciembre de 2007 11:12 a.m.
To: m...
Subject: Re: [msp430] Re: CONST IAR optimization

I do not know why you feel you need to store the variable in flash and
access it as such.

You can't just go in and change the flash value. Most likely you will
have to recompile. And if you have to recompile then why does it matter?

The other option is to put the value in a EEPROM which can be changed
outside the program.

I have both used const and #define for constants that may change in the
lifetime of the program and both seem to work fine for me. I do have a
case where we put values in EEPROM and as we are fine tuning we can
change the values in EEPROM without recompiling.

I feel you are looking at a solution and not looking at the problem.

Kip

On Fri, 2007-12-28 at 13:58 +0000, tintronic wrote:
> What I meant was for you to declare the variable as
> const volatile float dT = { 2 };
>
> Have you considered the implications of changing a value stored in
> flash? I mean, you will have to erase the whole segment flash and then
> write the new value. Maybe you should think of something like
>
> float dT = { 2 } @ ;
>
> don't know if you will be needing 'volatile' and/or 'const'.
>
> Michael Kusch
>
> --- In HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com,
"FB" wrote:
> >
> > Thanks!
> > I tried use volatile keyword and IAR tries to store the variable in
> RAM. :(
> > Any other suggestion ?
> >
> > _____
> >
> > From: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
[mailto:HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com]
On
> Behalf Of
> > tintronic
> > Sent: Viernes, 28 de Diciembre de 2007 10:29 a.m.
> > To: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
> > Subject: [msp430] Re: CONST IAR optimization
> >
> >
> >
> > I think you need to declare the variable as volatile. That way, the
> > compiler doesn't assume the value to be fixed and uses the address
> > instead of the default value.
> >
> > Michael K.
> >
> > --- In HYPERLINK "mailto:msp430%-40yahoogroups.-com"msp430@-...,
> > "FB" wrote:
> > >
> > > Hi!
> > > Hi!
> > > I have a software that need to have some values stored in flash.
> > > As an example I defined:
> > > const float dT = { 2 };
> > >
> > > Obviously 2 is the default value.
> > > Now, when I pass the address of that variable to a function the
> > > compiler do the right thing (In this case I can see dT defined in
> > the .map
> > > file)
> > > When I use the variable in any other part of the code (not passing
> > > it as reference to a function) the compiler uses the default value
> > instead
> > > the reference to a memory address.
> > >
> > > All this with high optimization option.
> > >
> > > I would like to know if you have a solution for me. How can I define
> > > that variable so the compiler use it as reference in any case of
> usage.
> > >
> > > Thanks
> > > Bukitoo
> > >
> > >
> > > Internal Virus Database is out-of-date.
> > > Checked by AVG Free Edition.
> > > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> > 19/12/2007 12:00
> > > a.m.
> > >
> >
> >
> >
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> >
> >
> "m...@-egroups.com
>
I need the initial value because when I calibrate I use the default value to
generate some "default" output, and then I adjust that default value to the
real one.

_____

From: m... [mailto:m...] On Behalf Of
microbit_virgin
Sent: Viernes, 28 de Diciembre de 2007 11:29 a.m.
To: m...
Subject: RE: [msp430] Re: CONST IAR optimization

The easiest solution might be not to initialise the const. That way you
don't have startup code
copying it from Flash to RAM.(when volatile) since it's non-initialised and
the optimisation
should be irrelevant (w/o volatile)
Since you need to calibrate your product anyway, what does it matter what
the initial value is ?
Worst case you look at the value in INFO flash with init code. If it's
0xFFFFFFFF then have your
code use 2.0 (or whatever) for calibration purpose - or - until the system
is calibrated.

Best Regards,
Kris

-----Original Message-----
From: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
[mailto:HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com]
On Behalf Of FB
Sent: Saturday, 29 December 2007 1:17 AM
To: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
Subject: RE: [msp430] Re: CONST IAR optimization

I need to store my variable in flash because it is a calibration value which
will change when we calibrate the system.
Probably I will put it into Information Memory.
_____

From: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
[mailto:HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com]
On Behalf Of
Kipton Moravec
Sent: Viernes, 28 de Diciembre de 2007 11:12 a.m.
To: HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@yahoogroups.-com
Subject: Re: [msp430] Re: CONST IAR optimization

I do not know why you feel you need to store the variable in flash and
access it as such.

You can't just go in and change the flash value. Most likely you will
have to recompile. And if you have to recompile then why does it matter?

The other option is to put the value in a EEPROM which can be changed
outside the program.

I have both used const and #define for constants that may change in the
lifetime of the program and both seem to work fine for me. I do have a
case where we put values in EEPROM and as we are fine tuning we can
change the values in EEPROM without recompiling.

I feel you are looking at a solution and not looking at the problem.

Kip

On Fri, 2007-12-28 at 13:58 +0000, tintronic wrote:
> What I meant was for you to declare the variable as
> const volatile float dT = { 2 };
>
> Have you considered the implications of changing a value stored in
> flash? I mean, you will have to erase the whole segment flash and then
> write the new value. Maybe you should think of something like
>
> float dT = { 2 } @ -;
>
> don't know if you will be needing 'volatile' and/or 'const'.
>
> Michael Kusch
>
> --- In HYPERLINK
"mailto:msp430%-40yahoogroups.-com"msp430@-yahoogroups.--com,
"FB" wrote:
> >
> > Thanks!
> > I tried use volatile keyword and IAR tries to store the variable in
> RAM. :(
> > Any other suggestion ?
> >
> > _____
> >
> > From: HYPERLINK
"mailto:msp430%-40yahoogroups.-com"msp430@-yahoogroups.--com
[mailto:HYPERLINK
"mailto:msp430%-40yahoogroups.-com"msp430@-yahoogroups.--com]
On
> Behalf Of
> > tintronic
> > Sent: Viernes, 28 de Diciembre de 2007 10:29 a.m.
> > To: HYPERLINK
"mailto:msp430%-40yahoogroups.-com"msp430@-yahoogroups.--com
> > Subject: [msp430] Re: CONST IAR optimization
> >
> >
> >
> > I think you need to declare the variable as volatile. That way, the
> > compiler doesn't assume the value to be fixed and uses the address
> > instead of the default value.
> >
> > Michael K.
> >
> > --- In HYPERLINK "mailto:msp430%--40yahoogroups.--com"msp430@--...,
> > "FB" wrote:
> > >
> > > Hi!
> > > Hi!
> > > I have a software that need to have some values stored in flash.
> > > As an example I defined:
> > > const float dT = { 2 };
> > >
> > > Obviously 2 is the default value.
> > > Now, when I pass the address of that variable to a function the
> > > compiler do the right thing (In this case I can see dT defined in
> > the .map
> > > file)
> > > When I use the variable in any other part of the code (not passing
> > > it as reference to a function) the compiler uses the default value
> > instead
> > > the reference to a memory address.
> > >
> > > All this with high optimization option.
> > >
> > > I would like to know if you have a solution for me. How can I define
> > > that variable so the compiler use it as reference in any case of
> usage.
> > >
> > > Thanks
> > > Bukitoo
> > >
> > >
> > > Internal Virus Database is out-of-date.
> > > Checked by AVG Free Edition.
> > > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> > 19/12/2007 12:00
> > > a.m.
> > >
> >
> >
> >
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> >
> >
> To unsubscribe from the msp430 group, send an email to:
> HYPERLINK
"mailto:msp430--unsubscribe%-40egroups.-com"msp430--unsubscribe@--egroups.-c
om
>
That's why I suggested below it :

Worst case you look at the value in INFO flash with init code. If it's
0xFFFFFFFF then have your code use 2.0 (or whatever) for calibration purpose.

In other words, when that flash location is empty (0xFFFFFFFF), in your initialisation you can use
the default value and calibrate with that.
The rest (to place it in INFO flash) is as per numerous recent threads on how to place at a
specific address (use @).

Best Regards,
Kris

-----Original Message-----
From: m... [mailto:m...] On Behalf Of FB
Sent: Saturday, 29 December 2007 1:41 AM
To: m...
Subject: RE: [msp430] Re: CONST IAR optimization

I need the initial value because when I calibrate I use the default value to
generate some "default" output, and then I adjust that default value to the
real one.

_____

From: m... [mailto:m...] On Behalf Of
microbit_virgin
Sent: Viernes, 28 de Diciembre de 2007 11:29 a.m.
To: m...
Subject: RE: [msp430] Re: CONST IAR optimization

The easiest solution might be not to initialise the const. That way you
don't have startup code
copying it from Flash to RAM.(when volatile) since it's non-initialised and
the optimisation
should be irrelevant (w/o volatile)
Since you need to calibrate your product anyway, what does it matter what
the initial value is ?
Worst case you look at the value in INFO flash with init code. If it's
0xFFFFFFFF then have your
code use 2.0 (or whatever) for calibration purpose - or - until the system
is calibrated.

Best Regards,
Kris
I do not know why you feel you need to store the variable in flash and
access it as such.

You can't just go in and change the flash value. Most likely you will
have to recompile. And if you have to recompile then why does it matter?

The other option is to put the value in a EEPROM which can be changed
outside the program.

I have both used const and #define for constants that may change in the
lifetime of the program and both seem to work fine for me. I do have a
case where we put values in EEPROM and as we are fine tuning we can
change the values in EEPROM without recompiling.

I feel you are looking at a solution and not looking at the problem.

Kip
On Fri, 2007-12-28 at 13:58 +0000, tintronic wrote:
> What I meant was for you to declare the variable as
> const volatile float dT = { 2 };
>
> Have you considered the implications of changing a value stored in
> flash? I mean, you will have to erase the whole segment flash and then
> write the new value. Maybe you should think of something like
>
> float dT = { 2 } @ ;
>
> don't know if you will be needing 'volatile' and/or 'const'.
>
> Michael Kusch
>
> --- In m..., "FB" wrote:
> >
> > Thanks!
> > I tried use volatile keyword and IAR tries to store the variable in
> RAM. :(
> > Any other suggestion ?
> >
> > _____
> >
> > From: m... [mailto:m...] On
> Behalf Of
> > tintronic
> > Sent: Viernes, 28 de Diciembre de 2007 10:29 a.m.
> > To: m...
> > Subject: [msp430] Re: CONST IAR optimization
> >
> >
> >
> > I think you need to declare the variable as volatile. That way, the
> > compiler doesn't assume the value to be fixed and uses the address
> > instead of the default value.
> >
> > Michael K.
> >
> > --- In HYPERLINK "mailto:msp430%40yahoogroups.com"msp430@...,
> > "FB" wrote:
> > >
> > > Hi!
> > > Hi!
> > > I have a software that need to have some values stored in flash.
> > > As an example I defined:
> > > const float dT = { 2 };
> > >
> > > Obviously 2 is the default value.
> > > Now, when I pass the address of that variable to a function the
> > > compiler do the right thing (In this case I can see dT defined in
> > the .map
> > > file)
> > > When I use the variable in any other part of the code (not passing
> > > it as reference to a function) the compiler uses the default value
> > instead
> > > the reference to a memory address.
> > >
> > > All this with high optimization option.
> > >
> > > I would like to know if you have a solution for me. How can I define
> > > that variable so the compiler use it as reference in any case of
> usage.
> > >
> > > Thanks
> > > Bukitoo
> > >
> > >
> > > Internal Virus Database is out-of-date.
> > > Checked by AVG Free Edition.
> > > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> > 19/12/2007 12:00
> > > a.m.
> > >
> >
> >
> >
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> > Internal Virus Database is out-of-date.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.17.5 - Release Date:
> 19/12/2007 12:00
> > a.m.
> >
> >
> >
> >
> >
>
>

Memfault Beyond the Launch