Using comptime function that require option will end in declaration loop
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 22/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Ambito
- embedded-iot
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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);
}
}
...
}
...
}
- Lingua principale
- Zig
- Stelle
- 2.3k
- Fork
- 198
- Merge medio
- 1g 8h
- PR unite (30g)
- 37
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ZigEmbeddedGroup/microzig
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
ZigEmbeddedGroup/microzig#1086 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 69/100
ZigEmbeddedGroup/microzig#1085 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
ZigEmbeddedGroup/microzig#1061 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
ZigEmbeddedGroup/microzig#1059 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
regz: AVR peripherals generated at address 0 when the register-group name matches the module (ATDF)Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
ZigEmbeddedGroup/microzig#1072 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ZigEmbeddedGroup/microzig
Issue simili
-
stlink_probe._get_board_id() raises TypeError, not KeyError, when mbed.htm exists but has no TargetIDForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
problem
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Koenkk/zigbee2mqtt#33373 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
zephyrproject-rtos/zephyr#122050 ·
I maintainer di solito rispondono entro 3 giorni
-
1 type: problem 2 scope: firmware 3 good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
SpaceTeam/STS1_COBC_SW#511 ·
-
documentation good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 60/100
imaaiagent/fumi#1 ·