<div dir="ltr"><div><div>Hi Robin<br><br></div>I've done lots of work with ARM (probably coming up 20 years now). I've never seem something like that. Nor does it raise any aha! flags. ARM is generally a very well behaved 32 bit architecture.<br><br></div><div>arm gcc is also generally a very good compiler with very few issues. All the phone sw in an iphone or android is built with it.<br><br></div><div>If you're still stuck, feel free to send more specific questions my way.<br></div><div><br></div><div>First things first... In general packing is not a good idea for two reasons:<br><br></div><div>1) Less people do packing therefore more likely to expose "interesting" behaviour.<br></div><div>2) Packing very seldom saves space.<br><br></div><div>But that's probably not your problem...<br><br></div><div>Start off by building with the following flags <br></div><div>-Wall  all warnings<br></div><div>-Wextra even more warnings<br></div><div>-Werror   make all warnings into errors<br></div><div>-O0     No optimisation for now.<br><br></div><div>In general those will pull up any programmer daftness. Saved my bacon many times :-).<br></div><div><br></div><div>-- Charles<br><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 11, 2016 at 10:40 PM, Mark Atherton <span dir="ltr"><<a href="mailto:markaren1@xtra.co.nz" target="_blank">markaren1@xtra.co.nz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">random thoughts:<br>
<br>
have seen these kinds of things with structs before<br>
<br>
have you packed u8's & u16's into 32 bit lumps, or are the elements a mix of types, jamb-packed together ?<br>
<br>
don't suppose that your FLASH uses 256 byte sectors ? :)<br>
<br>
can you post the struct, also, what type of FLASH ?<span class="HOEnZb"><font color="#888888"><br>
<br>
-Mark</font></span><span class="im HOEnZb"><br>
<br>
<br>
On 11/10/2016 9:58 PM, Robin Gilks wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I've hit a problem with the arm-none-eabi-gcc compiler that just doesn't<br>
make sense.<br>
<br>
I'm developing some code on an STM32F303xC system and use a struct to hold<br>
config data that gets copied to/from an external flash NOR chip. It's all<br>
worked great until I added a few more members and the size of the struct<br>
went over 256 bytes.<br>
<br>
An arbitrary function (which doesn't directly use the struct) is truncated<br>
and a b.n infinite loop instruction inserted in (what should be) the<br>
middle. Reduce the size of the struct and is all OK again.<br>
<br>
I've tried playing with pack attributes but if the total size is over 256<br>
bytes then boom!<br>
<br>
I'm getting the same with the standard Debian Jessie install:<br>
gcc version 4.8.4 20141219 (release) (4.8.4-1+11-1)<br>
and the AC6 version used by STM32 WorkBench Eclipse plugin<br>
gcc version 5.2.1 20151202 (release) [ARM/embedded-5-branch revision<br>
231848] (GNU Tools for ARM Embedded Processors)<br>
<br>
Got 10k of RAM space and over 200k of flash code space left - I just don't<br>
understand!!<br>
<br>
</blockquote>
<br>
<br></span><div class="HOEnZb"><div class="h5">
______________________________<wbr>_________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.linuxnut.co.nz" target="_blank">Chchrobotics@lists.linuxnut.co<wbr>.nz</a><br>
<a href="http://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">http://lists.ourshack.com/mail<wbr>man/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipe<wbr>rmail/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>
</div></div></blockquote></div><br></div>