Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## What this repo is

Arduino BSP for **Nordic nRF54L05 / nRF54L10 / nRF54L15** with the
**s145 SoftDevice v9.0.0**. Derived from `Adafruit_nRF52_Arduino` and
**s145 SoftDevice v10.0.1**. Derived from `Adafruit_nRF52_Arduino` and
reworked for nRF54L peripherals.

**PlatformIO only.** Consumed exclusively through
Expand Down Expand Up @@ -120,18 +120,37 @@ call. Nothing in the vector table may shadow the forwarded entries.

`cores/nRF5/linker/nrf54_common.ld` defines `__flash_arduino_start` and
`__flash_arduino_end` so InternalFS / `flash_nrf5x.c` work
chip-independently. Per-chip values (from `nrf54l<chip>_s145_v9.ld`):
chip-independently. Per-chip values (from `nrf54l<chip>_s145_v10.ld`):

| Chip | App FLASH | InternalFS | DFU settings page | SoftDevice |
|---|---|---|---|---|
| nRF54L05 | `0x8000 – 0x47000` | `0x47000 – 0x4E000` | `0x4F000` | `0x58C00` |
| nRF54L10 | `0x8000 – 0xC7000` | `0xC7000 – 0xCE000` | `0xCF000` | `0xD8C00` |
| nRF54L15 | `0x8000 – 0x147000` | `0x147000 – 0x14E000` | `0x14F000` | `0x158C00` |
| nRF54L05 | `0x8000 – 0x47000` | `0x47000 – 0x4E000` | `0x4F000` | `0x5A800` |
| nRF54L10 | `0x8000 – 0xC7000` | `0xC7000 – 0xCE000` | `0xCF000` | `0xDA800` |
| nRF54L15 | `0x8000 – 0x147000` | `0x147000 – 0x14E000` | `0x14F000` | `0x15A800` |

RAM ends at `0x2003FF80`; the bootloader keeps its BLE peer data and the
double-reset marker in the last 128 bytes. Both sides must agree, so change
the layout in the bootloader repo's `linker/` scripts in the same step.

### SoftDevice files are split by SoC family, not by SoC

`sdk-nrf-bm` ships s145 under a per-family directory (`nrf54l`, `nrf54lm`,
`nrf54ls`, `nrf54lv`) holding one API header set and one hex per SoC in
that family, and this tree mirrors that:

```
cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/ L05 / L10 / L15
bootloader/s145/10.0.1/nrf54l/s145_nrf54l{05,10,15}_10.0.1_softdevice.hex
```

The board JSON picks the family with `build.softdevice.sd_family` and the
hex with `build.softdevice.sd_soc`. Another family (`nrf54lm` for the
nRF54LM20A) gets its own API directory and hex directory next to these.

`nrf_nvic.h` in the API directory is a hand-written shim, not a Nordic
file; when a second family's API directory is added, keep the two copies
in sync.

### XIAO Wire routes to TWIM22

The default `Wire` instance (`NRF_TWIM0` → `NRF_TWIM20` via compat) shares
Expand Down Expand Up @@ -167,7 +186,7 @@ cores/nRF5/ - core sources (Arduino API + FreeRTOS port + nrfx
nrfx/ - upstream Nordic nrfx (mostly dead via guards)
drivers/src/*.c - all wrapped in #if NRFX_<X>_ENABLED
nrfx_config.h - one place to flip drivers on/off
softdevice/s145_nrf54l_9.0.0_API/ - SoftDevice headers
softdevice/s145_nrf54l{,m}_10.0.1_API/ - SoftDevice headers, per SoC family
libraries/ - PIO LDF-discovered bundled libs
Bluefruit54Lib - BLE API on top of s145
nRF54Crypto - CRACEN + TinyCrypt for LESC (replaces CC310)
Expand All @@ -177,7 +196,8 @@ libraries/ - PIO LDF-discovered bundled libs
variants/ - per-board pin tables
xiao_nrf54l15(_sense)
nrf54l05dk / nrf54l10dk / nrf54l15dk
bootloader/s145/9.0.0/ - SoftDevice hex (bootloader hex lives in nRF54_Bootloader)
bootloader/s145/10.0.1/ - SoftDevice hex under nrf54l/
(bootloader hex lives in nRF54_Bootloader)
tests/blink/ - CI smoke test
.github/workflows/githubci.yml - PIO matrix build for all 5 variants
```
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# nRF54L Arduino Framework (s145 SoftDevice)

Arduino BSP for Nordic Semiconductor nRF54L05 / nRF54L10 / nRF54L15 with the
**s145 SoftDevice 9.0.0**. Derived from
**s145 SoftDevice 10.0.1**. Derived from
[Adafruit_nRF52_Arduino](https://github.com/adafruit/Adafruit_nRF52_Arduino)
and reworked for nRF54L peripherals.

Expand Down Expand Up @@ -40,9 +40,10 @@ package, and toolchains automatically on first build.

## What's in here

- **s145 SoftDevice 9.0.0** API headers and merge-time hex
(`cores/nRF5/nordic/softdevice/s145_nrf54l_9.0.0_API/`,
`bootloader/s145/9.0.0/*_softdevice.hex`)
- **s145 SoftDevice 10.0.1** API headers and merge-time hex, split by SoC
family as upstream `sdk-nrf-bm` does
(`cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/`,
`bootloader/s145/10.0.1/nrf54l/*_softdevice.hex`)
- **nRF54L MDK headers** for L05/L10/L15 application + flpr targets
(`cores/nRF5/nordic/nrfx/mdk/`)
- **FreeRTOS port** running off the GRTC peripheral (nRF54L has no
Expand Down Expand Up @@ -79,9 +80,9 @@ of RRAM.

| Chip | Bootloader | App FLASH | InternalFS (LittleFS) | DFU settings | SoftDevice |
|---|---|---|---|---|---|
| nRF54L05 | `0x0 – 0x8000` | `0x8000 – 0x47000` | `0x47000 – 0x4E000` | `0x4F000` | `0x58C00` |
| nRF54L10 | `0x0 – 0x8000` | `0x8000 – 0xC7000` | `0xC7000 – 0xCE000` | `0xCF000` | `0xD8C00` |
| nRF54L15 | `0x0 – 0x8000` | `0x8000 – 0x147000` | `0x147000 – 0x14E000` | `0x14F000` | `0x158C00` |
| nRF54L05 | `0x0 – 0x8000` | `0x8000 – 0x47000` | `0x47000 – 0x4E000` | `0x4F000` | `0x5A800` |
| nRF54L10 | `0x0 – 0x8000` | `0x8000 – 0xC7000` | `0xC7000 – 0xCE000` | `0xCF000` | `0xDA800` |
| nRF54L15 | `0x0 – 0x8000` | `0x8000 – 0x147000` | `0x147000 – 0x14E000` | `0x14F000` | `0x15A800` |

RAM: `0x20000000 – 0x20004800` belongs to the SoftDevice, the application
runs from `0x20004800` to `0x2003FF80`; the last 128 bytes hold the
Expand Down
Loading
Loading