From cb1bdf14e5744f0c35bc239a3890b076940b91b8 Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Mon, 27 Jan 2025 04:49:39 +0900 Subject: [PATCH 1/2] boards: Add support WizNet W5500 EVB Pico2 Add initial support for W5500 EVB Pico2 Signed-off-by: TOKITA Hiroshi --- .../wiznet/w5500_evb_pico2/Kconfig.defconfig | 19 ++ .../w5500_evb_pico2/Kconfig.w5500_evb_pico2 | 5 + boards/wiznet/w5500_evb_pico2/board.cmake | 18 ++ boards/wiznet/w5500_evb_pico2/board.yml | 6 + .../doc/img/w5500_evb_pico2.webp | Bin 0 -> 36804 bytes boards/wiznet/w5500_evb_pico2/doc/index.rst | 136 ++++++++++++++ .../w5500_evb_pico2/support/openocd.cfg | 11 ++ .../w5500_evb_pico2-pinctrl.dtsi | 59 ++++++ .../w5500_evb_pico2/w5500_evb_pico2.dtsi | 176 ++++++++++++++++++ .../w5500_evb_pico2_rp2350a_m33.dts | 11 ++ .../w5500_evb_pico2_rp2350a_m33.yaml | 21 +++ .../w5500_evb_pico2_rp2350a_m33_defconfig | 10 + .../w5500_evb_pico2_rp2350a_m33.overlay | 12 ++ 13 files changed, 484 insertions(+) create mode 100644 boards/wiznet/w5500_evb_pico2/Kconfig.defconfig create mode 100644 boards/wiznet/w5500_evb_pico2/Kconfig.w5500_evb_pico2 create mode 100644 boards/wiznet/w5500_evb_pico2/board.cmake create mode 100644 boards/wiznet/w5500_evb_pico2/board.yml create mode 100644 boards/wiznet/w5500_evb_pico2/doc/img/w5500_evb_pico2.webp create mode 100644 boards/wiznet/w5500_evb_pico2/doc/index.rst create mode 100644 boards/wiznet/w5500_evb_pico2/support/openocd.cfg create mode 100644 boards/wiznet/w5500_evb_pico2/w5500_evb_pico2-pinctrl.dtsi create mode 100644 boards/wiznet/w5500_evb_pico2/w5500_evb_pico2.dtsi create mode 100644 boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.dts create mode 100644 boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.yaml create mode 100644 boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33_defconfig create mode 100644 tests/drivers/adc/adc_api/boards/w5500_evb_pico2_rp2350a_m33.overlay diff --git a/boards/wiznet/w5500_evb_pico2/Kconfig.defconfig b/boards/wiznet/w5500_evb_pico2/Kconfig.defconfig new file mode 100644 index 000000000000..1af3e24b6f08 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/Kconfig.defconfig @@ -0,0 +1,19 @@ +# Copyright (c) 2025 TOKITA Hiroshi +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_W5500_EVB_PICO2 + +if NETWORKING + +config NET_L2_ETHERNET + default y + +endif # NETWORKING + +config USB_SELF_POWERED + default n + +config SYS_CLOCK_HW_CYCLES_PER_SEC + default 150000000 + +endif # BOARD_W5500_EVB_PICO2 diff --git a/boards/wiznet/w5500_evb_pico2/Kconfig.w5500_evb_pico2 b/boards/wiznet/w5500_evb_pico2/Kconfig.w5500_evb_pico2 new file mode 100644 index 000000000000..ef3da1e97c30 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/Kconfig.w5500_evb_pico2 @@ -0,0 +1,5 @@ +# Copyright (c) 2025 TOKITA Hiroshi +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_W5500_EVB_PICO2 + select SOC_RP2350A_M33 if BOARD_W5500_EVB_PICO2_RP2350A_M33 diff --git a/boards/wiznet/w5500_evb_pico2/board.cmake b/boards/wiznet/w5500_evb_pico2/board.cmake new file mode 100644 index 000000000000..feae063129ac --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/board.cmake @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: Apache-2.0 + +if("${RPI_PICO_DEBUG_ADAPTER}" STREQUAL "") + set(RPI_PICO_DEBUG_ADAPTER "cmsis-dap") +endif() + +board_runner_args(openocd --cmd-pre-init "source [find interface/${RPI_PICO_DEBUG_ADAPTER}.cfg]") +board_runner_args(openocd --cmd-pre-init "source [find target/rp2350.cfg]") + +# The adapter speed is expected to be set by interface configuration. +# The Raspberry Pi's OpenOCD fork doesn't, so match their documentation at +# https://www.raspberrypi.com/documentation/microcontrollers/debug-probe.html#debugging-with-swd +board_runner_args(openocd --cmd-pre-init "set_adapter_speed_if_not_set 5000") + +board_runner_args(uf2 "--board-id=RP2350") + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) diff --git a/boards/wiznet/w5500_evb_pico2/board.yml b/boards/wiznet/w5500_evb_pico2/board.yml new file mode 100644 index 000000000000..61a534601dc3 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/board.yml @@ -0,0 +1,6 @@ +board: + name: w5500_evb_pico2 + full_name: W5500-EVB-Pico2 + vendor: wiznet + socs: + - name: rp2350a diff --git a/boards/wiznet/w5500_evb_pico2/doc/img/w5500_evb_pico2.webp b/boards/wiznet/w5500_evb_pico2/doc/img/w5500_evb_pico2.webp new file mode 100644 index 0000000000000000000000000000000000000000..cd0ced64165d4c7a5351b7286b6031fce613f3cb GIT binary patch literal 36804 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 Z=P&>O00000000000000000000005%{@LvD` literal 0 HcmV?d00001 diff --git a/boards/wiznet/w5500_evb_pico2/doc/index.rst b/boards/wiznet/w5500_evb_pico2/doc/index.rst new file mode 100644 index 000000000000..d1aefc4e9f73 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/doc/index.rst @@ -0,0 +1,136 @@ +.. zephyr:board:: w5500_evb_pico2 + +Overview +******** + +W5500-EVB-Pico2 is a microcontroller evaluation board based on the Raspberry +Pi RP2350A and fully hardwired TCP/IP controller W5500 - and basically works +the same as Raspberry Pi Pico2 board but with additional Ethernet via W5500. +The USB bootloader allows the ability to flash without any adapter, in a +drag-and-drop manner. It is also possible to flash and debug the boards with +their SWD interface, using an external adapter. + +Hardware +******** + +- Dual core Arm Cortex-M33 or Hazard3 processor running up to 133MHz +- 520KB on-chip SRAM +- 16MB on-board QSPI flash with XIP capabilities +- 26 GPIO pins +- 3 Analog inputs +- 2 UART peripherals +- 2 SPI controllers +- 2 I2C controllers +- 16 PWM channels +- USB 1.1 controller (host/device) +- 3 Programmable I/O (PIO) for custom peripherals +- On-board LED +- 1 Watchdog timer peripheral +- Wiznet W5500 Ethernet MAC/PHY + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Pin Mapping +=========== + +The peripherals of the RP2350A SoC can be routed to various pins on the board. +The configuration of these routes can be modified through DTS. Please refer to +the datasheet to see the possible routings for each peripheral. + +External pin mapping on the W5500_EVB_PICO2 is identical to the Raspberry Pi +Pico2. Since GPIO 25 is routed to the on-board LED on, similar to the Raspberry +Pi Pico, the blinky example works as intended. The W5500 is routed to the SPI0 +(P16-P19), with the reset and interrupt signal for the W5500 routed to P20 and +P21, respectively. All of these are shared with the edge connector on the +board. + +Refer to `W55500 Evaluation Board Pico2 Documentation`_ for a board schematic and +other certifications. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +.. rst-class:: rst-columns + +- UART0_TX : P0 +- UART0_RX : P1 +- I2C0_SDA : P4 +- I2C0_SCL : P5 +- I2C1_SDA : P14 +- I2C1_SCL : P15 +- SPI0_RX : P16 +- SPI0_CSN : P17 +- SPI0_SCK : P18 +- SPI0_TX : P19 +- W5500 Reset : P20 +- W5500 Interrupt : P21 +- ADC_CH0 : P26 +- ADC_CH1 : P27 +- ADC_CH2 : P28 +- ADC_CH3 : P29 + +Programming and Debugging +************************* + +Flashing +======== + +Using OpenOCD +------------- + +The overall explanation regarding flashing and debugging is the same as or +``rpi_pico``. +See :ref:`rpi_pico_flashing_using_openocd`. in ``rpi_pico`` documentation. + +A typical build command for w5500_evb_pico2 is as follows. +This assumes a CMSIS-DAP adapter such as the RaspberryPi Debug Probe, +but if you are using something else, specify ``RPI_PICO_DEBUG_ADAPTER``. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: w5500_evb_pico2 + :goals: build flash + :gen-args: -DOPENOCD=/usr/local/bin/openocd + +Using UF2 +--------- + +If you don't have an SWD adapter, you can flash the Raspberry Pi Pico with +a UF2 file. By default, building an app for this board will generate a +:file:`build/zephyr/zephyr.uf2` file. If the Pico is powered on with the ``BOOTSEL`` +button pressed, it will appear on the host as a mass storage device. The +UF2 file should be drag-and-dropped to the device, which will flash the Pico. + +Debugging +========= + +The SWD interface can also be used to debug the board. To achieve this, you can +either use SEGGER JLink or OpenOCD. + +Using OpenOCD +------------- + +Install OpenOCD as described for flashing the board. + +Here is an example for debugging the :zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: w5500_evb_pico2 + :maybe-skip-config: + :goals: debug + :gen-args: -DOPENOCD=/usr/local/bin/openocd + +.. target-notes:: + +.. _pico_setup.sh: + https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh + +.. _Getting Started with Raspberry Pi Pico: + https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf + +.. _W55500 Evaluation Board Pico2 Documentation: + https://docs.wiznet.io/Product/iEthernet/W5500/w5500-evb-pico2 diff --git a/boards/wiznet/w5500_evb_pico2/support/openocd.cfg b/boards/wiznet/w5500_evb_pico2/support/openocd.cfg new file mode 100644 index 000000000000..0f833247bc60 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/support/openocd.cfg @@ -0,0 +1,11 @@ +# Copyright (c) 2025 TOKITA Hiroshi +# SPDX-License-Identifier: Apache-2.0 + +# Checking and set 'adapter speed'. +# Set the adaptor speed, if unset, and given as an argument. +proc set_adapter_speed_if_not_set { speed } { + puts "checking adapter speed..." + if { [catch {adapter speed} ret] } { + adapter speed $speed + } +} diff --git a/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2-pinctrl.dtsi b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2-pinctrl.dtsi new file mode 100644 index 000000000000..dffd24d8aeaa --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2-pinctrl.dtsi @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2021, Yonatan Schachter + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + uart0_default: uart0_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + i2c0_default: i2c0_default { + group1 { + pinmux = , ; + input-enable; + input-schmitt-enable; + }; + }; + + i2c1_default: i2c1_default { + group1 { + pinmux = , ; + input-enable; + input-schmitt-enable; + }; + }; + + spi0_default: spi0_default { + group1 { + pinmux = , , ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + pwm_ch4b_default: pwm_ch4b_default { + group1 { + pinmux = ; + }; + }; + + adc_default: adc_default { + group1 { + pinmux = , , , ; + input-enable; + }; + }; +}; diff --git a/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2.dtsi b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2.dtsi new file mode 100644 index 000000000000..5a0959d721e6 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2.dtsi @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2025 TOKITA Hiroshi + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#include +#include +#include + +#include "w5500_evb_pico2-pinctrl.dtsi" + +/ { + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,code-partition = &code_partition; + }; + + pico_header: connector { + compatible = "raspberrypi,pico-header"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 0 0>, /* GP0 */ + <1 0 &gpio0 1 0>, /* GP1 */ + <2 0 &gpio0 2 0>, /* GP2 */ + <3 0 &gpio0 3 0>, /* GP3 */ + <4 0 &gpio0 4 0>, /* GP4 */ + <5 0 &gpio0 5 0>, /* GP5 */ + <6 0 &gpio0 6 0>, /* GP6 */ + <7 0 &gpio0 7 0>, /* GP7 */ + <8 0 &gpio0 8 0>, /* GP8 */ + <9 0 &gpio0 9 0>, /* GP9 */ + <10 0 &gpio0 10 0>, /* GP10 */ + <11 0 &gpio0 11 0>, /* GP11 */ + <12 0 &gpio0 12 0>, /* GP12 */ + <13 0 &gpio0 13 0>, /* GP13 */ + <14 0 &gpio0 14 0>, /* GP14 */ + <15 0 &gpio0 15 0>, /* GP15 */ + <16 0 &gpio0 16 0>, /* GP16 */ + <17 0 &gpio0 17 0>, /* GP17 */ + <18 0 &gpio0 18 0>, /* GP18 */ + <19 0 &gpio0 19 0>, /* GP19 */ + <20 0 &gpio0 20 0>, /* GP20 */ + <21 0 &gpio0 21 0>, /* GP21 */ + <22 0 &gpio0 22 0>, /* GP22 */ + <26 0 &gpio0 26 0>, /* GP26 */ + <27 0 &gpio0 27 0>, /* GP27 */ + <28 0 &gpio0 28 0>; /* GP28 */ + }; + + leds { + compatible = "gpio-leds"; + + led0: led_0 { + gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>; + label = "LED"; + }; + }; + + pwm_leds { + compatible = "pwm-leds"; + status = "disabled"; + + pwm_led0: pwm_led_0 { + pwms = <&pwm 9 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "PWM_LED"; + }; + }; + + aliases { + led0 = &led0; + pwm-led0 = &pwm_led0; + watchdog0 = &wdt0; + }; +}; + +&flash0 { + /* 16MB of flash minus the 0x100 used for + * the second stage bootloader + */ + reg = <0x10000000 DT_SIZE_M(16)>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Reserved memory for the second stage bootloader */ + second_stage_bootloader: partition@0 { + label = "second_stage_bootloader"; + reg = <0x00000000 0x100>; + read-only; + }; + + /* + * Usable flash. Starts at 0x100, after the bootloader. The partition + * size is 16MB minus the 0x100 bytes taken by the bootloader. + */ + code_partition: partition@100 { + label = "code-partition"; + reg = <0x100 (DT_SIZE_M(16) - 0x100)>; + read-only; + }; + }; +}; + +&uart0 { + current-speed = <115200>; + status = "okay"; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; + +&gpio0 { + status = "okay"; +}; + +&spi0 { + clock-frequency = ; + status = "okay"; + pinctrl-0 = <&spi0_default>; + pinctrl-names = "default"; + cs-gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + + ethernet: w5500@0 { + compatible = "wiznet,w5500"; + reg = <0x0>; + spi-max-frequency = <50000000>; + int-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; + local-mac-address = [00 00 00 01 02 03]; + status = "okay"; + }; +}; + +&i2c0 { + clock-frequency = ; + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + status = "okay"; +}; + +&adc { + pinctrl-0 = <&adc_default>; + pinctrl-names = "default"; + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_ch4b_default>; + pinctrl-names = "default"; + divider-int-0 = <255>; +}; + +&timer0 { + status = "okay"; +}; + +&wdt0 { + status = "okay"; +}; + +zephyr_udc0: &usbd { + status = "okay"; +}; + +pico_spi: &spi0 {}; +pico_i2c0: &i2c0 {}; +pico_i2c1: &i2c1 {}; +pico_serial: &uart0 {}; diff --git a/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.dts b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.dts new file mode 100644 index 000000000000..88ba8a6d16c4 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.dts @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2025 TOKITA Hiroshi + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include "w5500_evb_pico2.dtsi" diff --git a/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.yaml b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.yaml new file mode 100644 index 000000000000..aea485945f36 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33.yaml @@ -0,0 +1,21 @@ +identifier: w5500_evb_pico2/rp2350a/m33 +name: Wiznet W5500 Evaluation Board with RP2350 +type: mcu +arch: arm +flash: 16384 +ram: 520 +toolchain: + - zephyr + - gnuarmemb +supported: + - adc + - clock + - counter + - dma + - gpio + - hwinfo + - i2c + - pwm + - spi + - uart + - watchdog diff --git a/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33_defconfig b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33_defconfig new file mode 100644 index 000000000000..aaaa51cbdb98 --- /dev/null +++ b/boards/wiznet/w5500_evb_pico2/w5500_evb_pico2_rp2350a_m33_defconfig @@ -0,0 +1,10 @@ +CONFIG_SERIAL=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_GPIO=y +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_BUILD_OUTPUT_HEX=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_RESET=y +CONFIG_CLOCK_CONTROL=y diff --git a/tests/drivers/adc/adc_api/boards/w5500_evb_pico2_rp2350a_m33.overlay b/tests/drivers/adc/adc_api/boards/w5500_evb_pico2_rp2350a_m33.overlay new file mode 100644 index 000000000000..fb0ecaac606a --- /dev/null +++ b/tests/drivers/adc/adc_api/boards/w5500_evb_pico2_rp2350a_m33.overlay @@ -0,0 +1,12 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2025 TOKITA Hiroshi + */ + +/* W5500 EVB Pico2 can work the same configuration as W5500 EVB Pico */ +#include "w5500_evb_pico.overlay" + +&adc { + status = "okay"; +}; From 40a0ac7526f3c6fbdc99a6641618ab8471bd1340 Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sat, 8 Mar 2025 11:42:42 +0900 Subject: [PATCH 2/2] doc: boards: wiznet: Use product name for `full_name` in board.yml Use `W5500-EVB_Pico` - the commercial name of this board - for `full_name` field of `board.yml`. Signed-off-by: TOKITA Hiroshi --- boards/wiznet/w5500_evb_pico/board.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/wiznet/w5500_evb_pico/board.yml b/boards/wiznet/w5500_evb_pico/board.yml index eb4eed60b88b..e80be185286f 100644 --- a/boards/wiznet/w5500_evb_pico/board.yml +++ b/boards/wiznet/w5500_evb_pico/board.yml @@ -1,6 +1,6 @@ board: name: w5500_evb_pico - full_name: W5500 Evaluation Pico + full_name: W5500-EVB-Pico vendor: wiznet socs: - name: rp2040