Avoiding the "brick wall" by stacking Pro Micros like shields

I use a Sparkfun Pro Micro in my Flight Data Recorder (https://rick.sparber.org/FlightDataRecorderSoftwareDescription.pdf). About 70% of the program store is used. However, sometimes more features must be added temporarily and I'm concerned about running out of program store (i.e. the "brick wall"). I do not want to upgrade to a larger Arduino nor churn the board.

Has anyone tried stacking Pro Micros? I know software exists for them to run master/slave. In this way, I could offload those temporary features to the second Pro Micro yet remove it when the need is gone.

In looking at the pin-outs, I don't see any conflicts as long as I don't assign the same GPIO on each board as an output. This should not hurt the hardware but won't make the signal work right.

Communications between Pro Micros could be via serial port or I could set up a mailbox arrangement since they would both see an external EEPROM.

Thanks for your insights and experience,

Rick

Why stack? You lose pins that way. Just wire them together on serial or a bus.

A Teensy 3.2 is about the same size and has a lot more memory and other resources.

Edit: It's not a brick wall anyway. If you hit the limit, start optimising your code for size. Abbrebiate long strings, trim array sizes down to the minimum, use byte instead of int where possible...

There is a Pro Mini sized SAMD21 (Arduino Zero etc) board too, 256K Flash, 32K RAM.

About £8 on Alixpress.

GoForSmoke:
Why stack? You lose pins that way. Just wire them together on serial or a bus.

If I stack two Pro Micros, there is no change to the board and it can be done quickly. Going to a processor with a different pinout, would kill the idea. I don't need more pins, just more program space.

Rick

MorganS:
A Teensy 3.2 is about the same size and has a lot more memory and other resources.

Edit: It's not a brick wall anyway. If you hit the limit, start optimizing your code for size. Abbreviate long strings, trim array sizes down to the minimum, use byte instead of int where possible...

An important requirement is to not change the board so the pinouts must be an exact match.

I've already gone to the "well" of reducing output text strings and being careful with my variables. I was able to survive this last application which had two large features temporarily added. Just need a backup plan if I run out of program store.

If I can stack Pro Micros, I can get almost a doubling in program store simply by dropping the device on top. I realize this would not be cost effective if starting from scratch but would be a great emergency fix.

Rick

Do you have 2 spare pins so the two can talk to each other?

I guess you could make it run without comms because both of them see all the inputs. Bit each program would be about the same size as the original problem program because each unit would have to "empathize" with the other so that it knows when it is allowed to use each output.

If each pin has a dedicated function, and is used by only one of the two, I can see this work. It does require some planning of course, and if both are expected to use Serial output or the I2C bus you have a problem.

The main thing is that a the unused pins are set to INPUT mode so as to not affect the other device.