Skip to content

Commit bfacd43

Browse files
committed
fix: Missing xiao_nrf54l15 board files are added
1 parent a7a3c31 commit bfacd43

18 files changed

+846
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright (c) 2024 Seeed Technology Co., Ltd.
2+
# SPDX-License-Identifier: Apache-2.0
3+
if BOARD_XIAO_NRF54L15_NRF54L15_CPUAPP
4+
5+
config BT_CTLR
6+
default BT
7+
8+
config ROM_START_OFFSET
9+
default 0x800 if BOOTLOADER_MCUBOOT
10+
11+
endif # BOARD_XIAO_NRF54L15_NRF54L15_CPUAPP
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Copyright (c) 2024 Seeed Technology Co., Ltd.
2+
# SPDX-License-Identifier: Apache-2.0
3+
config BOARD_XIAO_NRF54L15
4+
select SOC_NRF54L15_CPUAPP if BOARD_XIAO_NRF54L15_NRF54L15_CPUAPP
5+
select SOC_NRF54L15_CPUFLPR if \
6+
BOARD_XIAO_NRF54L15_NRF54L15_CPUFLPR || \
7+
BOARD_XIAO_NRF54L15_NRF54L15_CPUFLPR_XIP
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
# Default Runner
4+
set(BOARD_FLASH_RUNNER pyocd)
5+
set(BOARD_DEBUG_RUNNER pyocd)
6+
7+
# PYOCD
8+
board_runner_args(pyocd "--target=nrf54l")
9+
10+
# JLINK
11+
if(CONFIG_SOC_NRF54L15_CPUAPP)
12+
board_runner_args(jlink "--device=nRF54L15_M33" "--speed=4000")
13+
elseif(CONFIG_SOC_NRF54L15_CPUFLPR)
14+
board_runner_args(jlink "--device=nRF54L15_RV32")
15+
endif()
16+
17+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
18+
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
19+
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
20+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
21+
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
board:
2+
name: xiao_nrf54l15
3+
vendor: seeed
4+
socs:
5+
- name: nrf54l15
6+
variants:
7+
- name: xip
8+
cpucluster: cpuflpr
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
.. zephyr:board:: xiao_nrf54l15
2+
3+
Overview
4+
********
5+
6+
Seeed Studio XIAO nRF54L15 is a compact, high-performance development board featuring the cutting-edge
7+
Nordic nRF54L15 chip. This next-generation SoC integrates an ultra-low power multiprotocol 2.4 GHz
8+
radio and an MCU with a 128 MHz Arm® Cortex®-M33 processor and an Arm® Cortex®-M0+ for advanced
9+
power management. It offers scalable memory up to 1.5 MB NVM and 256 KB RAM.
10+
Designed for exceptional ultra-low power consumption, it significantly extends battery life.
11+
Its robust radio supports Bluetooth® 6.0 (including Channel Sounding), Matter, Thread, Zigbee,
12+
and a high-throughput 2.4 GHz proprietary mode (up to 4 Mbps). The board includes a comprehensive
13+
set of peripherals, an integrated 128 MHz RISC-V coprocessor, and advanced security features like
14+
TrustZone® isolation and cryptographic engine protection. With built-in lithium battery management,
15+
XIAO nRF54L15 is ideal for compact, secure, and energy-efficient IoT solutions such as smart wearables,
16+
industrial sensors, and advanced human-machine interfaces.
17+
18+
19+
Hardware
20+
********
21+
22+
- 128 MHz Arm® Cortex®-M33 processor
23+
- Scalable memory configurations up to 1.5 MB NVM and up to 256 KB RAM
24+
- Multiprotocol 2.4 GHz radio supporting Bluetooth Low Energy, 802.15.4-2020,
25+
and 2.4 GHz proprietary modes (up to 4 Mbps)
26+
- Comprehensive set of peripherals including new Global RTC available in System OFF,
27+
14-bit ADC, and high-speed serial interfaces
28+
- 128 MHz RISC-V coprocessor
29+
- Advanced security including TrustZone® isolation, tamper detection,
30+
and cryptographic engine side-channel leakage protection
31+
- Ultra-compact WLCSP (2.4x2.2 mm) and QFN (6.0x6.0 mm) packages
32+
33+
34+
For more information about the nRF54L15 SoC and XIAO nRF54L15 board, refer to these
35+
documents:
36+
37+
- `nRF54L15 Website`_
38+
- `nRF54L15 Datasheet`_
39+
- `XIAO nRF54L15 Wiki`_
40+
41+
Supported Features
42+
==================
43+
44+
.. zephyr:board-supported-hw::
45+
46+
Connections and IOs
47+
===================
48+
49+
In the following table, the column **Name** contains Pin names. For example, P2_0
50+
means Pin number 0 on PORT2, as used in the board's datasheets and manuals.
51+
52+
+-------+-------------+------------------+
53+
| Name | Function | Usage |
54+
+=======+=============+==================+
55+
| P2_0 | GPIO | LED0 |
56+
+-------+-------------+------------------+
57+
| P1_9 | USART20_TX | UART Console TX |
58+
+-------+-------------+------------------+
59+
| P1_8 | USART20_RX | UART Console RX |
60+
+-------+-------------+------------------+
61+
62+
63+
Programming and Debugging
64+
*************************
65+
66+
The XIAO nRF54L15 contains an SAMD11 with CMSIS-DAP, allowing flashing, debugging, logging, etc. over
67+
the USB port. Doing so requires a version of OpenOCD that includes support for the flash on the nRF54L15
68+
MCU. Until those changes are included in stock OpenOCD, the version bundled with Arduino can be
69+
used, or can be installed from the `OpenOCD Arduino Fork`_. When flashing, debugging, etc. you may
70+
need to include ``--openocd=/usr/local/bin/openocd
71+
--openocd-search=/usr/local/share/openocd/scripts/`` options to the command.
72+
73+
Flashing
74+
========
75+
76+
Connect the XIAO nRF54L15 board to your host computer using the USB port. A USB CDC ACM serial port
77+
should appear on the host, that can be used to view logs from the flashed application.
78+
79+
Here is an example for the :zephyr:code-sample:`hello_world` application.
80+
81+
.. zephyr-app-commands::
82+
:zephyr-app: samples/hello_world
83+
:board: xiao_nrf54l15
84+
:goals: flash
85+
86+
Open a serial terminal (minicom, putty, etc.) connecting to the UCB CDC ACM serial port.
87+
88+
Reset the board and you should see the following message in the terminal:
89+
90+
.. code-block:: console
91+
92+
Hello World! xiao_nrf54l15
93+
94+
95+
.. _XIAO nRF54L15 Wiki:
96+
https://wiki.seeedstudio.com/getting_started_with_xiao_nrf54l15/
97+
98+
.. _nRF54L15 Website:
99+
https://www.nordicsemi.com/Products/nRF54L15
100+
101+
.. _nRF54L15 Datasheet:
102+
https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/keyfeatures_html5.html
103+
104+
.. _OpenOCD Arduino Fork:
105+
https://github.com/facchinm/OpenOCD/tree/arduino-0.12.0-rtx5
35.9 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Suppress "unique_unit_address_if_enabled" to handle some overlaps
3+
list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled")
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*/
4+
5+
/ {
6+
xiao_d: connector {
7+
compatible = "seeed,xiao-gpio";
8+
#gpio-cells = <2>;
9+
gpio-map-mask = <0xffffffff 0xffffffc0>;
10+
gpio-map-pass-thru = <0 0x3f>;
11+
gpio-map = <0 0 &gpio1 4 0>, /* D0 */
12+
<1 0 &gpio1 5 0>, /* D1 */
13+
<2 0 &gpio1 6 0>, /* D2 */
14+
<3 0 &gpio1 7 0>, /* D3 */
15+
<4 0 &gpio1 10 0>, /* D4 */
16+
<5 0 &gpio1 11 0>, /* D5 */
17+
<6 0 &gpio2 8 0>, /* D6 */
18+
<7 0 &gpio2 7 0>, /* D7 */
19+
<8 0 &gpio2 1 0>, /* D8 */
20+
<9 0 &gpio2 4 0>, /* D9 */
21+
<10 0 &gpio2 2 0>; /* D10 */
22+
};
23+
};
24+
25+
xiao_i2c: &i2c22 {};
26+
xiao_serial: &uart21 {};
27+
xiao_adc: &adc {};
28+
xiao_spi: &spi00 {};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# 2886:0066 Seeed SAMD Xiao-nRF54L15 CMSIS-DAP
2+
SUBSYSTEM=="usb", ATTR{idVendor}=="2886", ATTR{idProduct}=="0066", MODE:="666"
3+
4+
# If you share your linux system with other users, or just don't like the
5+
# idea of write permission for everybody, you can replace MODE:="0666" with
6+
# OWNER:="yourusername" to create the device owned by you, or with
7+
# GROUP:="somegroupname" and mange access using standard unix groups.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
if {[info exists env(OPENOCD_INTERFACE)]} {
4+
set INTERFACE $env(OPENOCD_INTERFACE)
5+
} else {
6+
# By default connect over Debug USB port using the CMSIS-DAP interface
7+
set INTERFACE "cmsis-dap"
8+
}
9+
10+
source [find interface/$INTERFACE.cfg]
11+
12+
set _CHIPNAME nrf54l
13+
14+
# Work-area is a space in RAM used for flash programming, by default use 16 KiB.
15+
if { [info exists WORKAREASIZE] } {
16+
set _WORKAREASIZE $WORKAREASIZE
17+
} else {
18+
set _WORKAREASIZE 0x4000
19+
}
20+
21+
if { [info exists CPUTAPID] } {
22+
set _CPUTAPID $CPUTAPID
23+
} else {
24+
set _CPUTAPID 0x6ba02477
25+
}
26+
27+
# Multidrop instance ID should be configurable by FW in TAD TINSTANCE register.
28+
# Writes to the register are ignored due to a silicon erratum.
29+
if { [info exists SWD_INSTANCE_ID] } {
30+
set _SWD_INSTANCE_ID $SWD_INSTANCE_ID
31+
} else {
32+
set _SWD_INSTANCE_ID 0
33+
}
34+
35+
transport select swd
36+
37+
swd newdap $_CHIPNAME cpu -expected-id $_CPUTAPID
38+
39+
if { [info exists SWD_MULTIDROP] } {
40+
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu -dp-id 0x001c0289 -instance-id $_SWD_INSTANCE_ID
41+
} else {
42+
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
43+
}
44+
45+
set _TARGETNAME $_CHIPNAME.cpu
46+
target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap -ap-num 0
47+
48+
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
49+
50+
# Create target for the AUX access port (AUX-AP).
51+
target create $_CHIPNAME.aux mem_ap -dap $_CHIPNAME.dap -ap-num 1
52+
53+
# AUX-AP is accessible only if CSW Prot[0] bit (Data Access) is set
54+
$_CHIPNAME.dap apsel 1
55+
$_CHIPNAME.dap apcsw 0x01000000 0x01000000
56+
57+
adapter speed 1000
58+
59+
# Use main processor as default target.
60+
targets $_TARGETNAME
61+
62+
if {![using_hla]} {
63+
$_TARGETNAME cortex_m reset_config sysresetreq
64+
}
65+
66+
proc nrf54l-load {file} {
67+
reset halt
68+
mww 0x5004b500 0x101
69+
load_image $file
70+
reset run
71+
}

0 commit comments

Comments
 (0)