Skip to content

Only define Serial ISRs when used #100

Open
@matthijskooijman

Description

@matthijskooijman

(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 arduino/Arduino#1711 (comment) 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 arduino/ArduinoCore-avr#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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions