You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
akiroz b5d657a009
impl bsp for ch32v003xx
2 months ago
.github/workflows Updated to zig 0.13.0 (#198) 2 months ago
bsp impl bsp for ch32v003xx 2 months ago
build Updated to zig 0.13.0 (#198) 2 months ago
core USB CDC ACM support + code refactor (#211) 2 months ago
design Moves some files out of core 7 months ago
docs updates for zig 0.12.0 5 months ago
examples impl bsp for ch32v003xx 2 months ago
for-extraction/uf2-flasher Refactors packaging process from bash to python 8 months ago
tools Updated to zig 0.13.0 (#198) 2 months ago
website updates for zig 0.12.0 5 months ago
.envrc Updated to zig 0.13.0 (#198) 2 months ago
.gitattributes Updated to zig 0.13.0 (#198) 2 months ago
.gitignore Updated to zig 0.13.0 (#198) 2 months ago
LICENSE updates for zig 0.12.0 5 months ago
README.md Updated to zig 0.13.0 (#198) 2 months ago
build.zig impl bsp for ch32v003xx 2 months ago
build.zig.zon Updated to zig 0.13.0 (#198) 2 months ago
flake.lock Updated to zig 0.13.0 (#198) 2 months ago
flake.nix Updated to zig 0.13.0 (#198) 2 months ago

README.md

MicroZig Logo

Chat Downloads Continuous Integration

NOTE: This is in development; breaks in the API are bound to happen.

What version of Zig to use

Zig 0.13.0

Getting Started With MicroZig

I Want To Use MicroZig

IMPORTANT: You don't have to clone this repository to get started!

MicroZig uses a monorepo architecture, but provides a lot of different packages. If you just want to get started, head over to downloads.microzig.tech and download an example for the chip family you desire.

We support several chip families like the RP2 family by RaspberryPi Foundation, STM32 by STMicroelectronics, and many others.

Unpack the example, and run zig build in the resulting example folder gives you zig-out/firmware which contains the resulting files.

Right now, you gotta figure out how to flash the MCU yourself, but as people say: Google is your friend. But you can also ask for help on our Discord server.

I Want To Contribute To MicroZig

Please see the project page, its used as a place to brainstorm and organize work in ZEG. There will be issues marked as good first issue or drafts for larger ideas that need scoping/breaking ground on.

More words on contribution and development on MicroZig are further down below.

Introduction

This repo contains the infrastructure for getting started in an embedded Zig project; it "gets you to main()". Specifically, it offers:

  • a single easy-to-use builder function that:
    • generates your linker script
    • sets up packages and startup code
  • generalized interfaces for common devices, such as UART.
  • device drivers for interacting with external hardware
  • an uncomplicated method to define xref:interrupts[interrupts]

Design

For MicroZig internals please see the Design Document.

Repository structure

  • build/ contains the build components of MicroZig.
  • core/ contains the shared components of MicroZig.
  • bsp/ contains all official board support package.
  • examples/ contains examples that can be used with the board support packages.
  • tools/ contains tooling to work on MicroZig itself, so deployment, testing, ...
  • design/ contains images and logos

Versioning Scheme

MicroZig versions are tightly locked with Zig versions.

The general scheme is ${zig_version}-${commit}-${count}, so the MicroZig versions will look really similar to Zigs versions, but with our own commit abbreviations and counters.

As MicroZig sticks to tagged Zig releases, ${zig_version} will show to which Zig version the MicroZig build is compatible.

Consider the version 0.11.0-abcdef-123 means that this MicroZig version has a commit starting with abcdef, which was the 123rd commit of the version that is compatible with Zig 0.11.0.