arduino / ArduinoCore-sam

80 stars 107 forks source link

Only define Serial ISRs when used #100

Open matthijskooijman opened 4 years ago

matthijskooijman commented 4 years ago

(There is an identical issue for sam here)

Currently, I think that the Serial interrupt handlers are always included in the link (or maybe always included if any serial object is used). Ideally, none of these would be included by default, and only the ISRs for serial objects that are actually used are included. This would leave the way open for libraries or sketches to define their own serial ISR for any otherwise unused serial ports.

This behaviour is already implemented on AVR, by putting the definition of each serial object and its corresponding ISR in a separate .cpp file, and separating all serial objects from each other. Due to the way linking works wrt .a files, this should have the desired effect (when care is taken not to include any stray references to these serial objects). See https://github.com/arduino/Arduino/pull/1711#issuecomment-29745866 for the analysis I did on the original implementation on AVR.

I created this issue after suggesting this as an alternative for #95 (and see also https://github.com/arduino/ArduinoCore-avr/pull/299).

I will not have time to actually implement this, but I'm happy to support anyone that wants to give a stab at it.