<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body 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 <gb7ipd@gmail.com> 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">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 Chchrobotics@lists.ourshack.com</span><br><span>https://lists.ourshack.com/mailman/listinfo/chchrobotics</span><br><span>Mail Archives: http://lists.ourshack.com/pipermail/chchrobotics/</span><br><span>Meetings usually 3rd Monday each month. See http://kiwibots.org for venue, directions and dates.</span><br><span>When replying, please edit your Subject line to reflect new subjects.</span></div></blockquote></div></body></html>