Memory Consumption - MobiFlight/MobiFlight-Connector GitHub Wiki

Device Buffer, usage per device

The following table lists the required bytes from the device buffer for each device.

Fast IO AVR Normal IO AVR Pico
analog device 29 byte 29 byte 40 byte
button 6 byte 4 byte 8 byte
digital input MUX 9 byte 6 byte 8 byte
encoder 35 byte 31 byte 29 byte
input shifter 17 byte 11 byte 16 byte
lcdDisplay 18 byte 18 byte 24 byte
output 2 byte 2 byte 2 byte
Output Shifter 15 byte 9 byte 9 byte
Led Segment (28) byte 25 byte 36 byte
Servos 23 byte 23 byte 64 byte
Stepper 14 byte 14 byte 100 byte

required bytes for LED Segment with Fast IO might be wrong, must be checked again

Memory consumption per Board

FastIO is not implemented yet and it has to be decided if this will be implemented. The requried memory consumption for this is listed to get a decision.

Mega:

NormalIO

RAM:   [======    ]  55.3% (used 4528 bytes from 8192 bytes)
Flash: [=         ]  10.8% (used 27534 bytes from 253952 bytes)

-> 226.418 bytes left

FastIO

RAM:   [======    ]  55.4% (used 4540 bytes from 8192 bytes)
Flash: [=         ]  11.2% (used 28354 bytes from 253952 bytes)

-> 225.598 bytes left

Device Buffer 1496 byte

Name Buffer with 1000 byte can be freed up

Bytes which are requested from the device buffer

Device FastIO NormalIO
40 Outputs: 80 byte 80 byte
68 Buttons: 408 byte 272 byte
4 LEDSegment: 112 byte 88 byte
20 Encoder: 700 byte 620 byte
10 Stepper: 140 byte 140 byte
10 Servos: 230 byte 230 byte
2 LCD: 36 byte 36 byte
16 AnalogIn: 464 byte 464 byte
4 OutputShifter: 60 byte 36 byte
4 InputShifter: 68 byte 44 byte
4 MUX: 36 byte 24 byte

Micro:

NormalIO

RAM:   [========  ]  76.6% (used 1960 bytes from 2560 bytes)
Flash: [==========]  97.4% (used 27916 bytes from 28672 bytes)

-> 756 bytes left

FastIO

RAM:   [========  ]  77.0% (used 1972 bytes from 2560 bytes)
Flash: [==========]  100.2% (used 28718 bytes from 28672 bytes)

-> exceeds Flash!!! Further measures to decrease the flash would be required. On the other hand it is very likely that encoders on multiplexers will also not fit into the memory, therefore a FastIO is not really required.

Device Buffer 440 byte

Name Buffer with 350 byte can be freed up

Bytes which are requested from the device buffer

Device FastIO NormalIO
18 Outputs: 36 byte 36 byte
18 Buttons: 108 byte 72 byte
1 LEDSegment: 28 byte 22 byte
9 Encoder: 315 byte 279 byte
3 Stepper: 42 byte 32 byte
3 Servos: 69 byte 69 byte
2 LCD: 36 byte 36 byte
5 AnalogIn: 145 byte 145 byte
2 OutputShifter: 30 byte 18 byte
2 InputShifter: 34 byte 22 byte
3 MUX: 27 byte 18 byte

Uno/Nano:

NormalIO

RAM:   [========= ]  86.6% (used 1773 bytes from 2048 bytes)
Flash: [========  ]  83.3% (used 25598 bytes from 30720 bytes)

-> 5.122 bytes left

FastIO

RAM:   [========= ]  87.2% (used 1785 bytes from 2048 bytes)
Flash: [========= ]  86.0% (used 26418 bytes from 30720 bytes)

-> 4.302 bytes left

Device Buffer 286 byte

Name Buffer with 220 byte can be freed up

Bytes which are requested from the device buffer

Device FastIO NormalIO
18 Outputs: 36 byte 36 byte
18 Buttons: 108 byte 72 byte
1 LEDSegment: 22 byte 22 byte
9 Encoder: !!!315 byte 279 byte
2 Stepper: 28 byte 28 byte
2 Servos: 46 byte 46 byte
2 LCD: 36 byte 36 byte
6 AnalogIn: 174 byte 174 byte
2 OutputShifter: 30 byte 18 byte
2 InputShifter: 34 byte 22 byte
3 MUX: 27 byte 18 byte

Pico:

NormalIO

RAM:   [=         ]   7.1% (used 18504 bytes from 262144 bytes)
Flash: [          ]   3.6% (used 74892 bytes from 2093056 bytes)

-> 2.018.164 bytes left

FastIO

RAM:   [=         ]   7.1% (used 18536 bytes from 262144 bytes)
Flash: [          ]   3.6% (used 75220 bytes from 2093056 bytes)

-> 2.017.836 bytes left

Device Buffer 1496 byte

Name Buffer with 1000 byte can be freed up

Bytes which are requested from the device buffer

Device FastIO NormalIO
26 Outputs: 52 byte 52 byte
26 Buttons: 156 byte 104 byte
4 LEDSegment: 112 byte 88 byte
8 Encoder: 280 byte 248 byte
6 Stepper: 84 byte 84 byte
8 Servos: 184 byte 184 byte
2 LCD: 36 byte 36 byte
3 AnalogIn: 87 byte 87 byte
4 OutputShifter: 60 byte 36 byte
4 InputShifter: 68 byte 44 byte
4 MUX: 36 byte 24 byte