---
title: "Boot"
canonical_url: https://developer.repebble.com/pebbleos/docs/kernel/boot/
last_updated: 2026-10-21
sdk_version: 4.33.1
---
# Boot

Source: https://developer.repebble.com/pebbleos/docs/kernel/boot/

The kernel owns the reset vector. `Reset_Handler()` sets the stack limit registers on cores that have them and enters `kernel_prep_c()`, which copies `.data` (and `.ramfunc` with `CONFIG_RAMFUNC`), zeroes `.bss`, calls the SoC’s `pbl_soc_early_init()` (`pbl/kernel/init.h`) for vendor system init, clocks and caches, and then calls `main()`.

```
flowchart LR
  reset["Reset_Handler()"]
  prep["kernel_prep_c()<br/>.data, .ramfunc, .bss"]
  soc["pbl_soc_early_init()<br/>system, clocks, caches"]
  main["main()<br/>fw/main.c"]
  reset --> prep --> soc --> main

  classDef app fill:#fa4a36,stroke:#fa4a36,color:#ffffff
  classDef system fill:#fd8a7c,stroke:#fd8a7c,color:#171717
  classDef base fill:#525252,stroke:#525252,color:#ffffff
  class reset,prep base
  class soc system
  class main app
```

Generated from PebbleOS [3a7b71785](https://github.com/coredevices/pebbleos/commit/3a7b71785fd439666c4a8bc116f561140e8dec01). This page is maintained in the pebbleos repository: [docs/kernel/boot.md](https://github.com/coredevices/pebbleos/blob/3a7b71785fd439666c4a8bc116f561140e8dec01/docs/kernel/boot.md).
