Skip to content

Commit b3067bd

Browse files
sreeramIfxkartben
authored andcommitted
board: infineon: add XMC7200 Eval board support
- Support for kit_xmc72_evk Signed-off-by: Sreeram Tatapudi <[email protected]> Signed-off-by: Yurii Lozynskyi <[email protected]>
1 parent 5cd3a7e commit b3067bd

File tree

71 files changed

+8046
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+8046
-21
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Copyright (c) 2025 Cypress Semiconductor Corporation.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_KIT_XMC72_EVK
5+
select SOC_XMC7200D_E272K8384_M0PLUS if BOARD_KIT_XMC72_EVK_XMC7200D_E272K8384_M0P
6+
select SOC_XMC7200D_E272K8384_M7_0 if BOARD_KIT_XMC72_EVK_XMC7200D_E272K8384_M7_0
7+
select SOC_XMC7200D_E272K8384_M7_1 if BOARD_KIT_XMC72_EVK_XMC7200D_E272K8384_M7_1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright (c) 2025 Cypress Semiconductor Corporation.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# Connect to CM0P core.
5+
board_runner_args(openocd "--target-handle=cat1c.cpu.cm0")
6+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: kit_xmc72_evk
3+
full_name: XMC7200 Evaluation Kit
4+
vendor: infineon
5+
socs:
6+
- name: xmc7200d_e272k8384
Binary file not shown.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
.. zephyr:board:: kit_xmc72_evk
2+
3+
Overview
4+
********
5+
6+
The XMC7200 evaluation kit enables you to evaluate and develop your applications using the XMC7200D
7+
microcontroller(hereafter called “XMC7200D”). The XMC7200D is designed for industrial applications
8+
and it is a true programmable embedded system-on-chip, integrating up to two 350-MHz Arm® Cortex®-M7
9+
as the primary application processor, a 100-MHz Arm® Cortex®-M0+ that supports the following:
10+
11+
- Low-power operations
12+
- Up to 8 MB flash and 1 MB SRAM
13+
- Gigabit Ethernet
14+
- CAN FD
15+
- Secure Digital Host Controller (SDHC) supporting SD/SDIO/eMMC interfaces
16+
- Programmable analog and digital peripherals that allow faster time-to-market
17+
18+
The evaluation board has a M.2 interface connector for interfacing radio modules-based on
19+
AIROC™ Wi-Fi & Bluetooth combos, SMIF dual header compatible with Digilent Pmod for interfacing
20+
HYPERBUS™ memories, and headers compatible with Arduino for interfacing Arduino shields.
21+
In addition, the board features an onboard programmer/debugger(KitProg3), a 512-Mbit QSPI NOR flash,
22+
CAN FD transceiver, Gigabit Ethernet PHY transceiver with RJ45 connector interface, a micro-B
23+
connector for USB device interface, three user LEDs, one potentiometer, and two push buttons.
24+
The board supports operating voltages from 3.3 V to 5.0 V for XMC7200D.
25+
26+
Hardware
27+
********
28+
29+
For more information about XMC7200D and KIT_XMC72_EVK:
30+
31+
- `XMC7200D SoC Website`_
32+
- `kit_xmc72_evk Board Website`_
33+
34+
Kit Features
35+
=============
36+
37+
- Evaluation board for XMC7200D-E272K8384 in BGA package with 272 pins, dual-core Arm®Cortex® M7 CPUs running at 350-MHz and an Arm® Cortex® M0+ CPU running at 100-MHz
38+
- Full-system approach on the board, featuring Gigabit Ethernet PHY and connector, CAN FD transceiver, user LEDs, buttons, and potentiometer
39+
- M.2 interface connector for interfacing radio modules based on AIROC™ Wi-Fi & Bluetooth®combos (currently not - supported)
40+
- Headers compatible with Arduino for interfacing Arduino shields
41+
- Fully compatible with ModusToolbox™ v3.0
42+
- KitProg3 on-board SWD programmer/debugger, USB-UART, and USB-I2C bridge functionality through USB connector
43+
- Digilent dual PMOD SMIF header for interfacing HYPERBUS™ memories (currently not supported)
44+
- A 512-Mbit external QSPI NOR flash
45+
- Evaluation board supports operating voltages from 3.3 V to 5.0 V for XMC7200D
46+
47+
Kit Contents
48+
=============
49+
50+
- XMC7200 evaluation board
51+
- USB Type-A to Mirco-B cable
52+
- 12V/3A DC power adapter with additional blades
53+
- Six jumper wires (five inches each)
54+
- Quick start guide
55+
56+
Supported Features
57+
==================
58+
59+
.. zephyr:board-supported-hw::
60+
61+
Programming and Debugging
62+
*************************
63+
64+
.. zephyr:board-supported-runners::
65+
66+
Building
67+
========
68+
69+
Here is an example for building the :zephyr:code-sample:`blinky` sample application.
70+
71+
.. zephyr-app-commands::
72+
:zephyr-app: samples/basic/blinky
73+
:board: kit_xmc72_evk
74+
:goals: build
75+
76+
Flashing
77+
========
78+
79+
The KIT_XMC72_EVK includes an onboard programmer/debugger (`KitProg3`_) to provide debugging, flash programming, and serial communication over USB. Flash and debug commands use OpenOCD and require a custom Infineon OpenOCD version, that supports KitProg3, to be installed.
80+
81+
Infineon OpenOCD Installation
82+
=============================
83+
84+
Both the full `ModusToolbox`_ and the `ModusToolbox Programming Tools`_ packages include Infineon OpenOCD.
85+
Installing either of these packages will also install Infineon OpenOCD.
86+
87+
If neither package is installed, a minimal installation can be done by downloading the `Infineon OpenOCD`_ release for your system and manually extract the files to a location of your choice.
88+
89+
.. note:: Linux requires device access rights to be set up for KitProg3. This is handled automatically by the ModusToolbox and ModusToolbox Programming Tools installations. When doing a minimal installation, this can be done manually by executing the script ``openocd/udev_rules/install_rules.sh``.
90+
91+
West Commands
92+
=============
93+
94+
The path to the installed Infineon OpenOCD executable must be available to the ``west`` tool commands. There are multiple ways of doing this. The example below uses a permanent CMake argument to set the CMake variable ``OPENOCD``.
95+
96+
.. tabs::
97+
.. group-tab:: Windows
98+
99+
.. code-block:: shell
100+
101+
# Run west config once to set permanent CMake argument
102+
west config build.cmake-args -- -DOPENOCD=path/to/infineon/openocd/bin/openocd.exe
103+
104+
# Do a pristine build once after setting CMake argument
105+
west build -b kit_xmc72_evk -p always samples/basic/blinky
106+
107+
west flash
108+
west debug
109+
110+
.. group-tab:: Linux
111+
112+
.. code-block:: shell
113+
114+
# Run west config once to set permanent CMake argument
115+
west config build.cmake-args -- -DOPENOCD=path/to/infineon/openocd/bin/openocd
116+
117+
# Do a pristine build once after setting CMake argument
118+
west build -b kit_xmc72_evk -p always samples/basic/blinky
119+
120+
west flash
121+
west debug
122+
123+
Once the gdb console starts after executing the west debug command, you may now set breakpoints and perform other standard GDB debugging.
124+
125+
References
126+
**********
127+
128+
.. target-notes::
129+
130+
.. _XMC7200D SoC Website:
131+
https://www.infineon.com/cms/en/product/microcontroller/32-bit-industrial-microcontroller-based-on-arm-cortex-m/32-bit-xmc7000-industrial-microcontroller-arm-cortex-m7/xmc7200d-e272k8384aa/
132+
133+
.. _kit_xmc72_evk Board Website:
134+
https://www.infineon.com/cms/en/product/evaluation-boards/kit_xmc72_evk
135+
136+
.. _ModusToolbox:
137+
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolbox
138+
139+
.. _ModusToolbox Programming Tools:
140+
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolboxprogtools
141+
142+
.. _Infineon OpenOCD:
143+
https://github.com/Infineon/openocd/releases/latest
144+
145+
.. _KitProg3:
146+
https://github.com/Infineon/KitProg3
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
* Copyright (c) 2025 Cypress Semiconductor Corporation.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
#include <arm/infineon/cat1c/xmc7200/system_clocks.dtsi>
7+
#include <arm/infineon/cat1c/mpns/xmc7200_e272k8384.dtsi>
8+
#include <zephyr/dt-bindings/input/input-event-codes.h>
9+
10+
/ {
11+
aliases {
12+
uart-3 = &uart3;
13+
led0 = &user_led0;
14+
led1 = &user_led1;
15+
led2 = &user_led2;
16+
sw0 = &user_bt0;
17+
sw1 = &user_bt1;
18+
};
19+
20+
leds {
21+
compatible = "gpio-leds";
22+
23+
user_led0: led_0 {
24+
label = "LED_0";
25+
gpios = <&gpio_prt16 1 GPIO_ACTIVE_LOW>;
26+
};
27+
28+
user_led1: led_1 {
29+
label = "LED_1";
30+
gpios = <&gpio_prt16 2 GPIO_ACTIVE_LOW>;
31+
};
32+
33+
user_led2: led_2 {
34+
label = "LED_2";
35+
gpios = <&gpio_prt16 3 GPIO_ACTIVE_LOW>;
36+
};
37+
};
38+
39+
gpio_keys {
40+
compatible = "gpio-keys";
41+
42+
user_bt0: user_btn0 {
43+
label = "SW_1";
44+
gpios = <&gpio_prt21 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
45+
zephyr,code = <INPUT_KEY_0>;
46+
};
47+
48+
user_bt1: user_btn1 {
49+
label = "SW_2";
50+
gpios = <&gpio_prt17 3 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
51+
zephyr,code = <INPUT_KEY_1>;
52+
};
53+
};
54+
};
55+
56+
uart3: &scb3 {
57+
compatible = "infineon,cat1-uart";
58+
status = "okay";
59+
current-speed = <115200>;
60+
61+
/* UART pins */
62+
pinctrl-0 = <&p13_1_scb3_uart_tx &p13_0_scb3_uart_rx
63+
&p13_2_scb3_uart_rts &p13_3_scb3_uart_cts>;
64+
pinctrl-names = "default";
65+
};
66+
67+
&gpio_prt13 {
68+
status = "okay";
69+
};
70+
71+
&gpio_prt16 {
72+
status = "okay";
73+
};
74+
75+
&gpio_prt21 {
76+
status = "okay";
77+
};
78+
79+
&gpio_prt17 {
80+
status = "okay";
81+
};
82+
83+
&path_mux0 {
84+
status = "okay";
85+
};
86+
87+
&path_mux1 {
88+
status = "okay";
89+
};
90+
91+
&path_mux2 {
92+
status = "okay";
93+
};
94+
95+
&path_mux3 {
96+
status = "okay";
97+
};
98+
99+
&clk_mem {
100+
status = "okay";
101+
};
102+
103+
&clk_peri {
104+
status = "okay";
105+
};
106+
107+
&clk_slow {
108+
status = "okay";
109+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright (c) 2024 Cypress Semiconductor Corporation.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
/* Configure pin control bias mode for uart2 pins */
7+
&p13_1_scb3_uart_tx {
8+
drive-push-pull;
9+
};
10+
11+
&p13_0_scb3_uart_rx {
12+
input-enable;
13+
};
14+
15+
&p13_2_scb3_uart_rts {
16+
drive-push-pull;
17+
};
18+
19+
&p13_3_scb3_uart_cts {
20+
input-enable;
21+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright (c) 2025 Cypress Semiconductor Corporation.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
/dts-v1/;
7+
#include <arm/infineon/cat1c/mpns/xmc7200_e272k8384.dtsi>
8+
#include <arm/infineon/cat1c/xmc7200/system_clocks.dtsi>
9+
#include <arm/infineon/cat1c/xmc7200/xmc7200_m0p.dtsi>
10+
#include <arm/infineon/cat1c/xmc7200/memory_partition.dtsi>
11+
#include "kit_xmc72_evk_xmc7200d_e272k8384_m0p-pinctrl.dtsi"
12+
#include "kit_xmc72_evk_common.dtsi"
13+
14+
/ {
15+
model = "Infineon Evaluation board for XMC7200D-E272K8384 M0";
16+
compatible = "infineon,kit_xmc72_evk", "infineon,XMC7200";
17+
18+
chosen {
19+
zephyr,sram = &m0p_code;
20+
zephyr,flash = &m0p_data;
21+
zephyr,console = &uart3;
22+
zephyr,shell-uart = &uart3;
23+
};
24+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#
2+
# Copyright (c) 2025 Cypress Semiconductor Corporation.
3+
# SPDX-License-Identifier: Apache-2.0
4+
#
5+
6+
identifier: kit_xmc72_evk/xmc7200d_e272k8384/m0p
7+
name: XMC7200 Evaluation Kit (M0P)
8+
type: mcu
9+
arch: arm
10+
ram: 1024
11+
flash: 8384
12+
toolchain:
13+
- zephyr
14+
- gnuarmemb
15+
vendor: infineon
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#
2+
# Copyright (c) 2025 Cypress Semiconductor Corporation.
3+
# SPDX-License-Identifier: Apache-2.0
4+
#
5+
6+
# General configuration
7+
CONFIG_BUILD_OUTPUT_HEX=y
8+
CONFIG_BUILD_OUTPUT_BIN=y
9+
10+
CONFIG_ARM_MPU=y
11+
CONFIG_HW_STACK_PROTECTION=y
12+
13+
# Enable console
14+
CONFIG_CONSOLE=y
15+
CONFIG_UART_CONSOLE=y
16+
17+
# Enable UART driver
18+
CONFIG_SERIAL=y
19+
20+
# Enable GPIO driver
21+
CONFIG_GPIO=y
22+
23+
# Enable clock controller
24+
CONFIG_CLOCK_CONTROL=y

0 commit comments

Comments
 (0)