BERGSONNE
Get started

Quickstart: your first build

The shortest path to something running: blink the onboard LED on a Core tile. Pick the path that suits you — both target the same hardware.

You'll need
A USB-programmable Core — currently Core.ST.L4 — and a USB cable. (These Cores flash over USB with no probe or buttons; the list grows as new Cores ship.) That’s it for the Studio path. For the C SDK path you also need the toolchain — see Install & flash.

Path A — Studio (no install)

Studio runs in the browser, so there’s nothing to set up. You compose the system visually, simulate the firmware, then build a binary.

  1. 1

    Open Studio and add a Core

    Start a new project and drop a Core tile onto the canvas. The Core is the tile that runs firmware.
  2. 2

    Blink the onboard LED

    Add a behavior that toggles the Core’s onboard LED on a timer. Studio shows it running live in the simulator — no hardware required yet.
  3. 3

    Build & flash

    Hit Build to compile a firmware image, connect your Core over USB, and flash it. The real LED blinks.

Path B — The C SDK

Prefer to write firmware directly? Start from the template for your Core — a complete project (Makefile, config.json, main.c) that builds as-is. The folder name becomes the project name:

cp -r templates/core-st-l4-1 ~/dev/my-firmware
cd ~/dev/my-firmware
make

There’s one template per Core, because the Cores differ in what they can do — the USB-capable ones come pre-wired for DFU flashing and self-recovery, the others for SWD. At the heart of each is a blink loop:

#include "core.h"

int main(void)
{
    core_init();
    core_led_init();

    while (1) {
        LED_TOGGLE();
        core_delay_ms(250);
    }
}

What each line does

core_init() brings up the system clock at the level config.json asks for, along with anything else declared there. core_led_init() configures the onboard LED pad as a push-pull output. LED_TOGGLE() flips it, and core_delay_ms(250) waits a quarter second — so the LED cycles every 500 ms, a 2 Hz blink. The while (1) loop never exits; firmware runs until power is removed.

Build and flash

From the project directory — the template already knows which Core it’s for, so there’s nothing to pass:

make

# flash over USB (triggers the bootloader automatically)
make flash-dfu

Starting from scratch instead of a template? Name the Core yourself with make TILE=Core.ST.L4.1 — that value is the Core’s catalog id.

Toolchain setup, picking your TILE variant, and how DFU flashing works are covered in Install & flash.

Once the LED blinks, you’ve got the full loop — edit, build, flash. From here, add a peripheral tile and read it from your firmware: the per-tile catalog pages document every driver. And as the firmware grows beyond main.c, just add more .c files to the project directory — the build compiles every source it finds there.