Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Implement setting interrupt handlers #5

@MabezDev

Description

@MabezDev

Each xtensa lx6 core has 32 interrupts, 26 of which can be used for peripherals. The remaining 6 are for the on cpu peripherals.

Current understanding

My understanding is as follows:

There is a fixed table of interrupted with fixed priorities(levels), with some reserved, see https://github.com/espressif/esp-idf/blob/c1ab87b58057f0ddb8bad7e15a48a6697e8cda27/components/soc/esp32/include/soc/soc.h#L353-L388

Any unreserved interrupts can have a handler attached to them, provided their level is <= 3, anything greater requires asm.

This doesn't provide many interrupts (compared to armv7's 256 per core); I believe the esp-idf registers a global interrupt handler for a given interrupt, with the option of sharing that handler. (Edit: I've found some info online that indicates, the interrupt matrix was designed with interrupt sharing in mind, but need to follow up on how that actually works)

Questions

  • The idf links against the xchal, a small runtime provided by cadence, which already has this table along with all the other vectors. Is there more info on the layout of vecbase? Will we have to link against this xchal too, or will we be able to write our own?

  • Are the 'reserved' interrupts in that table really reserved (i.e via hardware) or are they just reserved in the IDF for specific usage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions