Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement abstraction layer for the NVIC #2

Open
4 of 7 tasks
lucas-yotsui opened this issue Jul 16, 2024 · 0 comments
Open
4 of 7 tasks

Implement abstraction layer for the NVIC #2

lucas-yotsui opened this issue Jul 16, 2024 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation improvement New feature or improvement of an existing one

Comments

@lucas-yotsui
Copy link
Owner

lucas-yotsui commented Jul 16, 2024

Tasks

For this issue to be considered completed, the following tasks must be fulfilled:

Implementation

  • Map all the registers related to the NVIC.
  • Implement functions for abstracting register access.

Documentation

  • Document the role of each register.
  • Document the role of each bit on each register.
  • Document how to use all the functions.

Testing

  • Write unit tests for all that can be tested in such a way
  • Test the rest of the functionality manually and ensure everything works properly.
@lucas-yotsui lucas-yotsui added documentation Improvements or additions to documentation improvement New feature or improvement of an existing one labels Jul 16, 2024
@lucas-yotsui lucas-yotsui self-assigned this Jul 16, 2024
@lucas-yotsui lucas-yotsui moved this from Não Iniciada to Em Progresso in UniMicro - STM32F411CC Jul 16, 2024
lucas-yotsui added a commit that referenced this issue Aug 19, 2024
This project now handles interrupts differently.

Previously, the project created the default interrupt handlers through a
series of PROVIDE directives in the linker script. The handlers were
then overriden by users using an @export() call. However this approach
seemed quite janky, as it relied on the linker script and did stuff out
of zig code that directly affected the compilation process.

Now, the project takes a different approach: the default interrupt
vector is defined as a weak symbol in an object file that's compiled
separately from the rest of the project. This object file is then linked
to the main project again. The user can still override the default
handlers with the interrupts module. This is a more elegant approach,
reliant exclusively on Zig code, without relying on janky and obscure
linker script directives.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation improvement New feature or improvement of an existing one
Projects
Status: In Progress
Development

No branches or pull requests

1 participant