<div dir="ltr">On a 328 why not use the eeprom - it's good for 100,000 read/write cycles. That's a lot of reboots.<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 2, 2023 at 12:00 PM Charles Manning <<a href="mailto:cdhmanning@gmail.com">cdhmanning@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Check the map file when you've done it to make sure the variable turned up in the right place.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 2, 2023 at 10:59 AM Mark Atherton <<a href="mailto:markaren1@xtra.co.nz" target="_blank">markaren1@xtra.co.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thanks Charles,<br>
<br>
Your introduction ties up well with my memory, and solution 1 was what I <br>
had in mind. Thanks for the quick-start, haven't been anywhere the <br>
linker for ages.<br>
<br>
-Mark<br>
<br>
<br>
On 6/2/2023 8:23 AM, Charles Manning wrote:<br>
> Hi Mark<br>
> <br>
> The C start up code works as you say. There are two main sections normally:<br>
> .data* variables initialised to non-zero<br>
> .bss*   variables initialised to zero<br>
> <br>
> .data* are initialised by copying initialisation values from flash to <br>
> RAM at start.<br>
> .bss* are normally just initialised to zero by a loop.<br>
> <br>
> If you want untouched memory then you need some area outside of these <br>
> and there are at least two ways to do so.<br>
> <br>
> 1) Create a new section in the ld script called uninitilised or something.<br>
> Create a variable in C and use #pragmas or _attributes() to place the <br>
> variable in the uninitialised section.<br>
> 2) Create a new section in the ld script at a specific location at a <br>
> fixed address (eg top of memory). Access it from C by creating a pointer <br>
> to the address.<br>
> int *magic_place = ((int *)0x1234);<br>
> 3) Scratch around your memory map and find an untouched address, then <br>
> create a pointer to it. ie. a less controlled version of 2.<br>
> <br>
> I would not recommend (3) because if your code changes and the memory <br>
> map changes then bad things could happen.<br>
> <br>
> <br>
> <br>
> On Fri, Jun 2, 2023 at 6:48 AM Mark Atherton <<a href="mailto:markaren1@xtra.co.nz" target="_blank">markaren1@xtra.co.nz</a> <br>
> <mailto:<a href="mailto:markaren1@xtra.co.nz" target="_blank">markaren1@xtra.co.nz</a>>> wrote:<br>
> <br>
>     Hi All,<br>
> <br>
>     I am working on a low-power application for an ATmega328P where the<br>
>     watchdog is used to repeatedly restart the machine for one<br>
>     particular state.<br>
> <br>
>     One of the mechanisms (part of a bootloader) requires that the<br>
>     number of<br>
>     WD restarts are counted by a U16.<br>
> <br>
>     I am pretty sure that C99 normally only supports initialized variables<br>
>     (with associated value) and uninitialized variables (which are set<br>
>     to 0).<br>
> <br>
>     Is it possible to declare storage in C that isn’t touched by the<br>
>     associated startup code ?<br>
> <br>
>     Options seem to be to resort to assembler (and possibly have to do<br>
>     battle with the linker script), or to find a couple of unused<br>
>     Read/Write<br>
>     peripheral registers within the 328 and use them.<br>
> <br>
>     Thoughts please.<br>
> <br>
>     Thanks, Mark<br>
> <br>
> <br>
>     _______________________________________________<br>
>     Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
>     <mailto:<a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a>><br>
>     <a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
>     <<a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a>><br>
>     Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
>     <<a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a>><br>
>     Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a><br>
>     <<a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a>> for venue, directions and dates.<br>
>     When replying, please edit your Subject line to reflect new subjects.<br>
> <br>
> <br>
> _______________________________________________<br>
> Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
> <a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
> Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
> Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a> for venue, directions and dates.<br>
> When replying, please edit your Subject line to reflect new subjects.<br>
<br>
<br>
_______________________________________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
<a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a> for venue, directions and dates.<br>
When replying, please edit your Subject line to reflect new subjects.</blockquote></div>
_______________________________________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
<a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a> for venue, directions and dates.<br>
When replying, please edit your Subject line to reflect new subjects.</blockquote></div>