boards: nxp: Add RD_RW612_BGA board

Add rd_rw612_bga board target.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
This commit is contained in:
Declan Snyder 2024-03-07 16:42:56 -06:00 committed by Fabio Baltieri
parent 5f53afca0a
commit f519087b21
12 changed files with 317 additions and 0 deletions

View file

@ -3329,6 +3329,7 @@ NXP Platforms (MCU):
- boards/nxp/lpcxpress*/
- boards/nxp/twr_*/
- boards/nxp/vmu*/
- boards/nxp/*rw*/
- soc/nxp/imxrt/
- soc/nxp/kinetis/
- soc/nxp/lpc/

View file

@ -0,0 +1,20 @@
#
# Copyright 2022-2023 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
if(CONFIG_NXP_RW6XX_BOOT_HEADER)
if(NOT DEFINED CONFIG_BOARD_RD_RW612_BGA)
message(WARNING "It appears you are using the board definition for "
"the RD_RW612_BGA, but targeting a custom board. You may need to "
"update your flash configuration block data")
endif()
zephyr_compile_definitions(BOOT_HEADER_ENABLE=1)
zephyr_compile_definitions(BOARD_FLASH_SIZE=CONFIG_FLASH_SIZE*1024)
set(RW612_BOARD_DIR
"${ZEPHYR_HAL_NXP_MODULE_DIR}/mcux/mcux-sdk/boards/rdrw612bga")
zephyr_library()
zephyr_library_sources(${RW612_BOARD_DIR}/flash_config/flash_config.c)
zephyr_library_include_directories(${RW612_BOARD_DIR}/flash_config)
endif()

View file

@ -0,0 +1,5 @@
# Copyright 2024 NXP
# SPDX-License-Identifier: Apache-2.0
config BOARD_RD_RW612_BGA
select SOC_PART_NUMBER_RW612ETA1I

View file

@ -0,0 +1,9 @@
# Copyright 2022-2023 NXP
# SPDX-License-Identifier: Apache-2.0
board_runner_args(jlink "--device=RW612" "--reset-after-load")
board_runner_args(linkserver "--device=RW612:RDRW612")
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/linkserver.board.cmake)

View file

@ -0,0 +1,5 @@
board:
name: rd_rw612_bga
vendor: nxp
socs:
- name: rw612

View file

@ -0,0 +1,115 @@
.. _rd_rw612_bga:
NXP RD-RW612-BGA
################
Overview
********
The RW612 is a highly integrated, low-power tri-radio wireless MCU with an
integrated 260 MHz ARM Cortex-M33 MCU and Wi-Fi 6 + Bluetooth Low Energy (LE) 5.3 / 802.15.4
radios designed for a broad array of applications, including connected smart home devices,
gaming controllers, enterprise and industrial automation, smart accessories and smart energy.
The RW612 MCU subsystem includes 1.2 MB of on-chip SRAM and a high-bandwidth Quad SPI interface
with an on-the-fly decryption engine for securely accessing off-chip XIP flash.
The advanced design of the RW612 delivers tight integration, low power and highly secure
operation in a space- and cost-efficient wireless MCU requiring only a single 3.3V power supply.
Hardware
********
- 260 MHz ARM Cortex-M33, tri-radio cores for Wifi 6 + BLE 5.3 + 802.15.4
- 1.2 MB on-chip SRAM
Supported Features
==================
+-----------+------------+-----------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+===================================+
| NVIC | on-chip | nested vector interrupt controller|
+-----------+------------+-----------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-----------------------------------+
| MCI_IOMUX | on-chip | pinmux |
+-----------+------------+-----------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-----------------------------------+
| USART | on-chip | serial |
+-----------+------------+-----------------------------------+
The default configuration can be found in the defconfig file:
:zephyr_file:`boards/nxp/rd_rw612_bga/rd_rw612_bga_defconfig/`
Other hardware features are not currently supported
Programming and Debugging
*************************
Build and flash applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details).
Configuring a Debug Probe
=========================
A debug probe is used for both flashing and debugging the board. This board is
configured by default to use the JLink Firmware.
Configuring a Console
=====================
Connect a USB cable from your PC to J7, and use the serial terminal of your choice
(minicom, putty, etc.) with the following settings:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
Flashing
========
Here is an example for the :ref:`hello_world` application. This example uses the
:ref:`jlink-debug-host-tools` as default.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: rd_rw612_bga
:goals: flash
Open a serial terminal, reset the board (press the RESET button), and you should
see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS v3.4.0 *****
Hello World! rd_rw612_bga
Debugging
=========
Here is an example for the :ref:`hello_world` application. This example uses the
:ref:`jlink-debug-host-tools` as default.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: rd_rw612_bga
:goals: debug
Open a serial terminal, step through the application in your debugger, and you
should see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS zephyr-v3.6.0 *****
Hello World! rd_rw612_bga
Resources
=========
.. _RW612 Website:
https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/wireless-mcu-with-integrated-tri-radiobr1x1-wi-fi-6-plus-bluetooth-low-energy-5-3-802-15-4:RW612

View file

@ -0,0 +1,7 @@
# Copyright 2023 NXP
# SPDX-License-Identifier: Apache-2.0
# Suppress "simple_bus_reg" on RW6XX boards as all GPIO ports use the same register.
list(APPEND EXTRA_DTC_FLAGS "-Wno-simple_bus_reg")
# Suppress "spi_bus_bridge" as flexcomm node can be used as a SPI device.
list(APPEND EXTRA_DTC_FLAGS "-Wno-spi_bus_bridge")

View file

@ -0,0 +1,16 @@
/*
* Copyright 2022-2024 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <nxp/rw/RW612-pinctrl.h>
&pinctrl {
pinmux_flexcomm3_usart: pinmux_flexcomm3_usart {
group0 {
pinmux = <IO_MUX_FC3_USART_DATA>;
slew-rate = "normal";
};
};
};

View file

@ -0,0 +1,14 @@
/*
* Copyright 2022-2023 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <nxp/nxp_rw6xx.dtsi>
#include "rd_rw612_bga.dtsi"
/ {
model = "nxp,rd_rw612_bga";
};

View file

@ -0,0 +1,93 @@
/*
* Copyright 2022-2024 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "rd_rw612_bga-pinctrl.dtsi"
/ {
aliases {
usart-0 = &flexcomm3;
led0 = &green_led;
sw0 = &sw_4;
};
chosen {
zephyr,sram = &sram_data;
zephyr,flash = &mx25u51245g;
zephyr,code-partition = &slot0_partition;
zephyr,flash-controller = &mx25u51245g;
zephyr,console = &flexcomm3;
zephyr,shell-uart = &flexcomm3;
};
leds {
compatible = "gpio-leds";
green_led: led_1 {
gpios = <&hsgpio1 20 0>;
label = "User LED_GREEN";
};
};
gpio_keys {
compatible = "gpio-keys";
sw_4: sw_4 {
label = "User SW4";
gpios = <&hsgpio0 25 0>;
};
};
};
&flexcomm3 {
compatible = "nxp,lpc-usart";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&pinmux_flexcomm3_usart>;
pinctrl-names = "default";
};
&hsgpio0 {
status = "okay";
};
&flexspi {
status = "okay";
mx25u51245g: mx25u51245g@0 {
compatible = "nxp,imx-flexspi-nor";
spi-max-frequency = <133000000>;
reg = <0>;
/* MX25UM51245G is 64MB, 512MBit flash part */
size = <DT_SIZE_M(64 * 8)>;
status = "disabled";
jedec-id = [c2 25 3a];
erase-block-size = <4096>;
write-block-size = <1>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(128)>;
};
/* Note slot 0 has one additional sector,
* this is intended for use with the swap move algorithm
*/
slot0_partition: partition@20000 {
label = "image-0";
reg = <0x00020000 0x3e0000>;
};
slot1_partition: partition@680000 {
label = "image-1";
reg = <0x680000 0x3e0000>;
};
storage_partition: partition@a60000 {
label = "storage";
reg = <0xa60000 0x35a0000>;
};
};
};
};

View file

@ -0,0 +1,18 @@
#
# Copyright 2022-2024 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
identifier: rd_rw612_bga
name: NXP RD_RW612_BGA
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
ram: 960
flash: 65536
supported:
- gpio

View file

@ -0,0 +1,14 @@
#
# Copyright 2022 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_PINCTRL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_GPIO=y
CONFIG_ARM_MPU=y
CONFIG_HW_STACK_PROTECTION=y