Comments (18)
We could add a header file that defines a macro name for every plugin file, and have the plugin contents surrounded by an #ifdef. For instance for _P002_ADC.ino:
#include "enabled_plugins.h"
#ifdef _POO2_ADC
...
#endif
and in enabled_plugins.h:
// #define _P001_Switch
#define _POO2_ADC
...
Then we could use a program (a wizard) that takes the information from Plugin_sizes.txt and displays a menu choice to the user. When we additionally add the dependencies then this could work like a charm (or e.g., a bit like the linux kernel configuration)...
And fantastic work. I still have to understand the different types of RAM and their limits.
from espeasy.
just delete plugins you do not need (everything with _P*), you can even delete unneeded controllers (_C*)....
from espeasy.
Ok, works. Thank you...
Should we have a special build target that e.g., uses a configuration file to decide which plugins should be included?
from espeasy.
yes we should, we already have defines for dev/test and normal plugins.
we also should make a selection of 'minimal' plugins, that we want in the 8285 version.
from espeasy.
ideally we would have some sort of "wizard" which allows the user to select which plugins to include in the firmware... ...in a future far far away :)
from espeasy.
just wrote a memory analyser that shows us the memory usage per plugin (ram iram and rom).
from espeasy.
π
from espeasy.
The results are here: https://github.com/letscontrolit/ESPEasy/blob/mega/dist/Plugin_sizes.txt
Especially the IRAM usage is a problem currently. Without any plugins we only have around 2k left. Some plugins with ISR's need to use some IRAM. I'll see what i can do to reduce that first.
from espeasy.
from espeasy.
the main problem i see with "customized" build like @jbaumann describes it, is how do we get a "deploy able" build environment to the user?
from espeasy.
Wouldn't it be three steps?
- Implement a mechanism that allows to turn on and off the build of specific plugins.
- Create a wizard for this mechanism that can be used when building on your own computer.
- Create a web application (like https://nodemcu-build.com/) that allows to build a customized version for people who do not want to build themselves.
The complexity of using the mechanism drops with each step...
from espeasy.
@psy0rz how do i run this memory analyzer?? ...you are developing on a *nix like system? ...is it possible the path things are wrong on a windows system?
from espeasy.
currently it needs the git and platformio commandline programs.
i just hacked it together quickly without worrying about other operating systems too much.
in linux you have to start it with the path to the correct objdump tool that is part of the platformio toolkit:
$ ./memanalyzer.py /home/psy/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-objdump
to make things easier i can make it a part of travis, so that you can watch the travis output for the results. (you would have to do a pull request first)
from espeasy.
ill try to get a buildservice like nodemcu-build.com running.
from espeasy.
Hi,
I have written a small wizard in Java, but I would need the max values for 1M and 4M configurations (assuming the 8285 is the same as a 8266 with 1M). @psy0rz could you provide me with the values for the different categories listed in the output from your memanalyzer?
Cheers, Joachim
from espeasy.
Hi,
if you want to play with the program I can either send it to you or append here.
Later on, when I have time, I will put it on Github. @psy0rz, I still need the correct values for the memory limits...
Cheers, Joachim
PS: It now produces a correct header file, examines the plugin files in the changeable source directory, is configurable using a YAML file, highlights the changes etc.
from espeasy.
We're now also building firmware for the 8285 by default. (called normal_8285.bin )
So this bug is fixed, correct?
from espeasy.
Yes, I think so.
from espeasy.
Related Issues (20)
- [BUG] Config-sample.h duplicate FEATURE_SSDP define
- RFID - Wiegand / Problem with values name HOT 2
- [Test build] Testers for new upcoming build (March '24) HOT 25
- [FR] Support Elecrow ESP32 HMI Touch panels HOT 4
- [P008] on ESP32-C3 not receive correct data HOT 12
- ESP8266 MQTT disconnecting & reboot ESP 1-3 minutes HOT 11
- HX711 temp compensation[FR] HOT 2
- New Release HOT 6
- [BUG] ESP32-C3/-C6 not working well in latest build HOT 4
- [BUG] Plugin 135 - SCD4x freeze after some times HOT 19
- [FR]Provide storage information in JSON output HOT 2
- WIFI Connection after cold boot HOT 44
- [FR] add OLED display support for sh1107 128x128px HOT 2
- lost in build ;o) HOT 4
- no module named 'recommonmark' HOT 3
- the revenge of issue with rs232 HOT 2
- [BUG]No AP showing up when the sensor can't connect to known SSID HOT 4
- [FR] VL53L0x & VL53L1x ToF sensors - Add Direction value HOT 5
- Information of which set contains which plugin HOT 7
- RTTL Buzzer HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from espeasy.