Using comptime function that require option will end in declaration loop
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 22/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Domaine
- embedded-iot
Piste de recherche
The payload names no file paths. Start from the DMA function in the snippet and from where microzig_options redefines std_option, since the declaration loop comes from that shadowing. Reproduce by putting a DMA_Handler that calls std.fmt.comptimePrint inside microzig_options. Done means that build compiles without the declaration loop error, or the issue records why the shadowed std_option cannot be avoided.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Microzig redefine the std_option with specific entry for embedded device. Like interrupt or chip/hal config.
By doing so it allow users to fine tune the MCU. This have some limitation on how microzig_options can be initialized.
std_option is being shadow and whenever attribute inside the microzig_options need std_option it will trigger a declaration loop error.
This happen for example when you want to format string:
pub fn DMA(index: u32, channel: u32) type {
// /!\ This line will trigger the declaration loop if you include the DMA_Handler
// inside the microzig_option since this comptimePrint needs std_option.
const interrupt_name = std.fmt.comptimePrint("DMA{}_Channel{}", .{ index, ch});
const interrupt_index = blk: for (microzig.chip.interrupts) |*interrupt| {
if (std.mem.eql(u8, interrupt_name, interrupt.name)) {
break :blk interrupt.index;
}
} else @panic("Interrupt index not found");
return struct {
var channel: ?Channel = null;
pub fn DMA_Handler() callconv(.c) void {
const event = read_events();
clear_events(event);
if (channel) |*init_chan| {
init_chan.deliver_event(event);
}
}
...
}
...
}
- Langage dominant
- Zig
- Étoiles
- 2.3k
- Forks
- 198
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 37
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ZigEmbeddedGroup/microzig
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
ZigEmbeddedGroup/microzig#1086 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 69/100
ZigEmbeddedGroup/microzig#1085 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
ZigEmbeddedGroup/microzig#1061 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
ZigEmbeddedGroup/microzig#1059 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
regz: AVR peripherals generated at address 0 when the register-group name matches the module (ATDF)Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
ZigEmbeddedGroup/microzig#1072 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de ZigEmbeddedGroup/microzig
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
joleys/niko-home-control-II#321 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
stlink_probe._get_board_id() raises TypeError, not KeyError, when mbed.htm exists but has no TargetIDPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
problem
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Koenkk/zigbee2mqtt#33373 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 70/100
microsoft/cheriot-ibex#99 ·