diff --git a/build.zig b/build.zig index 5107db3..86b4f48 100644 --- a/build.zig +++ b/build.zig @@ -16,10 +16,10 @@ pub fn build(b: *std.build.Builder) !void { const BuildConfig = struct { name: []const u8, backing: Backing, supports_uart_test: bool = true }; const all_backings = [_]BuildConfig{ - BuildConfig{ .name = "boards.arduino_nano", .backing = Backing{ .board = boards.arduino_nano } }, - BuildConfig{ .name = "boards.arduino_uno", .backing = Backing{ .board = boards.arduino_uno } }, + //BuildConfig{ .name = "boards.arduino_nano", .backing = Backing{ .board = boards.arduino_nano } }, + //BuildConfig{ .name = "boards.arduino_uno", .backing = Backing{ .board = boards.arduino_uno } }, BuildConfig{ .name = "boards.mbed_lpc1768", .backing = Backing{ .board = boards.mbed_lpc1768 } }, - BuildConfig{ .name = "chips.atmega328p", .backing = Backing{ .chip = chips.atmega328p } }, + //BuildConfig{ .name = "chips.atmega328p", .backing = Backing{ .chip = chips.atmega328p } }, BuildConfig{ .name = "chips.lpc1768", .backing = Backing{ .chip = chips.lpc1768 } }, //BuildConfig{ .name = "chips.stm32f103x8", .backing = Backing{ .chip = chips.stm32f103x8 } }, BuildConfig{ .name = "boards.stm32f3discovery", .backing = Backing{ .board = boards.stm32f3discovery } }, diff --git a/src/core/gpio.zig b/src/core/gpio.zig index 75089eb..3636eb9 100644 --- a/src/core/gpio.zig +++ b/src/core/gpio.zig @@ -30,7 +30,7 @@ pub const Direction = enum(u1) { output = 1, }; -pub fn Gpio(comptime pin: type, config: anytype) type { +pub fn Gpio(comptime pin: type, comptime config: anytype) type { const mode = @as(Mode, config.mode); const Generic = struct { // all pins: diff --git a/src/core/microzig.zig b/src/core/microzig.zig index cc3b7b5..b5325b7 100644 --- a/src/core/microzig.zig +++ b/src/core/microzig.zig @@ -69,16 +69,14 @@ else struct {}; // Conditionally export log() if the app has it defined. -usingnamespace if (@hasDecl(app, "log")) - struct { - pub const log = app.log; - } +pub const log = if (@hasDecl(app, "log")) + app.log else + // log is a no-op by default. Parts of microzig use the stdlib logging + // facility and compilations will now fail on freestanding systems that + // use it but do not explicitly set `root.log` struct { - // log is a no-op by default. Parts of microzig use the stdlib logging - // facility and compilations will now fail on freestanding systems that - // use it but do not explicitly set `root.log` - pub fn log( + fn log( comptime message_level: std.log.Level, comptime scope: @Type(.EnumLiteral), comptime format: []const u8, @@ -89,7 +87,7 @@ else _ = format; _ = args; } - }; + }.log; /// The microzig default panic handler. Will disable interrupts and loop endlessly. pub fn microzig_panic(message: []const u8, _: ?*std.builtin.StackTrace, _: ?usize) noreturn { @@ -174,7 +172,7 @@ export fn microzig_main() noreturn { const info: std.builtin.Type = @typeInfo(@TypeOf(main)); const invalid_main_msg = "main must be either 'pub fn main() void' or 'pub fn main() !void'."; - if (info != .Fn or info.Fn.args.len > 0) + if (info != .Fn or info.Fn.params.len > 0) @compileError(invalid_main_msg); const return_type = info.Fn.return_type orelse @compileError(invalid_main_msg); diff --git a/src/main.zig b/src/main.zig index 7781f25..289502f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -181,7 +181,6 @@ pub fn addEmbeddedExecutable( .app_packages = std.ArrayList(Pkg).init(builder.allocator), }; - exe.inner.use_stage1 = true; exe.inner.strip = false; // we always want debug symbols, stripping brings us no benefit on embedded // might not be true for all machines (Pi Pico), but diff --git a/src/modules/chips/atmega328p/registers.zig b/src/modules/chips/atmega328p/registers.zig index 53e47b2..d43ad4f 100644 --- a/src/modules/chips/atmega328p/registers.zig +++ b/src/modules/chips/atmega328p/registers.zig @@ -1295,8 +1295,8 @@ pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile Mm } pub const InterruptVector = extern union { - C: fn () callconv(.C) void, - Naked: fn () callconv(.Naked) void, + C: *const fn () callconv(.C) void, + Naked: *const fn () callconv(.Naked) void, // Interrupt is not supported on arm }; diff --git a/src/modules/chips/lpc1768/registers.zig b/src/modules/chips/lpc1768/registers.zig index 0cd697c..a30184d 100644 --- a/src/modules/chips/lpc1768/registers.zig +++ b/src/modules/chips/lpc1768/registers.zig @@ -18797,8 +18797,8 @@ pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile Mm } pub const InterruptVector = extern union { - C: fn () callconv(.C) void, - Naked: fn () callconv(.Naked) void, + C: *const fn () callconv(.C) void, + Naked: *const fn () callconv(.Naked) void, // Interrupt is not supported on arm }; diff --git a/src/modules/chips/stm32f303/registers.zig b/src/modules/chips/stm32f303/registers.zig index a4bf055..4ce8ebe 100644 --- a/src/modules/chips/stm32f303/registers.zig +++ b/src/modules/chips/stm32f303/registers.zig @@ -34398,8 +34398,8 @@ pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile Mm } pub const InterruptVector = extern union { - C: fn () callconv(.C) void, - Naked: fn () callconv(.Naked) void, + C: *const fn () callconv(.C) void, + Naked: *const fn () callconv(.Naked) void, // Interrupt is not supported on arm }; diff --git a/src/modules/chips/stm32f407/registers.zig b/src/modules/chips/stm32f407/registers.zig index 2b24c31..9992f7f 100644 --- a/src/modules/chips/stm32f407/registers.zig +++ b/src/modules/chips/stm32f407/registers.zig @@ -52830,8 +52830,8 @@ pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile Mm } pub const InterruptVector = extern union { - C: fn () callconv(.C) void, - Naked: fn () callconv(.Naked) void, + C: *const fn () callconv(.C) void, + Naked: *const fn () callconv(.Naked) void, // Interrupt is not supported on arm }; diff --git a/src/modules/chips/stm32f429/registers.zig b/src/modules/chips/stm32f429/registers.zig index 077fcae..b6b5223 100644 --- a/src/modules/chips/stm32f429/registers.zig +++ b/src/modules/chips/stm32f429/registers.zig @@ -53872,8 +53872,8 @@ pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile Mm } pub const InterruptVector = extern union { - C: fn () callconv(.C) void, - Naked: fn () callconv(.Naked) void, + C: *const fn () callconv(.C) void, + Naked: *const fn () callconv(.Naked) void, // Interrupt is not supported on arm };