<div dir="ltr">It is outside .data and explicitly NOT initialised.<div>Excerpts from the linker file...<br><div><br></div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace;font-size:14px;line-height:19px;white-space:pre"><div><span style="color:rgb(106,153,85)">/* Specify the memory areas */</span></div><div><span style="color:rgb(220,220,170)">MEMORY</span></div><div>{</div><div><span style="color:rgb(156,220,254)">DTCM</span> (<span style="color:rgb(197,134,192)">xrw</span>)     <span style="color:rgb(86,156,214)">:</span> <span style="color:rgb(156,220,254)">ORIGIN</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">0x20000000</span>, <span style="color:rgb(156,220,254)">LENGTH</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">128k</span></div><div><span style="color:rgb(156,220,254)">RAM</span> (<span style="color:rgb(197,134,192)">xrw</span>)      <span style="color:rgb(86,156,214)">:</span> <span style="color:rgb(156,220,254)">ORIGIN</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">0x20020000</span>, <span style="color:rgb(156,220,254)">LENGTH</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">368K</span></div><div><span style="color:rgb(156,220,254)">BOOTRAM</span> (<span style="color:rgb(197,134,192)">xrw</span>)  <span style="color:rgb(86,156,214)">:</span> <span style="color:rgb(156,220,254)">ORIGIN</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">0x2007C000</span>, <span style="color:rgb(156,220,254)">LENGTH</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">16K</span></div><div><span style="color:rgb(156,220,254)">FLASH</span> (<span style="color:rgb(197,134,192)">rx</span>)     <span style="color:rgb(86,156,214)">:</span> <span style="color:rgb(156,220,254)">ORIGIN</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">0x8000000</span>,  <span style="color:rgb(156,220,254)">LENGTH</span> <span style="color:rgb(86,156,214)">=</span> <span style="color:rgb(181,206,168)">2048K</span></div><div>}</div></div><div><br></div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace;font-size:14px;line-height:19px;white-space:pre"><div><span style="color:rgb(106,153,85)">/* used by audio buffers and JPEG h/w */</span> </div><div>  <span style="color:rgb(156,220,254)">.MCU_Data_section</span>     <span style="color:rgb(181,206,168)">0x20000000</span> <span style="color:rgb(197,134,192)">(NOLOAD)</span> <span style="color:rgb(86,156,214)">:</span> { <span style="color:rgb(220,220,170)">*</span>(<span style="color:rgb(156,220,254)">.MCU_Data_section</span>)     } <span style="color:rgb(86,156,214)">></span><span style="color:rgb(156,220,254)">DTCM</span></div></div></div><div><br></div><div>The DTCM memory is by default available to all internal DMA buses (so saves playing with the cache setup using '<span style="color:rgb(220,220,170);background-color:rgb(30,30,30);font-family:"Droid Sans Mono","monospace",monospace;font-size:14px;white-space:pre">HAL_MPU_ConfigRegion()'.</span></div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 5, 2022 at 6:47 PM Andrew Dachs <<a href="mailto:dachsa492@gmail.com">dachsa492@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="auto">Hi Robin,<div>Is your special area of memory inside .data and part of the initialisation on startup?</div><div>Andy</div><div><br></div><div><br><br><div dir="ltr">Sent from my iPhone</div><div dir="ltr"><br><blockquote type="cite">On 5/02/2022, at 5:42 PM, Robin Gilks <<a href="mailto:gb7ipd@gmail.com" target="_blank">gb7ipd@gmail.com</a>> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr">Hmmm - thanks Mark, I  hadn't thought of packing issues. <div>It's not like I'm trying a union to another struct so positioning would be critical. That being the case I think I'll keep that thought on the back burner for now..</div><div><br></div><div>Cheers</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 5, 2022 at 4:10 PM 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">I have seen issues with data segments, where large chunks (u32, u8*) <br>
follow small chunks (u8).<br>
<br>
Try changing<br>
<br>
 > uint8_t State;<br>
 > uint8_t *DataBuffer;<br>
 > uint32_t DataBufferSize;<br>
<br>
to<br>
<br>
 > uint32_t DataBufferSize;<br>
 > uint8_t *DataBuffer;<br>
 > uint8_t State;<br>
<br>
-Mark<br>
<br>
<br>
<br>
<br>
On 5/02/2022 1:50 PM, Robin Gilks wrote:<br>
> Some may recall that a year or 2 ago I had great problems getting the <br>
> hardware JPEG encode to work on an STM32 processor. It turned out that <br>
> the memory cache attributes manifested as a race condition between DMA <br>
> and CPU access.<br>
> The problem has just reappeared as a result of updating <br>
> from arm-none-eabi-gcc-9.2.1-1.1 to arm-none-eabi-gcc-10.3.1-2.3.<br>
> <br>
> After a few pokes at the code I've narrowed the issue down to whether a <br>
> volatile struct element is initialized statically  or at run time. <br>
> Interestingly the issue is inverted between compiler versions<br>
> The buffer referenced by the structure element 'DataBuffer'  is defined <br>
> and instantiated in a reserved section of memory that has the correct <br>
> cache attributes<br>
> <br>
> typedef struct<br>
> {<br>
> uint8_t State;<br>
> uint8_t *DataBuffer;<br>
> uint32_t DataBufferSize;<br>
> }JPEG_Data_BufferTypeDef;<br>
> uint8_t <br>
> JPEG_Data_InBuffer[CHUNK_SIZE_IN]__attribute__((section(".MCU_Data_section")));<br>
> original code - works with gcc-9; fails with gcc-10:<br>
> volatile JPEG_Data_BufferTypeDef Jpeg_IN_BufferTab = {JPEG_BUFFER_EMPTY, <br>
> JPEG_Data_InBuffer, 0};<br>
> current code fails with gcc-9 works with gcc-10:<br>
> volatileJPEG_Data_BufferTypeDefJpeg_IN_BufferTab= {0, 0, 0};<br>
> ...<br>
> Jpeg_IN_BufferTab.DataBufferSize = 0;<br>
> Jpeg_IN_BufferTab.State = JPEG_BUFFER_EMPTY;<br>
> Jpeg_IN_BufferTab.DataBuffer = JPEG_Data_InBuffer;<br>
> <br>
> Note that NO other changes (apart from the compiler version) were made!! <br>
> I'm at a total loss as to what is going on, hopefully someone can shine <br>
> a light ;)<br>
> <br>
> -- <br>
> Robin Gilks<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>
_______________________________________________<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>
<span>_______________________________________________</span><br><span>Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a></span><br><span><a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a></span><br><span>Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a></span><br><span>Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" target="_blank">http://kiwibots.org</a> for venue, directions and dates.</span><br><span>When replying, please edit your Subject line to reflect new subjects.</span></div></blockquote></div></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>