- Posts: 390
GNU ARM Tools V4.8, code size and Devo7e features
- domcars0
-
Topic Author
- Offline
Less
More
04 Jan 2014 17:30 - 05 Jan 2014 21:02 #17931
by domcars0
Devo 10 (+7e) owner. It's mine, please don't touch it with your big fingers
GNU ARM Tools V4.8, code size and Devo7e features was created by domcars0
Hi everybody and Happy New Year!
As the devo 7e lose the permanent Timer with the 4.x release, I've tried the new GNU Tools (V4.8 ) which has been optimized to reduce code size.
One very important feature of this new compiler for deviation is the Newlib-nano (newlib branch optimized for code size).
So I've tried this new crosscompiler on my Linux Box...
And I'm happy to say that now I'm able to have not only the permanent Timer on my devo 7e but also the Layout Editor
!!!
Install the new compiler from:
launchpad.net/gcc-arm-embedded/+milestone/4.8-2013-q4-major
and then edit the src/libopencm3/lib/stm32/f1/Makefile
add the "--specs=nano.specs" to the CFLAGS variable
Edit also the src/target/common/devo/Makefile.inc
and add also the "--specs=nano.specs" to the CFLAGS variable
you have also to add the -lnosys to the LDFLAGS
(LFLAGS = -nostartfiles -Wl,-gc-sections -Wl,-Map=$(TARGET).map,--cref -lc -lnosys)
with #define HAS_PERMANENT_TIMER 1 and #define HAS_LAYOUT_EDITOR 1
I get :
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801ff94 = 115.89kB
RAM: 0x20000000 - 0x2000243c = 9.06kB
2014 is really a very good year is'nt it ?
Enjoy!
[EDIT] Change the title and the link to the GNU ARM V4.8 compiler
As the devo 7e lose the permanent Timer with the 4.x release, I've tried the new GNU Tools (V4.8 ) which has been optimized to reduce code size.
One very important feature of this new compiler for deviation is the Newlib-nano (newlib branch optimized for code size).
So I've tried this new crosscompiler on my Linux Box...
And I'm happy to say that now I'm able to have not only the permanent Timer on my devo 7e but also the Layout Editor
Install the new compiler from:
launchpad.net/gcc-arm-embedded/+milestone/4.8-2013-q4-major
and then edit the src/libopencm3/lib/stm32/f1/Makefile
add the "--specs=nano.specs" to the CFLAGS variable
Edit also the src/target/common/devo/Makefile.inc
and add also the "--specs=nano.specs" to the CFLAGS variable
you have also to add the -lnosys to the LDFLAGS
(LFLAGS = -nostartfiles -Wl,-gc-sections -Wl,-Map=$(TARGET).map,--cref -lc -lnosys)
with #define HAS_PERMANENT_TIMER 1 and #define HAS_LAYOUT_EDITOR 1
I get :
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801ff94 = 115.89kB
RAM: 0x20000000 - 0x2000243c = 9.06kB
2014 is really a very good year is'nt it ?
Enjoy!
[EDIT] Change the title and the link to the GNU ARM V4.8 compiler
Devo 10 (+7e) owner. It's mine, please don't touch it with your big fingers
Last edit: 05 Jan 2014 21:02 by domcars0.
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
04 Jan 2014 17:55 #17937
by PhracturedBlue
Replied by PhracturedBlue on topic GNU ARM Tools V4.7, code size and Devo7e features
I wonder if they'll have a 4.8 build with the nanolib. When we compared a summon-arm built 4.8 vs the 4.7 'embedded' build (without the nanolib), the code was ~1k smaller. If we additionally got the nanolib benefits, that would leave enough headroom I could actually make the production build have these features.
- sbstnp
-
- Offline
Less
More
- Posts: 649
04 Jan 2014 17:57 - 04 Jan 2014 18:03 #17938
by sbstnp
Devo 10 + 4in1
Spektrum Dx9
FrSky Taranis + TBS Crossfire
Replied by sbstnp on topic GNU ARM Tools V4.7, code size and Devo7e features
Updating to 4.8-q3q4 as we speak. Will try it out in a couple of minutes.
So it works with 4-8-2013q4-0precise7 as well:
Edit: ok this was on my flexible build, trying a clean repo now.
So it works with 4-8-2013q4-0precise7 as well:
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801fc68 = 115.10kB
RAM: 0x20000000 - 0x2000243c = 9.06kB
Edit: ok this was on my flexible build, trying a clean repo now.
Devo 10 + 4in1
FrSky Taranis + TBS Crossfire
Last edit: 04 Jan 2014 18:03 by sbstnp.
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
04 Jan 2014 18:04 #17939
by PhracturedBlue
Replied by PhracturedBlue on topic GNU ARM Tools V4.7, code size and Devo7e features
sbstnp, is that with the same option DomCars used?
- sbstnp
-
- Offline
Less
More
- Posts: 649
04 Jan 2014 18:07 - 04 Jan 2014 18:11 #17940
by sbstnp
Devo 10 + 4in1
Spektrum Dx9
FrSky Taranis + TBS Crossfire
Replied by sbstnp on topic GNU ARM Tools V4.7, code size and Devo7e features
Edit: PB, yes, that build was with timer and editor.
So, standard build (no timer, no layout editor), clean repo:
With timer and editor, clean repo:
So, standard build (no timer, no layout editor), clean repo:
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801f1ac = 112.42kB
RAM: 0x20000000 - 0x20002424 = 9.04kB
With timer and editor, clean repo:
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801fd64 = 115.35kB
RAM: 0x20000000 - 0x20002438 = 9.05kB
Devo 10 + 4in1
FrSky Taranis + TBS Crossfire
Last edit: 04 Jan 2014 18:11 by sbstnp.
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
04 Jan 2014 18:17 #17941
by PhracturedBlue
Replied by PhracturedBlue on topic GNU ARM Tools V4.7, code size and Devo7e features
That is pretty impressive. My default build is currently 115.09k on the compiler I use for releases. So for 250bytes, you can get the layout editor and the permanent timers.
The only issue is that we need to be able to build for Windows too.
If you provide instructions on what you are doing, I can try to cross-compile for windws and see how it goes.
The only issue is that we need to be able to build for Windows too.
If you provide instructions on what you are doing, I can try to cross-compile for windws and see how it goes.
- domcars0
-
Topic Author
- Offline
Less
More
- Posts: 390
04 Jan 2014 18:19 - 04 Jan 2014 18:25 #17942
by domcars0
Devo 10 (+7e) owner. It's mine, please don't touch it with your big fingers
Replied by domcars0 on topic GNU ARM Tools V4.7, code size and Devo7e features
You're right! I don't see that there was a newer release!!!
This is a must!
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801fdcc = 115.45kB
RAM: 0x20000000 - 0x2000244c = 9.07kB
(with 2 extra switches, Permanent timer and Layout editor)
This is a must!
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801fdcc = 115.45kB
RAM: 0x20000000 - 0x2000244c = 9.07kB
(with 2 extra switches, Permanent timer and Layout editor)
Devo 10 (+7e) owner. It's mine, please don't touch it with your big fingers
Last edit: 04 Jan 2014 18:25 by domcars0.
- sbstnp
-
- Offline
Less
More
- Posts: 649
04 Jan 2014 18:47 - 04 Jan 2014 18:47 #17945
by sbstnp
Haven't done anything special, that was on a Ubuntu 12.04 vm with gcc-arm-embedded 2103q4 and domcars0 mods to the Makefiles.
You reckon there would be a chance to have this gcc and newlib cross compiled for Windows?
Devo 10 + 4in1
Spektrum Dx9
FrSky Taranis + TBS Crossfire
Replied by sbstnp on topic GNU ARM Tools V4.7, code size and Devo7e features
PhracturedBlue wrote: If you provide instructions on what you are doing, I can try to cross-compile for windws and see how it goes.
Haven't done anything special, that was on a Ubuntu 12.04 vm with gcc-arm-embedded 2103q4 and domcars0 mods to the Makefiles.
You reckon there would be a chance to have this gcc and newlib cross compiled for Windows?
Devo 10 + 4in1
FrSky Taranis + TBS Crossfire
Last edit: 04 Jan 2014 18:47 by sbstnp.
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
05 Jan 2014 00:21 - 05 Jan 2014 01:06 #17957
by HappyHarry
Replied by HappyHarry on topic GNU ARM Tools V4.7, code size and Devo7e features
ROM: 0x08003000 - 0x0801ff64 = 115.85kB
RAM: 0x20000000 - 0x200027ec = 9.98kB
that's with the 2x2way patch, perm timer and layout editor, built with tonights code using sbstnp's arch vm that hasn't been changed since it was downloaded.
and a completely stock build with no target_defs changes
ROM: 0x08003000 - 0x0801fd8c = 115.39kB
RAM: 0x20000000 - 0x200027d8 = 9.96kB
so is there a chance of getting the telemetry and the layout editor to fit with this new version of the compiler? as building the same source as above but with the permtimer off and switching telemetry on ends up being 1012 bytes over
RAM: 0x20000000 - 0x200027ec = 9.98kB
that's with the 2x2way patch, perm timer and layout editor, built with tonights code using sbstnp's arch vm that hasn't been changed since it was downloaded.
and a completely stock build with no target_defs changes
ROM: 0x08003000 - 0x0801fd8c = 115.39kB
RAM: 0x20000000 - 0x200027d8 = 9.96kB
so is there a chance of getting the telemetry and the layout editor to fit with this new version of the compiler? as building the same source as above but with the permtimer off and switching telemetry on ends up being 1012 bytes over
Last edit: 05 Jan 2014 01:06 by HappyHarry.
- kreidler
-
- Offline
Less
More
- Posts: 157
05 Jan 2014 11:48 - 05 Jan 2014 11:50 #17981
by kreidler
Replied by kreidler on topic GNU ARM Tools V4.7, code size and Devo7e features
You guys are great!
I tested https://launchpad.net/gcc-arm-embedded/4.8/4.8-2013-q4-major on the mingw environment with domcars options. Unfortunately I do not have a 7e on hand but the emu is running fine.
All builds done with 3430be7
Started with 4.7 2012q4
with telemetry, permanent timer, layout editor + 1x3sw patch
ROM: 0x08003000 - 0x0801fff0 = 115.98kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
and on 4.7 2013q3
with telemetry, permanent timer, layout editor + 1x3sw patch
region `rom' overflowed by 4 bytes
now going to 4.8 2013q4
with telemetry, permanent timer, layout editor + 1x3sw patch
ROM: 0x08003000 - 0x0801fdb8 = 115.43kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
For comparision with the linux users around:
Standard build with 4.8 2013q4 (telemetry only)
ROM: 0x08003000 - 0x0801f1a8 = 112.41kB
RAM: 0x20000000 - 0x20002424 = 9.04kB
with telemetry, permanent timer, layout editor
with 4.8 2013q4
ROM: 0x08003000 - 0x0801fd60 = 115.34kB
RAM: 0x20000000 - 0x20002438 = 9.05kB
Hey, is the Windows one now better than the others
?
I tested https://launchpad.net/gcc-arm-embedded/4.8/4.8-2013-q4-major on the mingw environment with domcars options. Unfortunately I do not have a 7e on hand but the emu is running fine.
All builds done with 3430be7
Started with 4.7 2012q4
with telemetry, permanent timer, layout editor + 1x3sw patch
ROM: 0x08003000 - 0x0801fff0 = 115.98kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
and on 4.7 2013q3
with telemetry, permanent timer, layout editor + 1x3sw patch
region `rom' overflowed by 4 bytes
now going to 4.8 2013q4
with telemetry, permanent timer, layout editor + 1x3sw patch
ROM: 0x08003000 - 0x0801fdb8 = 115.43kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
For comparision with the linux users around:
Standard build with 4.8 2013q4 (telemetry only)
ROM: 0x08003000 - 0x0801f1a8 = 112.41kB
RAM: 0x20000000 - 0x20002424 = 9.04kB
with telemetry, permanent timer, layout editor
with 4.8 2013q4
ROM: 0x08003000 - 0x0801fd60 = 115.34kB
RAM: 0x20000000 - 0x20002438 = 9.05kB
Hey, is the Windows one now better than the others
Last edit: 05 Jan 2014 11:50 by kreidler.
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
05 Jan 2014 20:14 - 05 Jan 2014 20:27 #18015
by HappyHarry
Replied by HappyHarry on topic GNU ARM Tools V4.7, code size and Devo7e features
i've just built with these changes on xubuntu 12.04lts, devo7e with the 3way patch, telemetry, permanent timer and layout editor
ROM: 0x08003000 - 0x0801fdbc = 115.43kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
great news indeed
, thanks for the heads up domcars0
ROM: 0x08003000 - 0x0801fdbc = 115.43kB
RAM: 0x20000000 - 0x20002450 = 9.08kB
great news indeed
Last edit: 05 Jan 2014 20:27 by HappyHarry.
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
06 Jan 2014 08:33 #18054
by SeByDocKy
Replied by SeByDocKy on topic GNU ARM Tools V4.8, code size and Devo7e features
Is last PB compliled such way with those options activated ?
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
06 Jan 2014 10:17 #18060
by HappyHarry
Replied by HappyHarry on topic GNU ARM Tools V4.8, code size and Devo7e features
I'm not sure bud, but I have posted builds for the 7e with everything enabled in the builds forum
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
06 Jan 2014 11:00 #18065
by SeByDocKy
Thanks for sharing Harry
But the best option will be compile NB like this now by the way ...
Replied by SeByDocKy on topic GNU ARM Tools V4.8, code size and Devo7e features
HappyHarry wrote: I'm not sure bud, but I have posted builds for the 7e with everything enabled in the builds forum
Thanks for sharing Harry
But the best option will be compile NB like this now by the way ...
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
06 Jan 2014 14:37 #18073
by PhracturedBlue
Replied by PhracturedBlue on topic GNU ARM Tools V4.8, code size and Devo7e features
I'm not yet sure I'll turn those options on by default. Once I turn them on, people won't expect them to go away, and that reduces the available memory I have to play with. Having the extra 2kB to play with for '5.0' features (whatever they may be) sounds appealing. We'll see.
- robca
-
- Offline
Less
More
- Posts: 174
14 Jan 2014 22:02 #18510
by robca
Replied by robca on topic GNU ARM Tools V4.8, code size and Devo7e features
Is there a VM already made with the new optimizing compiler?
I'm being lazy, I know
I'm being lazy, I know
Time to create page: 1.317 seconds
-
Home
-
Forum
-
Development
-
Development
- GNU ARM Tools V4.8, code size and Devo7e features