donovan6000 / iMe

Third-party compatible firmware for the Micro 3D printer
GNU General Public License v3.0
60 stars 16 forks source link

Building iMe, .hex to big #50

Closed MaxTimothy closed 7 years ago

MaxTimothy commented 7 years ago

I'm attempting to add acceleration to iMe, but when I attempt to install the newly made hex using m33 I receive an error "is too big" in the dialog box. My project's firmware hex is 34kb, I did notice that the hex that comes with m33 is only 31.5kb. If I build the unmodified project it produces a 33.9kb hex, is there something that I need to change in atmel studio for it to produce a smaller hex?

donovan6000 commented 7 years ago

Make sure your using the latest version of Atmel Studio and that you have it setup to use the provided Makefile. iMe's compiler settings already has it configured to to that, so you should be able to open the project file with Atmel Studio and be able to compile it to a small enough size.

MaxTimothy commented 7 years ago

I'm on version 7.0.1188, have the project configured to use the iMe makefile. Still can't compile the unedited iMe master into a hex file smaller than 33.9kb. Any more suggestions?

donovan6000 commented 7 years ago

It looks like the Linux and Windows compilers are producing different results even though they're the same versions. The compiler options that are causing this are the linker time optimization settings -flto and -flto-partition. Unfortunately I'm not able to produce a small enough firmware using the Window's compiler without those settings working correctly.

Here's the resulting firmware sizes in bytes when using different linker time optimization settings on the different operating systems.

Linux
    -fno-lto: 33318
    -flto-partition=1to1: 32256
    -flto-partition=none: 32502
    -flto-partition=max: 32758
    -flto-partition=balanced: 32504

Windows
    -fno-lto: 33318
    -flto-partition=1to1: 34812
    -flto-partition=none: 35042
    -flto-partition=max: 35086
    -flto-partition=balanced: 34916
MaxTimothy commented 7 years ago

I was wondering if that was the issue, I'll just compile it on Linux then. Thanks!