- Posts: 5
about reduce devo7e code size
- yuqiang
-
Topic Author
- Offline
Less
More
20 Dec 2013 07:17 - 23 Dec 2013 05:18 #16823
by yuqiang
about reduce devo7e code size was created by yuqiang
Hi PB,
Thanks to your open source deviation firmware.
I plan to add a new protocol in devo7e, so I need print some debug information via UART.
As guide, I using "TYPE=dev" for enable UART print, but the dfu image size is bigger than 116Kb
I want to reduce some code size, Can you give me some suggests?
Thanks again~
notice: After I update code to latest version, TYPE=dev will work without any modify. update @ 12/23/2013
Thanks to your open source deviation firmware.
I plan to add a new protocol in devo7e, so I need print some debug information via UART.
As guide, I using "TYPE=dev" for enable UART print, but the dfu image size is bigger than 116Kb
I want to reduce some code size, Can you give me some suggests?
Thanks again~
notice: After I update code to latest version, TYPE=dev will work without any modify. update @ 12/23/2013
Last edit: 23 Dec 2013 05:18 by yuqiang.
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
20 Dec 2013 07:26 #16824
by PhracturedBlue
Replied by PhracturedBlue on topic about reduce devo7e code size
disable the standard mixer (HAS_STANDARD_MIXER = 0). That is the biggest reduction you'll get. Writing protocols on the devo7e is not much fun to be honest. You will spend more time fightingthe build process and trying to figue out if the module code is working, than actually working on the protocol itself. If you don't have a bigger radio, I'd recommend getting a RaspberryPi and developing the protocol there instead (see
bitbucket.org/PhracturedBlue/rpi_protocols
) I haven't updated it with the most recent protocols, but generally if you develop protocols with it, they just work when you bring them to the Devo (assuming the RF chip is already supported)
- yuqiang
-
Topic Author
- Offline
Less
More
- Posts: 5
20 Dec 2013 08:01 - 20 Dec 2013 08:04 #16825
by yuqiang
Replied by yuqiang on topic about reduce devo7e code size
thanks for your reply,
1. "HAS_STANDARD_MIXER = 0" I can't find anything about HAS_STANDARD_MIXER in source code;
2. using RaspberryPi is a good idea, but the protocol is too simple.
btw, Now I disable ini_handler() in model.c, just fill "Model" with a hijacked data, this will reduce the size to 112Kb.
1. "HAS_STANDARD_MIXER = 0" I can't find anything about HAS_STANDARD_MIXER in source code;
2. using RaspberryPi is a good idea, but the protocol is too simple.
btw, Now I disable ini_handler() in model.c, just fill "Model" with a hijacked data, this will reduce the size to 112Kb.
Last edit: 20 Dec 2013 08:04 by yuqiang.
- vlad_vy
-
- Offline
Less
More
- Posts: 3333
20 Dec 2013 08:20 - 20 Dec 2013 08:20 #16827
by vlad_vy
Replied by vlad_vy on topic about reduce devo7e code size
\target\devo7e\target_defs.h
#define HAS_STANDARD_GUI 0
#define HAS_STANDARD_GUI 0
Last edit: 20 Dec 2013 08:20 by vlad_vy.
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
20 Dec 2013 11:30 #16831
by HappyHarry
Replied by HappyHarry on topic about reduce devo7e code size
guys how can you build without telemetry? I can find nothing in the define file?
- victzh
-
- Offline
Less
More
- Posts: 1386
20 Dec 2013 16:36 #16848
by victzh
Replied by victzh on topic about reduce devo7e code size
There was a condition which turned off Standard GUI for developer builds for Devo 7E. It is still there, but commented out. May be it is safe to put it back? I doubt that people developing protocols would not be able to figure out Advanced GUI.
- victzh
-
- Offline
Less
More
- Posts: 1386
20 Dec 2013 16:40 #16849
by victzh
Replied by victzh on topic about reduce devo7e code size
@HappyHarry probably you can't. GUI stuff is interdependent, and while some effort was spent to cut off Standard GUI, nobody did this for many other parts. It is complicated - you need to introduce conditionals in many places around not wanted functionality, and cut it out so that the pieces you cut not used in any other places. You need to check that it works for all the platforms. So it is several (dozens) build attempts.
- kreidler
-
- Offline
Less
More
- Posts: 157
21 Dec 2013 10:02 - 21 Dec 2013 10:02 #16875
by kreidler
My attempt was quick and dirty only. If you want to test how much the advantange will be just start with removing (comment out) the following lines in menus.c:Do several times a new build and follow the errors given by the complier to comment the appropriate lines out until the file will be fully complied.
But I cannot remember how much space I saved.
Replied by kreidler on topic about reduce devo7e code size
There is no switch for disabling the telemetry stuff. I did it some time ago just to get all in the 116kB before having the opportunity to disable the Standard GUI.HappyHarry wrote: guys how can you build without telemetry? I can find nothing in the define file?
My attempt was quick and dirty only. If you want to test how much the advantange will be just start with removing (comment out) the following lines in menus.c:
{PAGEID_TELEMCFG, NULL, MENUTYPE_SUBMENU, 0, MIXER_ALL, PREVIOUS_ITEM},
....
{PAGEID_TELEMMON, NULL, MENUTYPE_SUBMENU, 1, MIXER_ALL, PREVIOUS_ITEM},But I cannot remember how much space I saved.
Last edit: 21 Dec 2013 10:02 by kreidler.
- rbe2012
-
- Offline
- So much to do, so little time...
Less
More
- Posts: 1433
21 Dec 2013 10:26 #16877
by rbe2012
Replied by rbe2012 on topic about reduce devo7e code size
This will work but if you want to do this, add a "#define NO_TELEMETRY 1" line to target/devo7/capabilities.h and don't comment the lines but enclose them with "#if NO_TELEMETRY == 1" and "#endif".
With that you implement a switch which allows you to turn telemetry on again if somewhere else some space is left...
And I would look into the code if you publish it to see if we can make it a general switch (I am sure that more code could be disabled than the lines throwing errors).
Have I mentioned that I own a Devo7e since yesterday? Now I know why you guys like it - it is so mignon, but I can use it with my big paws... I have tested the actual build, but it does not fit; I had to disable the standard mixer gui (so nothing important lost
).
With that you implement a switch which allows you to turn telemetry on again if somewhere else some space is left...
And I would look into the code if you publish it to see if we can make it a general switch (I am sure that more code could be disabled than the lines throwing errors).
Have I mentioned that I own a Devo7e since yesterday? Now I know why you guys like it - it is so mignon, but I can use it with my big paws... I have tested the actual build, but it does not fit; I had to disable the standard mixer gui (so nothing important lost
- kreidler
-
- Offline
Less
More
- Posts: 157
21 Dec 2013 11:55 #16879
by kreidler
If you do not mind my preferred config isboth options will work on the 7e as well.
Replied by kreidler on topic about reduce devo7e code size
I do have with b5579a0 115.75kb on Windows environment with the ARM as recommended by PB here http://deviationtx.com/forum/7-development/2407-testing-compiler-builds .rbe2012 wrote: I have tested the actual build, but it does not fit; I had to disable the standard mixer gui (so nothing important lost
).
If you do not mind my preferred config is
#define HAS_STANDARD_GUI 0
#define HAS_PERMANENT_TIMER 1
#define ENABLE_LAYOUT_EDIT 1- SadSack
-
- Offline
Less
More
- Posts: 317
21 Dec 2013 13:38 #16883
by SadSack
Maybe you should try installing GCC LINARO 4.8-2013.11.
I was able to build it under unbuntu 12.4 but haven't figured how to cross compile for windows and for me Mingw couldn't build it but that could have just been me.
Replied by SadSack on topic about reduce devo7e code size
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801faf4 = 114.74kB
RAM: 0x20000000 - 0x200027e4 = 9.97kB
Stock-devo7e.bin
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801dd60 = 107.34kB
RAM: 0x20000000 - 0x20002748 = 9.82kB
ENABLE_LAYOUT_EDIT-devo7e.bin
+ Optimizing placement and re-linking
ROM: 0x08003000 - 0x0801ec68 = 111.10kB
RAM: 0x20000000 - 0x200027b4 = 9.93kB
#define HAS_STANDARD_GUI 0
#define HAS_ADVANCED_GUI 1
//#endif
#define NO_LANGUAGE_SUPPORT 1
#define HAS_PERMANENT_TIMER 1
#define ENABLE_LAYOUT_EDIT 1
#define DATALOG_ENABLED 1 << copied from devo10 :-)Maybe you should try installing GCC LINARO 4.8-2013.11.
I was able to build it under unbuntu 12.4 but haven't figured how to cross compile for windows and for me Mingw couldn't build it but that could have just been me.
- PhracturedBlue
-
- Offline
Less
More
- Posts: 4403
21 Dec 2013 16:11 #16892
by PhracturedBlue
Replied by PhracturedBlue on topic about reduce devo7e code size
I added the ability to disable telemetry. I also renamed a bunch of variables to be consistent
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
21 Dec 2013 17:10 #16895
by HappyHarry
Replied by HappyHarry on topic about reduce devo7e code size
thanks for all the info guys, as I'm sure you've noticed I'm a novice at C/C++ but I am willing to learn. the reason I need the space is I've added the extra switches (2 x 3way, i know I can only use 1 of the 3 way switches just now) to my 7e and I need space for the current switch mod. I don't mind learning the advanced GUI, and disabling the standard if needs be, it's just the thought of having to go through the setup of 5 different heli's and 2 quads again as I don't think the model ini's are transferable?
phil
phil
- FDR
-
- Offline
21 Dec 2013 20:36 #16901
by FDR
They are, but the configs will be unnecessarily complex...
Replied by FDR on topic about reduce devo7e code size
HappyHarry wrote: ...as I don't think the model ini's are transferable?
They are, but the configs will be unnecessarily complex...
- HappyHarry
-
- Offline
Less
More
- Posts: 1136
21 Dec 2013 21:32 #16904
by HappyHarry
Replied by HappyHarry on topic about reduce devo7e code size
heh the advanced gui is unnecessarily complex
- FDR
-
- Offline
21 Dec 2013 22:05 #16907
by FDR
Replied by FDR on topic about reduce devo7e code size
No. A model config made with the standard gui is unnecessarily complex if you switch it to the advanced gui, mostly because of the CCPM config it uses...
- kreidler
-
- Offline
Less
More
- Posts: 157
21 Dec 2013 22:29 #16914
by kreidler
Just to enable some additional features with the switch mod. I just show the changes only:114.93kB working. So, no problem for your mod with Standard GUI.
Replied by kreidler on topic about reduce devo7e code size
Latest build 115.86kB with the ARM compiler and applied 1x3sw_mod.HappyHarry wrote: (2 x 3way, i know I can only use 1 of the 3 way switches just now) to my 7e and I need space for the current switch mod.
Just to enable some additional features with the switch mod. I just show the changes only:
#define HAS_TELEMETRY 0
#define HAS_LAYOUT_EDITOR 1- HappyHarry
-
- Offline
Less
More
- Posts: 1136
22 Dec 2013 00:13 #16916
by HappyHarry
Replied by HappyHarry on topic about reduce devo7e code size
thanks, once patched with the 3 way patch (which i had to modify to get it to apply in tx_buttons.c) i used
HAS_ADVANCED_GUI 0
HAS_TELEMETRY 0
HAS_LAYOUT_EDITOR 0
HAS_PERMANENT_TIMER 0
and got down to 113.4kb, though i don't know if it's a functional build yet, but with your findings i can add things back in now and see where i end up
thanks for all the help and work guys
phil
HAS_ADVANCED_GUI 0
HAS_TELEMETRY 0
HAS_LAYOUT_EDITOR 0
HAS_PERMANENT_TIMER 0
and got down to 113.4kb, though i don't know if it's a functional build yet, but with your findings i can add things back in now and see where i end up
thanks for all the help and work guys
phil
Time to create page: 0.090 seconds
-
Home
-
Forum
-
Development
-
Development
- about reduce devo7e code size