Skip to content

Commit e416496

Browse files
asmellbykartben
authored andcommitted
boards: silabs: Add xG29-RB4412A radio board
Add radio board for EFR32MG29 device. Signed-off-by: Aksel Skauge Mellbye <[email protected]>
1 parent 2d3539b commit e416496

File tree

13 files changed

+480
-0
lines changed

13 files changed

+480
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Copyright (c) 2025 Silicon Laboratories Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if BOARD_XG29_RB4412A
5+
6+
config LOG_BACKEND_SWO_FREQ_HZ
7+
default 875000
8+
depends on LOG_BACKEND_SWO
9+
10+
if SOC_GECKO_USE_RAIL
11+
12+
config FPU
13+
default y
14+
15+
endif # SOC_GECKO_USE_RAIL
16+
17+
if BT
18+
19+
config FPU
20+
default y
21+
22+
config COMMON_LIBC_MALLOC_ARENA_SIZE
23+
default 8192
24+
25+
config MAIN_STACK_SIZE
26+
default 3072 if PM
27+
default 2304
28+
29+
endif # BT
30+
31+
endif # BOARD_XG29_RB4412A
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Silicon Laboratories Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_XG29_RB4412A
5+
select SOC_PART_NUMBER_EFR32MG29B140F1024IM40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
board_runner_args(jlink "--device=EFR32MG29BxxxF1024")
4+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
5+
6+
board_runner_args(silabs_commander "--device=EFR32MG29B140F1024IM40")
7+
include(${ZEPHYR_BASE}/boards/common/silabs_commander.board.cmake)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: xg29_rb4412a
3+
full_name: EFR32xG29 2.4 GHz 8 dBm Buck (xG29-RB4412A)
4+
vendor: silabs
5+
socs:
6+
- name: efr32mg29b140f1024im40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
.. zephyr:board:: xg29_rb4412a
2+
3+
Overview
4+
********
5+
6+
The xG24-RB4412A radio board provides support for the Silicon Labs EFR32MG29 SoC.
7+
8+
Hardware
9+
********
10+
11+
- EFR32MG29B140F1024IM40 SoC
12+
- CPU core: ARM Cortex®-M33 with FPU
13+
- Flash memory: 1024 kB
14+
- RAM: 256 kB
15+
- Transmit power: up to +8 dBm
16+
- Operation frequency: 2.4 GHz
17+
- Crystal oscillators for LFXO (32.768 kHz) and HFXO (38.4 MHz)
18+
19+
Supported Features
20+
==================
21+
22+
The ``xg29_rb4412a`` board target supports the following hardware features:
23+
24+
+-----------+------------+------------------------+
25+
| Interface | Controller | Driver/Component |
26+
+===========+============+========================+
27+
| CMU | on-chip | clock control |
28+
+-----------+------------+------------------------+
29+
| MSC | on-chip | flash |
30+
+-----------+------------+------------------------+
31+
| GPIO | on-chip | gpio, pin control |
32+
+-----------+------------+------------------------+
33+
| RTCC | on-chip | system clock, counter |
34+
+-----------+------------+------------------------+
35+
| MPU | on-chip | memory protection unit |
36+
+-----------+------------+------------------------+
37+
| NVIC | on-chip | interrupt controller |
38+
+-----------+------------+------------------------+
39+
| USART | on-chip | serial, spi |
40+
+-----------+------------+------------------------+
41+
| EUSART | on-chip | serial, spi |
42+
+-----------+------------+------------------------+
43+
| I2C | on-chip | i2c |
44+
+-----------+------------+------------------------+
45+
| LDMA | on-chip | dma |
46+
+-----------+------------+------------------------+
47+
| WDOG | on-chip | watchdog |
48+
+-----------+------------+------------------------+
49+
| SE | on-chip | entropy |
50+
+-----------+------------+------------------------+
51+
| RADIO | on-chip | bluetooth |
52+
+-----------+------------+------------------------+
53+
54+
Programming and Debugging
55+
*************************
56+
57+
Applications for the ``xg29_rb4412a`` board target can be built, flashed, and debugged in the
58+
usual way. See :ref:`build_an_application` and :ref:`application_run` for more details on
59+
building and running.
60+
61+
Flashing
62+
========
63+
64+
As an example, this section shows how to build and flash the :zephyr:code-sample:`hello_world`
65+
application.
66+
67+
To build and program the sample to the xG24-RB4412A, complete the following steps:
68+
69+
First, plug the xG24-RB4412A to a compatible mainboard and connect the mainboard to your computer
70+
using the USB port on the left side.
71+
Next, build and flash the sample by running the following command:
72+
73+
.. zephyr-app-commands::
74+
:zephyr-app: samples/hello_world
75+
:board: xg29_rb4412a
76+
:goals: build flash
77+
78+
``west flash`` will by default use SEGGER JLink. Make sure that the JLinkExe binary is available on
79+
the PATH. Alternatively, use ``west flash -r silabs_commander`` to use Simplicity Commander to flash.
80+
In this case, make sure that the commander binary is available on PATH.
81+
82+
Open a serial terminal (minicom, putty, etc.) with the following settings:
83+
84+
- Speed: 115200
85+
- Data: 8 bits
86+
- Parity: None
87+
- Stop bits: 1
88+
89+
Reset the board and you should see the following message in the terminal:
90+
91+
.. code-block:: console
92+
93+
Hello World! xg29_rb4412a
94+
95+
Bluetooth
96+
=========
97+
98+
To use the BLE function, run the command below to retrieve necessary binary
99+
blobs from the SiLabs HAL repository.
100+
101+
.. code-block:: console
102+
103+
west blobs fetch hal_silabs
104+
105+
Then build the Zephyr kernel and a Bluetooth sample with the following
106+
command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in
107+
this example.
108+
109+
.. zephyr-app-commands::
110+
:zephyr-app: samples/bluetooth/observer
111+
:board: xg29_rb4412a
112+
:goals: build
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2021 Linaro Limited
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# SPI is implemented via usart/eusart so node name isn't spi@...
5+
list(APPEND EXTRA_DTC_FLAGS "-Wno-spi_bus_bridge")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright (c) 2025 Silicon Laboratories Inc.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <dt-bindings/pinctrl/silabs/xg29-pinctrl.h>
8+
9+
&pinctrl {
10+
usart1_default: usart1_default {
11+
group0 {
12+
pins = <USART1_TX_PA5>;
13+
drive-push-pull;
14+
output-high;
15+
};
16+
group1 {
17+
pins = <USART1_RX_PA6>;
18+
input-enable;
19+
silabs,input-filter;
20+
};
21+
};
22+
23+
eusart1_default: eusart1_default {
24+
group0 {
25+
pins = <EUSART1_TX_PC0>, <EUSART1_SCLK_PC2>;
26+
drive-push-pull;
27+
output-high;
28+
};
29+
group1 {
30+
pins = <EUSART1_RX_PC1>;
31+
input-enable;
32+
silabs,input-filter;
33+
};
34+
};
35+
36+
i2c0_default: i2c0_default {
37+
group0 {
38+
pins = <I2C0_SCL_PB2>, <I2C0_SDA_PB3>;
39+
drive-open-drain;
40+
bias-pull-up;
41+
};
42+
};
43+
};

0 commit comments

Comments
 (0)