Skip to content

Commit 643a76a

Browse files
tswaehnkartben
authored andcommitted
board: sensry: add starter-kit-board
Add soc support for Sensry's RISCV32 based SY1xx. Variants of the soc are GBM and GEN1 with the board support for start kit board, which is a demo board for both soc variants. Signed-off-by: Sven Ginka <s.ginka@sensry.de>
1 parent 707c518 commit 643a76a

12 files changed

+489
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright (c) 2025 sensry.io
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_GANYMED_SK
5+
select SOC_SY120_GBM if BOARD_GANYMED_SK_SY120_GBM
6+
select SOC_SY120_GEN1 if BOARD_GANYMED_SK_SY120_GEN1

boards/sensry/ganymed_sk/board.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 sensry.io
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board_set_flasher_ifnset(sy1xx)
5+
board_finalize_runner_args(sy1xx)

boards/sensry/ganymed_sk/board.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Copyright (c) 2025 sensry.io
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board:
5+
name: ganymed_sk
6+
full_name: Ganymed Starter Kit (SK)
7+
vendor: sensry
8+
socs:
9+
- name: sy120_gbm
10+
- name: sy120_gen1
Binary file not shown.
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
.. zephyr:board:: ganymed_sk
2+
3+
.. _ganymed_sk:
4+
5+
Overview
6+
********
7+
8+
.. note::
9+
10+
All software for the Ganymed StarterKit (SK) is experimental and hardware availability
11+
is restricted to the participants in the limited sampling program.
12+
13+
The Ganymed board hardware provides support for the Ganymed sy1xx series IoT multicore
14+
RISC-V SoC with optional sensor level.
15+
16+
Hardware
17+
********
18+
19+
* 32-Bit RISC-V 1+8-core processor, up to 500MHz
20+
21+
* 1x Data Acquisition Unit
22+
* 8x Data Processing Unit
23+
* Event Bus
24+
* MicroDMA
25+
26+
* 4096 KB Global SRAM
27+
* 64 KB Secure SRAM
28+
* 512 KB Global MRAM
29+
* 512 KB Secure MRAM
30+
* CLOCK
31+
* Peripherals
32+
33+
* :abbr:`32x GPIO (General Purpose Input Output)`
34+
* :abbr:`4x TWIM (I2C-compatible two-wire interface with MicroDMA)`
35+
* 4x I2S
36+
* :abbr:`7x SPI (Serial Peripheral Interface with MicroDMA)`
37+
* :abbr:`3x UART (Universal receiver-transmitter with MicroDMA)`
38+
* :abbr:`1x TSN (Time sensitive networking ethernet MAC with MicroDMA)`
39+
* 1x CAN-FD
40+
* 3x ADC
41+
* Power section for on-board power generation and power measurement (selectable)
42+
43+
* USB type-C
44+
* external 5V power source
45+
* 40-pin JTAG connector (compatible to Olimex ARM-JTAG-OCD-H)
46+
* USB over FTDI (connected to UART0)
47+
* Header for all I/Os and configuration
48+
49+
* Assembly options for the SoC
50+
51+
* SY120-GBM - Generic Base Module without top level sensors
52+
* SY120-GEN1 - Generic Module type 1 with top level sensors (see below)
53+
54+
The ``ganymed-sk/sy120-gen1`` comes with additional on-board sensors.
55+
56+
Supported Features
57+
==================
58+
59+
.. zephyr:board-supported-hw::
60+
61+
For more detailed description please refer to `Ganymed StarterKit Board Documentation`_
62+
63+
64+
Programming and Testing
65+
***********************
66+
67+
Building
68+
========
69+
70+
Applications for the ``ganymed_sk/sy120_gbm`` board can be
71+
built and flashed in the usual way. See
72+
:ref:`build_an_application` and :ref:`application_run` for more details on
73+
building and running.
74+
75+
Building the :zephyr:code-sample:`hello_world` sample:
76+
77+
.. zephyr-app-commands::
78+
:tool: west
79+
:zephyr-app: samples/hello_world
80+
:board: ganymed_sk/sy120_gbm
81+
:goals: build
82+
:compact:
83+
84+
85+
Flashing
86+
========
87+
88+
Test the Ganymed with a :zephyr:code-sample:`hello_world` sample.
89+
90+
Flash the zephyr image:
91+
92+
.. zephyr-app-commands::
93+
:tool: west
94+
:zephyr-app: samples/hello_world
95+
:goals: flash
96+
:west-args: --dev-id /dev/ttyUSB0
97+
:compact:
98+
99+
100+
Testing
101+
=======
102+
103+
Then attach a serial console, ex. minicom / picocom / putty; Reset the target.
104+
The sample output should be:
105+
106+
.. code-block:: console
107+
108+
Hello World! ganymed_sk/sy120_gbm
109+
110+
111+
References
112+
**********
113+
114+
.. target-notes::
115+
116+
.. _`Ganymed StarterKit Board Documentation`: https://docs.sensry.net/datasheets/sy120-bob/
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
/* Copyright (c) 2025 sensry.io */
2+
/* SPDX-License-Identifier: Apache-2.0 */
3+
4+
#include <zephyr/dt-bindings/pinctrl/sy1xx-pinctrl.h>
5+
6+
&pinctrl {
7+
8+
/* UART0 */
9+
/omit-if-no-ref/ uart0_tx: uart0_tx {
10+
pinmux = <SY1XX_UART0_PAD_CFG0 SY1XX_PAD(0)>;
11+
};
12+
13+
/omit-if-no-ref/ uart0_rx: uart0_rx {
14+
pinmux = <SY1XX_UART0_PAD_CFG0 SY1XX_PAD(1)>;
15+
input-enable;
16+
};
17+
18+
/* UART1 */
19+
/omit-if-no-ref/ uart1_tx: uart1_tx {
20+
pinmux = <SY1XX_UART1_PAD_CFG0 SY1XX_PAD(0)>;
21+
};
22+
23+
/omit-if-no-ref/ uart1_rx: uart1_rx {
24+
pinmux = <SY1XX_UART1_PAD_CFG0 SY1XX_PAD(1)>;
25+
input-enable;
26+
};
27+
28+
/omit-if-no-ref/ uart1_cts: uart1_cts {
29+
pinmux = <SY1XX_UART1_PAD_CFG0 SY1XX_PAD(2)>;
30+
};
31+
32+
/omit-if-no-ref/ uart1_rts: uart1_rts {
33+
pinmux = <SY1XX_UART1_PAD_CFG0 SY1XX_PAD(3)>;
34+
input-enable;
35+
bias-pull-up;
36+
};
37+
38+
/* UART2 */
39+
/omit-if-no-ref/ uart2_tx: uart2_tx {
40+
pinmux = <SY1XX_UART2_PAD_CFG0 SY1XX_PAD(0)>;
41+
};
42+
43+
/omit-if-no-ref/ uart2_rx: uart2_rx {
44+
pinmux = <SY1XX_UART2_PAD_CFG0 SY1XX_PAD(1)>;
45+
input-enable;
46+
};
47+
48+
/omit-if-no-ref/ uart2_cts: uart2_cts {
49+
pinmux = <SY1XX_UART2_PAD_CFG0 SY1XX_PAD(2)>;
50+
};
51+
52+
/omit-if-no-ref/ uart2_rts: uart2_rts {
53+
pinmux = <SY1XX_UART2_PAD_CFG0 SY1XX_PAD(3)>;
54+
input-enable;
55+
bias-pull-up;
56+
};
57+
58+
/* I2C Port 0 */
59+
/omit-if-no-ref/ i2c0_scl: i2c0_scl {
60+
pinmux = <SY1XX_I2C0_PAD_CFG0 SY1XX_PAD(0)>;
61+
};
62+
63+
/omit-if-no-ref/ i2c0_sda: i2c0_sda {
64+
pinmux = <SY1XX_I2C0_PAD_CFG0 SY1XX_PAD(1)>;
65+
};
66+
67+
/* I2C Port 1 */
68+
/omit-if-no-ref/ i2c1_scl: i2c1_scl {
69+
pinmux = <SY1XX_I2C1_PAD_CFG0 SY1XX_PAD(0)>;
70+
};
71+
72+
/omit-if-no-ref/ i2c1_sda: i2c1_sda {
73+
pinmux = <SY1XX_I2C1_PAD_CFG0 SY1XX_PAD(1)>;
74+
};
75+
76+
/* I2C Port 2 */
77+
/omit-if-no-ref/ i2c2_scl: i2c2_scl {
78+
pinmux = <SY1XX_I2C2_PAD_CFG0 SY1XX_PAD(0)>;
79+
};
80+
81+
/omit-if-no-ref/ i2c2_sda: i2c2_sda {
82+
pinmux = <SY1XX_I2C2_PAD_CFG0 SY1XX_PAD(1)>;
83+
};
84+
85+
/* I2C Port 3 */
86+
/omit-if-no-ref/ i2c3_scl: i2c3_scl {
87+
pinmux = <SY1XX_I2C3_PAD_CFG0 SY1XX_PAD(0)>;
88+
};
89+
90+
/omit-if-no-ref/ i2c3_sda: i2c3_sda {
91+
pinmux = <SY1XX_I2C3_PAD_CFG0 SY1XX_PAD(1)>;
92+
};
93+
94+
/* MDIO */
95+
/omit-if-no-ref/ mdio_io: mdio_io {
96+
pinmux = <SY1XX_RGMII0_PAD_CFG3 SY1XX_PAD(0)>;
97+
input-enable;
98+
};
99+
100+
/omit-if-no-ref/ mdio_clk: mdio_clk {
101+
pinmux = <SY1XX_RGMII0_PAD_CFG3 SY1XX_PAD(1)>;
102+
};
103+
104+
/* RGMII */
105+
/omit-if-no-ref/ rgmii_rx_ctl: rgmii_rx_ctl {
106+
pinmux = <SY1XX_RGMII0_PAD_CFG0 SY1XX_PAD(0)>;
107+
input-enable;
108+
};
109+
110+
/omit-if-no-ref/ rgmii_rx_clk: rgmii_rx_clk {
111+
pinmux = <SY1XX_RGMII0_PAD_CFG0 SY1XX_PAD(1)>;
112+
input-enable;
113+
};
114+
115+
/omit-if-no-ref/ rgmii_tx_ctl: rgmii_tx_ctl {
116+
pinmux = <SY1XX_RGMII0_PAD_CFG0 SY1XX_PAD(2)>;
117+
};
118+
119+
/omit-if-no-ref/ rgmii_tx_clk: rgmii_tx_clk {
120+
pinmux = <SY1XX_RGMII0_PAD_CFG0 SY1XX_PAD(3)>;
121+
};
122+
123+
/omit-if-no-ref/ rgmii_txd0: rgmii_txd0 {
124+
pinmux = <SY1XX_RGMII0_PAD_CFG1 SY1XX_PAD(0)>;
125+
};
126+
127+
/omit-if-no-ref/ rgmii_txd1: rgmii_txd1 {
128+
pinmux = <SY1XX_RGMII0_PAD_CFG1 SY1XX_PAD(1)>;
129+
};
130+
131+
/omit-if-no-ref/ rgmii_txd2: rgmii_txd2 {
132+
pinmux = <SY1XX_RGMII0_PAD_CFG1 SY1XX_PAD(2)>;
133+
};
134+
135+
/omit-if-no-ref/ rgmii_txd3: rgmii_txd3 {
136+
pinmux = <SY1XX_RGMII0_PAD_CFG1 SY1XX_PAD(3)>;
137+
};
138+
139+
/omit-if-no-ref/ rgmii_rxd0: rgmii_rxd0 {
140+
pinmux = <SY1XX_RGMII0_PAD_CFG2 SY1XX_PAD(0)>;
141+
input-enable;
142+
};
143+
144+
/omit-if-no-ref/ rgmii_rxd1: rgmii_rxd1 {
145+
pinmux = <SY1XX_RGMII0_PAD_CFG2 SY1XX_PAD(1)>;
146+
input-enable;
147+
};
148+
149+
/omit-if-no-ref/ rgmii_rxd2: rgmii_rxd2 {
150+
pinmux = <SY1XX_RGMII0_PAD_CFG2 SY1XX_PAD(2)>;
151+
input-enable;
152+
};
153+
154+
/omit-if-no-ref/ rgmii_rxd3: rgmii_rxd3 {
155+
pinmux = <SY1XX_RGMII0_PAD_CFG2 SY1XX_PAD(3)>;
156+
input-enable;
157+
};
158+
};
159+
160+
161+
&uart0 {
162+
pinctrl-0 = <&uart0_tx &uart0_rx>;
163+
pinctrl-names = "default";
164+
};
165+
166+
&uart1 {
167+
pinctrl-0 = <&uart1_tx &uart1_rx &uart1_cts &uart1_rts>;
168+
pinctrl-names = "default";
169+
};
170+
171+
&uart2 {
172+
pinctrl-0 = <&uart2_tx &uart2_rx &uart2_cts &uart2_rts>;
173+
pinctrl-names = "default";
174+
};
175+
176+
&i2c0 {
177+
pinctrl-0 = <&i2c0_scl &i2c0_sda>;
178+
pinctrl-names = "default";
179+
};
180+
181+
&i2c1 {
182+
pinctrl-0 = <&i2c1_scl &i2c1_sda>;
183+
pinctrl-names = "default";
184+
};
185+
186+
&i2c2 {
187+
pinctrl-0 = <&i2c2_scl &i2c2_sda>;
188+
pinctrl-names = "default";
189+
};
190+
191+
&i2c3 {
192+
pinctrl-0 = <&i2c3_scl &i2c3_sda>;
193+
pinctrl-names = "default";
194+
};
195+
196+
&eth0 {
197+
pinctrl-0 = <&rgmii_rx_ctl &rgmii_rx_clk
198+
&rgmii_tx_ctl &rgmii_tx_clk
199+
&rgmii_txd0 &rgmii_txd1 &rgmii_txd2 &rgmii_txd3
200+
&rgmii_rxd0 &rgmii_rxd1 &rgmii_rxd2 &rgmii_rxd3>;
201+
pinctrl-names = "default";
202+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/* Copyright (c) 2025 sensry.io */
2+
/* SPDX-License-Identifier: Apache-2.0 */
3+
4+
/dts-v1/;
5+
6+
#include <zephyr/dt-bindings/gpio/gpio.h>
7+
8+
#include <sensry/ganymed-sy1xx.dtsi>
9+
#include "ganymed_sk_sy120-pinctrl.dtsi"
10+
11+
/ {
12+
aliases {
13+
led0 = &green_led;
14+
};
15+
16+
chosen {
17+
zephyr,code-partition = &l2_ram_text;
18+
zephyr,sram = &l2_ram_data;
19+
20+
zephyr,console = &uart0;
21+
};
22+
23+
leds {
24+
compatible = "gpio-leds";
25+
26+
green_led: led_0 {
27+
gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
28+
label = "User LED";
29+
};
30+
};
31+
};
32+
33+
&mdio0 {
34+
status = "okay";
35+
36+
pinctrl-0 = <&mdio_clk &mdio_io>;
37+
pinctrl-names = "default";
38+
39+
pyh0: phy@0b {
40+
compatible = "microchip,vsc8541";
41+
reg = <0x0b>;
42+
status = "okay";
43+
44+
reset-gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
45+
46+
microchip,interface-type = "rgmii";
47+
};
48+
};
49+
50+
&eth0 {
51+
status = "okay";
52+
53+
phy-handle = <&pyh0>;
54+
};

0 commit comments

Comments
 (0)