boards: silabs: Add SiM3U1xx-B-DK
SiM3U1xx-B-DK is the official development kit offered by Silicon Labs. Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com>
This commit is contained in:
parent
aa3f46cbbf
commit
1c8a15867e
10 changed files with 339 additions and 0 deletions
6
boards/silabs/dev_kits/sim3u1xx_dk/Kconfig.sim3u1xx_dk
Normal file
6
boards/silabs/dev_kits/sim3u1xx_dk/Kconfig.sim3u1xx_dk
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Copyright (c) 2024 GARDENA GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
config BOARD_SIM3U1XX_DK
|
||||||
|
select SOC_PART_NUMBER_SIM3U167AGQ
|
8
boards/silabs/dev_kits/sim3u1xx_dk/board.cmake
Normal file
8
boards/silabs/dev_kits/sim3u1xx_dk/board.cmake
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# Copyright (c) 2024 GARDENA GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
|
||||||
|
|
||||||
|
board_runner_args(jlink "--device=SiM3U167")
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
9
boards/silabs/dev_kits/sim3u1xx_dk/board.yml
Normal file
9
boards/silabs/dev_kits/sim3u1xx_dk/board.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Copyright (c) 2024 GARDENA GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
board:
|
||||||
|
name: sim3u1xx_dk
|
||||||
|
vendor: silabs
|
||||||
|
socs:
|
||||||
|
- name: sim3u167
|
130
boards/silabs/dev_kits/sim3u1xx_dk/doc/index.rst
Normal file
130
boards/silabs/dev_kits/sim3u1xx_dk/doc/index.rst
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
.. _sim3u1xx_dk:
|
||||||
|
|
||||||
|
Silicon Labs SiM3U1xx 32-bit MCU USB Development Kit
|
||||||
|
####################################################
|
||||||
|
|
||||||
|
Overview
|
||||||
|
********
|
||||||
|
|
||||||
|
This is a `development kit`_ that is used to develop software for the SiM3U1xx MCUs.
|
||||||
|
|
||||||
|
.. figure:: sim3u1xx_dk.webp
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
********
|
||||||
|
|
||||||
|
- Silicon Labs SiM3U167-B-GM SoC
|
||||||
|
- CPU core: ARM Cortex®-M3
|
||||||
|
- Flash memory: 256 kB
|
||||||
|
- RAM: 32 kB
|
||||||
|
- IO:
|
||||||
|
|
||||||
|
- 2x user LEDs
|
||||||
|
- 2x user push buttons
|
||||||
|
- 2x power LEDs
|
||||||
|
- Reset push button
|
||||||
|
- Potentiometer
|
||||||
|
- Analog terminals
|
||||||
|
- Capacitive sensing slider and button
|
||||||
|
- USB virtual COM port
|
||||||
|
|
||||||
|
For more information about the SiM3U167 SoC and the SiM3U1xx board, refer to these documents:
|
||||||
|
|
||||||
|
- Silicon Labs SiM3U1xx_
|
||||||
|
- Silicon Labs SiM3U167-B-GM_
|
||||||
|
- Silicon Labs SiM3U1xx-B-DK_
|
||||||
|
- Silicon Labs SiM3U1xx-B-DK MCU card `user's guide`_
|
||||||
|
- Silicon Labs SiM3U1xx and SiM3C1xx Revision B Errata_
|
||||||
|
|
||||||
|
.. _SiM3U1xx: https://www.silabs.com/mcu/32-bit-microcontrollers/precision32-sim3u1xx
|
||||||
|
.. _SiM3U167-B-GM: https://www.silabs.com/mcu/32-bit-microcontrollers/precision32-sim3u1xx/device.sim3u167-b-gm
|
||||||
|
.. _SiM3U1xx-B-DK: https://www.silabs.com/development-tools/mcu/32-bit/sim3u1xx-development-kit
|
||||||
|
.. _user's guide: https://www.silabs.com/documents/public/user-guides/UPMU-M3U160.pdf
|
||||||
|
.. _Errata: https://www.silabs.com/documents/public/errata/SiM3U1xx-SiM3C1xxErrata.pdf
|
||||||
|
|
||||||
|
Supported Features
|
||||||
|
==================
|
||||||
|
|
||||||
|
The board configuration supports the following hardware features:
|
||||||
|
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| Interface | Controller | Driver/Component |
|
||||||
|
+===========+============+=====================================+
|
||||||
|
| NVIC | on-chip | nested vector interrupt controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| SYSTICK | on-chip | systick |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| FLASH | on-chip | flash memory |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| GPIO | on-chip | gpio |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| UART | on-chip | serial port-polling; |
|
||||||
|
| | | serial port-interrupt |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
|
||||||
|
Connections and IOs
|
||||||
|
===================
|
||||||
|
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| Pin | Name | Note |
|
||||||
|
+========+==========================+====================================================+
|
||||||
|
| PB1.12 | TX (O) | Serial connection to host via USB virtual COM port |
|
||||||
|
+--------+--------------------------+ |
|
||||||
|
| PB1.13 | RX (I) | |
|
||||||
|
+--------+--------------------------+ |
|
||||||
|
| PB1.14 | RTS (O) | |
|
||||||
|
+--------+--------------------------+ |
|
||||||
|
| PB1.15 | CTS (I) | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB2.8 | Push button switch (SW2) | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB2.9 | Push button switch (SW3) | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB2.10 | Red LED (DS3) | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB2.11 | Yellow LED (DS4) | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB1.5 | Potentiometer | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
| PB2.12 | Potentiometer bias | |
|
||||||
|
+--------+--------------------------+----------------------------------------------------+
|
||||||
|
|
||||||
|
Programming and Debugging
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Flashing
|
||||||
|
========
|
||||||
|
|
||||||
|
The sample application :ref:`hello_world` is used for this example. Build the Zephyr kernel and
|
||||||
|
application:
|
||||||
|
|
||||||
|
.. zephyr-app-commands::
|
||||||
|
:zephyr-app: samples/hello_world
|
||||||
|
:board: sim3u1xx_dk
|
||||||
|
:goals: build
|
||||||
|
|
||||||
|
Connect the sim3u1xx_dk to your host computer using both USB port and you should see a USB serial
|
||||||
|
connection.
|
||||||
|
|
||||||
|
Open a serial terminal (minicom, putty, etc.) with the following settings:
|
||||||
|
|
||||||
|
- Speed: 115200
|
||||||
|
- Data: 8 bits
|
||||||
|
- Parity: None
|
||||||
|
- Stop bits: 1
|
||||||
|
|
||||||
|
Reset the board and you'll see the following message on the corresponding serial port
|
||||||
|
terminal session:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
Hello World! sim3u1xx_dk/sim3u167
|
||||||
|
|
||||||
|
References
|
||||||
|
**********
|
||||||
|
|
||||||
|
.. target-notes::
|
||||||
|
|
||||||
|
.. _development kit:
|
||||||
|
https://www.silabs.com/development-tools/mcu/32-bit/sim3u1xx-development-kit
|
BIN
boards/silabs/dev_kits/sim3u1xx_dk/doc/sim3u1xx_dk.webp
Normal file
BIN
boards/silabs/dev_kits/sim3u1xx_dk/doc/sim3u1xx_dk.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
22
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk-pinctrl.dtsi
Normal file
22
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk-pinctrl.dtsi
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 GARDENA GmbH
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <zephyr/dt-bindings/pinctrl/si32-pinctrl.h>
|
||||||
|
|
||||||
|
&pinctrl {
|
||||||
|
usart0_default: usart0_default {
|
||||||
|
group1 {
|
||||||
|
pinmux = <SI32_MUX(USART0_TX, 1, 12)>,
|
||||||
|
<SI32_MUX(USART0_RTS, 1, 14)>;
|
||||||
|
output-enable;
|
||||||
|
};
|
||||||
|
group2 {
|
||||||
|
pinmux = <SI32_MUX(USART0_RX, 1, 13)>,
|
||||||
|
<SI32_MUX(USART0_CTS, 1, 15)>;
|
||||||
|
input-enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
111
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk.dts
Normal file
111
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk.dts
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 GARDENA GmbH
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <silabs/sim3u167.dtsi>
|
||||||
|
#include "sim3u1xx_dk-pinctrl.dtsi"
|
||||||
|
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Silicon Labs SiM3U1xx-B-DK";
|
||||||
|
compatible = "gardena,sim3u1xx-dk", "silabs,sim3u167","silabs,sim3u";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
led0 = &led_yellow;
|
||||||
|
led1 = &led_red;
|
||||||
|
sw0 = &user_button_sw2;
|
||||||
|
sw1 = &user_button_sw3;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
zephyr,console = &usart0;
|
||||||
|
zephyr,flash = &flash0;
|
||||||
|
zephyr,shell-uart = &usart0;
|
||||||
|
zephyr,sram = &sram0;
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led_red: led_2_10 {
|
||||||
|
label = "Red LED (DS3)";
|
||||||
|
gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
led_yellow: led_2_11 {
|
||||||
|
label = "Yellow LED (DS4)";
|
||||||
|
gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio_keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
user_button_sw2: button_0 {
|
||||||
|
label = "Push button switch (SW2)";
|
||||||
|
gpios = <&gpio2 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||||
|
zephyr,code = <INPUT_KEY_0>;
|
||||||
|
};
|
||||||
|
user_button_sw3: button_1 {
|
||||||
|
label = "Push button switch (SW3)";
|
||||||
|
gpios = <&gpio2 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||||
|
zephyr,code = <INPUT_KEY_1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
clock-frequency = <76953600>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pll0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&clk_ahb {
|
||||||
|
clocks = <&pll0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&clk_apb {
|
||||||
|
divider = <2>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usart0 {
|
||||||
|
current-speed = <115200>;
|
||||||
|
pinctrl-0 = <&usart0_default>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
hw-flow-control;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flash0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
slot0_partition: partition@0 {
|
||||||
|
label = "image-0";
|
||||||
|
reg = <0x00000000 DT_SIZE_K(192)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
storage_partition: partition@30000 {
|
||||||
|
label = "storage";
|
||||||
|
reg = <0x00030000 DT_SIZE_K(64)>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
20
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk.yaml
Normal file
20
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk.yaml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Copyright (c) 2024 GARDENA GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
identifier: sim3u1xx_dk
|
||||||
|
name: Silicon Labs SiM3U development kit
|
||||||
|
type: mcu
|
||||||
|
arch: arm
|
||||||
|
ram: 32
|
||||||
|
flash: 256
|
||||||
|
toolchain:
|
||||||
|
- gnuarmemb
|
||||||
|
- xtools
|
||||||
|
- zephyr
|
||||||
|
supported:
|
||||||
|
- flash
|
||||||
|
- gpio
|
||||||
|
- nvs
|
||||||
|
- uart
|
||||||
|
vendor: gardena
|
9
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk_defconfig
Normal file
9
boards/silabs/dev_kits/sim3u1xx_dk/sim3u1xx_dk_defconfig
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Enable UART driver
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
|
||||||
|
# Enable console
|
||||||
|
CONFIG_CONSOLE=y
|
||||||
|
CONFIG_UART_CONSOLE=y
|
||||||
|
|
||||||
|
# Enable GPIO
|
||||||
|
CONFIG_GPIO=y
|
24
boards/silabs/dev_kits/sim3u1xx_dk/support/openocd.cfg
Normal file
24
boards/silabs/dev_kits/sim3u1xx_dk/support/openocd.cfg
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Copyright (c) 2024 GARDENA GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
source [find interface/ftdi/olimex-arm-usb-ocd-h.cfg]
|
||||||
|
source [find interface/ftdi/olimex-arm-jtag-swd.cfg]
|
||||||
|
|
||||||
|
source [find target/sim3x.cfg]
|
||||||
|
|
||||||
|
# On SiM3U1xx, doing a chip reset also takes down the debug port. For this reason, we disable the
|
||||||
|
# chip reset and instead only reset the Cortex M via the AIRCR SYSRESETREQ bit, as suggested in the
|
||||||
|
# chip's errata: https://www.silabs.com/documents/public/errata/SiM3U1xx-SiM3C1xxErrata.pdf
|
||||||
|
cortex_m reset_config sysresetreq
|
||||||
|
|
||||||
|
$_TARGETNAME configure -event gdb-attach {
|
||||||
|
echo "Debugger attaching: halting execution"
|
||||||
|
reset halt
|
||||||
|
gdb_breakpoint_override hard
|
||||||
|
}
|
||||||
|
|
||||||
|
$_TARGETNAME configure -event gdb-detach {
|
||||||
|
echo "Debugger detaching: resuming execution"
|
||||||
|
resume
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue