Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Better support for creating user board targets

Abierto
#919 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
15/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado

Línea de trabajo

The payload centres on the custom board setup in build.zig, which calls mb.ports.rp2xxx.chips.rp2040.derive with pico_board.imports, and on boards/xiao_rp2040.zig, which imports shared/rp2040_bootrom.zig. Start by reading how the pico board's bootrom import is exposed through MicroBuild, then decide how a user board could reuse the generated bootrom without copying the file. Done means a design decision on the API, which the thread has not yet reached.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When attempting to create a custom, project-specific board target for the XIAO RP2040 I found that it was very difficult to reuse parts from predefined boards that use the RP2040 chip. More specifically, it required a very roundabout way to setup the bootloader.

build.zig:

const std = @import("std");
const microzig = @import("microzig");

const MicroBuild = microzig.MicroBuild(.{
    .rp2xxx = true,
});

pub fn build(b: *std.Build) void {
    const mz_dep = b.dependency("microzig", .{});
    const mb = MicroBuild.init(b, mz_dep) orelse return;

    const pico_board = mb.ports.rp2xxx.boards.raspberrypi.pico.board orelse return;
    const target = mb.ports.rp2xxx.chips.rp2040.derive(.{
        .board = .{
            .name = "XIAO RP2040",
            .root_source_file = b.path("boards/xiao_rp2040.zig"),
            .imports = pico_board.imports,
        },
    });

    const firmware = mb.add_firmware(.{
        .name = "main",
        .target = target,
        .optimize = .ReleaseSmall,
        .root_source_file = b.path("src/main.zig"),
    });

    mb.install_firmware(firmware, .{});
}

boards/xiao_rp2040.zig:

const microzig = @import("microzig");
const hal = microzig.hal;

pub const xosc_freq = 12_000_000;

pub const bootrom = @import("shared/rp2040_bootrom.zig");

comptime {
    _ = bootrom;
}

pub const pin_config = hal.pins.GlobalConfiguration{
    .GPIO12 = .{ .name = "rgb_led", .direction = .out },
    .GPIO17 = .{ .name = "user_led_r", .direction = .out },
    .GPIO16 = .{ .name = "user_led_g", .direction = .out },
    .GPIO25 = .{ .name = "user_led_b", .direction = .out },
};

I find I'm having to reference the generated bootloader for rp2040 boards though other boards (here the rp pico) and copy over the rp2040_bootrom.zig to my project for it to compile, which feels convoluted. Is it possible to streamline this process by, for example, exposing the bootloader generation to the user?

Lenguaje dominante
Zig
Estrellas
2.3k
Forks
198
Merge medio
1 d 8 h
PR fusionados (30 d)
37

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ZigEmbeddedGroup/microzig

Todos los issues de ZigEmbeddedGroup/microzig

Issues similares

Más issues de Build System

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.