boards: frdm_mcxa344: add frdm_mcxa344 board
enable board support for frdm_mcxa344
Signed-off-by: Neil Chen <cheng.chen_1@nxp.com>
diff --git a/boards/nxp/frdm_mcxa344/CMakeLists.txt b/boards/nxp/frdm_mcxa344/CMakeLists.txt
new file mode 100644
index 0000000..c06b927
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/CMakeLists.txt
@@ -0,0 +1,8 @@
+#
+# Copyright 2025 NXP
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+zephyr_library()
+zephyr_library_sources(board.c)
diff --git a/boards/nxp/frdm_mcxa344/Kconfig b/boards/nxp/frdm_mcxa344/Kconfig
new file mode 100644
index 0000000..9e41ea4
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/Kconfig
@@ -0,0 +1,5 @@
+# Copyright 2025 NXP
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FRDM_MCXA344
+ select BOARD_EARLY_INIT_HOOK
diff --git a/boards/nxp/frdm_mcxa344/Kconfig.frdm_mcxa344 b/boards/nxp/frdm_mcxa344/Kconfig.frdm_mcxa344
new file mode 100644
index 0000000..4d895ff
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/Kconfig.frdm_mcxa344
@@ -0,0 +1,6 @@
+# Copyright 2025 NXP
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FRDM_MCXA344
+ select SOC_MCXA344
+ select SOC_PART_NUMBER_MCXA344VLL
diff --git a/boards/nxp/frdm_mcxa344/board.c b/boards/nxp/frdm_mcxa344/board.c
new file mode 100644
index 0000000..aeef915
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/board.c
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2025 NXP
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#include <zephyr/init.h>
+#include <zephyr/device.h>
+#include <zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h>
+#include <fsl_clock.h>
+#include <fsl_spc.h>
+#include <soc.h>
+
+/* Core clock frequency: 180MHz */
+#define CLOCK_INIT_CORE_CLOCK 180000000U
+#define BOARD_BOOTCLOCKFROHF180M_CORE_CLOCK 180000000U
+/* System clock frequency. */
+extern uint32_t SystemCoreClock;
+
+void board_early_init_hook(void)
+{
+ uint32_t core_freq;
+ spc_active_mode_core_ldo_option_t ldo_option;
+ spc_sram_voltage_config_t sram_option;
+
+ /* Get the CPU Core frequency */
+ core_freq = CLOCK_GetCoreSysClkFreq();
+
+ /* The flow of increasing voltage and frequency */
+ if (core_freq <= BOARD_BOOTCLOCKFROHF180M_CORE_CLOCK) {
+ /* Set the LDO_CORE VDD regulator level */
+ ldo_option.CoreLDOVoltage = kSPC_CoreLDO_OverDriveVoltage;
+ ldo_option.CoreLDODriveStrength = kSPC_CoreLDO_NormalDriveStrength;
+ (void)SPC_SetActiveModeCoreLDORegulatorConfig(SPC0, &ldo_option);
+ /* Configure Flash to support different voltage level and frequency */
+ FMU0->FCTRL =
+ (FMU0->FCTRL & ~((uint32_t)FMU_FCTRL_RWSC_MASK)) | (FMU_FCTRL_RWSC(0x4U));
+ /* Specifies the operating voltage for the SRAM's read/write timing margin */
+ sram_option.operateVoltage = kSPC_sramOperateAt1P2V;
+ sram_option.requestVoltageUpdate = true;
+ (void)SPC_SetSRAMOperateVoltage(SPC0, &sram_option);
+ }
+
+ /*!< Set up system dividers */
+ CLOCK_SetClockDiv(kCLOCK_DivAHBCLK, 1U); /* !< Set SYSCON.AHBCLKDIV divider to value 1 */
+ CLOCK_SetClockDiv(kCLOCK_DivFRO_HF, 1U); /* !< Set SYSCON.FROHFDIV divider to value 1 */
+ CLOCK_SetupFROHFClocking(BOARD_BOOTCLOCKFROHF180M_CORE_CLOCK); /*!< Enable FRO HF */
+ CLOCK_SetupFRO12MClocking(); /*!< Setup FRO12M clock */
+
+ CLOCK_AttachClk(kFRO_HF_to_MAIN_CLK); /* !< Switch MAIN_CLK to kFRO_HF */
+
+ /* The flow of decreasing voltage and frequency */
+ if (core_freq > BOARD_BOOTCLOCKFROHF180M_CORE_CLOCK) {
+ /* Configure Flash to support different voltage level and frequency */
+ FMU0->FCTRL =
+ (FMU0->FCTRL & ~((uint32_t)FMU_FCTRL_RWSC_MASK)) | (FMU_FCTRL_RWSC(0x4U));
+ /* Specifies the operating voltage for the SRAM's read/write timing margin */
+ sram_option.operateVoltage = kSPC_sramOperateAt1P2V;
+ sram_option.requestVoltageUpdate = true;
+ (void)SPC_SetSRAMOperateVoltage(SPC0, &sram_option);
+ /* Set the LDO_CORE VDD regulator level */
+ ldo_option.CoreLDOVoltage = kSPC_CoreLDO_OverDriveVoltage;
+ ldo_option.CoreLDODriveStrength = kSPC_CoreLDO_NormalDriveStrength;
+ (void)SPC_SetActiveModeCoreLDORegulatorConfig(SPC0, &ldo_option);
+ }
+
+ /*!< Set up clock selectors - Attach clocks to the peripheries */
+ CLOCK_AttachClk(kCPU_CLK_to_TRACE); /* !< Switch TRACE to CPU_CLK */
+
+ /*!< Set up dividers */
+ CLOCK_SetClockDiv(kCLOCK_DivFRO_LF, 1U); /* !< Set SYSCON.FROLFDIV divider to value 1 */
+ CLOCK_SetClockDiv(kCLOCK_DivTRACE, 2U); /* !< Set MRCC.TRACE_CLKDIV divider to value 2 */
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(porta))
+ RESET_ReleasePeripheralReset(kPORT0_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GatePORT0);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(portb))
+ RESET_ReleasePeripheralReset(kPORT1_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GatePORT1);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(portc))
+ RESET_ReleasePeripheralReset(kPORT2_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GatePORT2);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(portd))
+ RESET_ReleasePeripheralReset(kPORT3_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GatePORT3);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(porte))
+ RESET_ReleasePeripheralReset(kPORT4_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GatePORT4);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio0))
+ RESET_ReleasePeripheralReset(kGPIO0_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GateGPIO0);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio1))
+ RESET_ReleasePeripheralReset(kGPIO1_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GateGPIO1);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio2))
+ RESET_ReleasePeripheralReset(kGPIO2_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GateGPIO2);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio3))
+ RESET_ReleasePeripheralReset(kGPIO3_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GateGPIO3);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio4))
+ RESET_ReleasePeripheralReset(kGPIO4_RST_SHIFT_RSTn);
+ CLOCK_EnableClock(kCLOCK_GateGPIO4);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart0))
+ CLOCK_SetClockDiv(kCLOCK_DivLPUART0, 1u);
+ CLOCK_AttachClk(kFRO_LF_DIV_to_LPUART0);
+ RESET_ReleasePeripheralReset(kLPUART0_RST_SHIFT_RSTn);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart1))
+ CLOCK_SetClockDiv(kCLOCK_DivLPUART1, 1u);
+ CLOCK_AttachClk(kFRO_LF_DIV_to_LPUART1);
+ RESET_ReleasePeripheralReset(kLPUART1_RST_SHIFT_RSTn);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart2))
+ CLOCK_SetClockDiv(kCLOCK_DivLPUART2, 1u);
+ CLOCK_AttachClk(kFRO_LF_DIV_to_LPUART2);
+ RESET_ReleasePeripheralReset(kLPUART2_RST_SHIFT_RSTn);
+#endif
+
+#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart3))
+ CLOCK_SetClockDiv(kCLOCK_DivLPUART3, 1u);
+ CLOCK_AttachClk(kFRO_LF_DIV_to_LPUART3);
+ RESET_ReleasePeripheralReset(kLPUART3_RST_SHIFT_RSTn);
+#endif
+
+ /* Set SystemCoreClock variable. */
+ SystemCoreClock = CLOCK_INIT_CORE_CLOCK;
+}
diff --git a/boards/nxp/frdm_mcxa344/board.cmake b/boards/nxp/frdm_mcxa344/board.cmake
new file mode 100644
index 0000000..d111b15
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/board.cmake
@@ -0,0 +1,13 @@
+#
+# Copyright 2025 NXP
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+board_runner_args(jlink "--device=MCXA344")
+board_runner_args(linkserver "--device=MCXA344:FRDM-MCXA344")
+board_runner_args(pyocd "--target=MCXA344")
+
+include(${ZEPHYR_BASE}/boards/common/linkserver.board.cmake)
+include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
+include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
diff --git a/boards/nxp/frdm_mcxa344/board.yml b/boards/nxp/frdm_mcxa344/board.yml
new file mode 100644
index 0000000..20a5876
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/board.yml
@@ -0,0 +1,6 @@
+board:
+ name: frdm_mcxa344
+ full_name: FRDM-MCXA344
+ vendor: nxp
+ socs:
+ - name: mcxa344
diff --git a/boards/nxp/frdm_mcxa344/doc/frdm_mcxa344.webp b/boards/nxp/frdm_mcxa344/doc/frdm_mcxa344.webp
new file mode 100644
index 0000000..7412adb
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/doc/frdm_mcxa344.webp
Binary files differ
diff --git a/boards/nxp/frdm_mcxa344/doc/index.rst b/boards/nxp/frdm_mcxa344/doc/index.rst
new file mode 100644
index 0000000..729c69c
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/doc/index.rst
@@ -0,0 +1,160 @@
+.. zephyr:board:: frdm_mcxa344
+
+Overview
+********
+
+FRDM-MCXA344 is a compact and scalable development board for rapid prototyping of MCX A344
+MCUs. They offer industry standard headers for easy access to the MCUs input/output (I/O),
+integrated open-standard serial interfaces, external flash memory and an onboard MCU-Link
+debugger.
+
+Hardware
+********
+
+- MCX-A344 Arm Cortex-M33 microcontroller running at 180 MHz
+- 256KB dual-bank on chip Flash
+- 64 KB RAM
+- 1x FlexCAN with FD, 1x RGB LED, 3x SW buttons
+- On-board MCU-Link debugger with CMSIS-DAP
+- Arduino Header, SmartDMA/Camera Header, mikroBUS
+
+For more information about the MCX-A344 SoC and FRDM-MCXA344 board, see:
+
+- `MCX-A344 SoC Website`_
+- `FRDM-MCXA344 Website`_
+- `FRDM-MCXA344 User Guide`_
+
+Supported Features
+==================
+
+.. zephyr:board-supported-hw::
+
+Connections and IOs
+===================
+
+The MCX-A344 SoC has 5 gpio controllers and has pinmux registers which
+can be used to configure the functionality of a pin.
+
++------------+-----------------+----------------------------+
+| Name | Function | Usage |
++============+=================+============================+
+| PIO2_3 | UART | UART RX |
++------------+-----------------+----------------------------+
+| PIO2_2 | UART | UART TX |
++------------+-----------------+----------------------------+
+
+System Clock
+============
+
+The MCX-A344 SoC is configured to use FRO running at 180MHz as a source for
+the system clock.
+
+Serial Port
+===========
+
+The FRDM-MCXA344 SoC has 4 LPUART interfaces for serial communication.
+LPUART 2 is configured as UART for the console.
+
+Programming and Debugging
+*************************
+
+.. zephyr:board-supported-runners::
+
+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 MCU-Link CMSIS-DAP Onboard Debug Probe.
+
+Using LinkServer
+----------------
+
+Linkserver is the default runner for this board, and supports the factory
+default MCU-Link firmware. Follow the instructions in
+:ref:`mcu-link-cmsis-onboard-debug-probe` to reprogram the default MCU-Link
+firmware. This only needs to be done if the default onboard debug circuit
+firmware was changed. To put the board in ``ISP mode`` to program the firmware,
+short jumper JP4.
+
+Using J-Link
+------------
+
+There are two options. The onboard debug circuit can be updated with Segger
+J-Link firmware by following the instructions in
+:ref:`mcu-link-jlink-onboard-debug-probe`.
+To be able to program the firmware, you need to put the board in ``ISP mode``
+by shortening the jumper JP4.
+The second option is to attach a :ref:`jlink-external-debug-probe` to the
+10-pin SWD connector (J11) of the board. Additionally, the jumper JP6 must
+be shorted.
+For both options use the ``-r jlink`` option with west to use the jlink runner.
+
+.. code-block:: console
+
+ west flash -r jlink
+
+Configuring a Console
+=====================
+
+Connect a USB cable from your PC to J13, 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 :zephyr:code-sample:`hello_world` application.
+
+.. zephyr-app-commands::
+ :zephyr-app: samples/hello_world
+ :board: frdm_mcxa344
+ :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 build v3.6.0-4478-ge6c3a42f5f52 ***
+ Hello World! frdm_mcxa344/mcxa344
+
+Debugging
+=========
+
+Here is an example for the :zephyr:code-sample:`hello_world` application.
+
+.. zephyr-app-commands::
+ :zephyr-app: samples/hello_world
+ :board: frdm_mcxa344/mcxa344
+ :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 build v3.6.0-4478-ge6c3a42f5f52 ***
+ Hello World! frdm_mcxa344/mcxa344
+
+Troubleshooting
+===============
+
+.. include:: ../../common/segger-ecc-systemview.rst.inc
+
+.. include:: ../../common/board-footer.rst.inc
+
+.. _MCX-A344 SoC Website:
+ https://www.nxp.com/products/MCX-A34X
+
+.. _FRDM-MCXA344 Website:
+ https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-MCXA344
+
+.. _FRDM-MCXA344 User Guide:
+ https://www.nxp.com/document/guide/getting-started-with-frdm-mcxa344:GS-FRDM-MCXA344
diff --git a/boards/nxp/frdm_mcxa344/frdm_mcxa344-pinctrl.dtsi b/boards/nxp/frdm_mcxa344/frdm_mcxa344-pinctrl.dtsi
new file mode 100644
index 0000000..0179bb4
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/frdm_mcxa344-pinctrl.dtsi
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2025 NXP
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+
+#include <nxp/mcx/MCXA344VLL-pinctrl.h>
+
+&pinctrl {
+ pinmux_lpuart2: pinmux_lpuart2 {
+ group0 {
+ pinmux = <LPUART2_RXD_P2_3>,
+ <LPUART2_TXD_P2_2>;
+ drive-strength = "low";
+ slew-rate = "fast";
+ input-enable;
+ };
+ };
+};
diff --git a/boards/nxp/frdm_mcxa344/frdm_mcxa344.dts b/boards/nxp/frdm_mcxa344/frdm_mcxa344.dts
new file mode 100644
index 0000000..8028d7d
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/frdm_mcxa344.dts
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2025 NXP
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/dts-v1/;
+
+#include <nxp/nxp_mcxa344.dtsi>
+#include "frdm_mcxa344-pinctrl.dtsi"
+#include <zephyr/dt-bindings/gpio/arduino-header-r3.h>
+#include <zephyr/dt-bindings/input/input-event-codes.h>
+
+/ {
+ model = "NXP FRDM_MCXA344 board";
+ compatible = "nxp,mcxa344", "nxp,mcx";
+
+ aliases{
+ led0 = &red_led;
+ led1 = &green_led;
+ led2 = &blue_led;
+ sw0 = &user_button_2;
+ sw1 = &user_button_3;
+ };
+
+ chosen {
+ zephyr,sram = &sram0;
+ zephyr,flash = &flash;
+ zephyr,flash-controller = &fmu;
+ zephyr,code-partition = &slot0_partition;
+ zephyr,console = &lpuart2;
+ zephyr,shell-uart = &lpuart2;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ red_led: led_0 {
+ gpios = <&gpio3 18 GPIO_ACTIVE_LOW>;
+ label = "Red LED";
+ };
+
+ green_led: led_1 {
+ gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
+ label = "Green LED";
+ };
+
+ blue_led: led_2 {
+ gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
+ label = "Blue LED";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+
+ user_button_2: button_2 {
+ label = "User SW2";
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ zephyr,code = <INPUT_KEY_0>;
+ };
+
+ user_button_3: button_3 {
+ label = "User SW3";
+ gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+ zephyr,code = <INPUT_KEY_1>;
+ };
+ };
+
+ arduino_header: arduino-connector {
+ compatible = "arduino-header-r3";
+ #gpio-cells = <2>;
+ gpio-map-mask = <0xffffffff 0xffffffc0>;
+ gpio-map-pass-thru = <0 0x3f>;
+ gpio-map = <ARDUINO_HEADER_R3_A0 0 &gpio1 14 0>,
+ <ARDUINO_HEADER_R3_A1 0 &gpio2 5 0>,
+ <ARDUINO_HEADER_R3_A2 0 &gpio2 7 0>,
+ <ARDUINO_HEADER_R3_A3 0 &gpio3 30 0>,
+ <ARDUINO_HEADER_R3_A4 0 &gpio1 0 0>,
+ <ARDUINO_HEADER_R3_A5 0 &gpio1 1 0>,
+ <ARDUINO_HEADER_R3_D0 0 &gpio2 3 0>,
+ <ARDUINO_HEADER_R3_D1 0 &gpio2 2 0>,
+ <ARDUINO_HEADER_R3_D2 0 &gpio3 12 0>,
+ <ARDUINO_HEADER_R3_D3 0 &gpio3 14 0>,
+ <ARDUINO_HEADER_R3_D4 0 &gpio1 15 0>,
+ <ARDUINO_HEADER_R3_D5 0 &gpio3 1 0>,
+ <ARDUINO_HEADER_R3_D6 0 &gpio3 17 0>,
+ <ARDUINO_HEADER_R3_D7 0 &gpio3 22 0>,
+ <ARDUINO_HEADER_R3_D8 0 &gpio4 3 0>,
+ <ARDUINO_HEADER_R3_D9 0 &gpio3 13 0>,
+ <ARDUINO_HEADER_R3_D10 0 &gpio3 11 0>,
+ <ARDUINO_HEADER_R3_D11 0 &gpio3 8 0>,
+ <ARDUINO_HEADER_R3_D12 0 &gpio3 9 0>,
+ <ARDUINO_HEADER_R3_D13 0 &gpio3 10 0>,
+ <ARDUINO_HEADER_R3_D14 0 &gpio1 8 0>,
+ <ARDUINO_HEADER_R3_D15 0 &gpio1 9 0>;
+ };
+};
+
+&cpu0 {
+ clock-frequency = <180000000>;
+};
+
+&edma0 {
+ status = "okay";
+};
+
+&gpio0 {
+ status = "okay";
+};
+
+&gpio1 {
+ status = "okay";
+};
+
+&gpio2 {
+ status = "okay";
+};
+
+&gpio3 {
+ status = "okay";
+};
+
+&gpio4 {
+ status = "okay";
+};
+
+&lpuart2 {
+ status = "okay";
+ current-speed = <115200>;
+ pinctrl-0 = <&pinmux_lpuart2>;
+ pinctrl-names = "default";
+};
+
+&flash {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ boot_partition: partition@0 {
+ label = "mcuboot";
+ reg = <0x00000000 DT_SIZE_K(16)>;
+ read-only;
+ };
+
+ slot0_partition: partition@4000 {
+ label = "image-0";
+ reg = <0x00004000 DT_SIZE_K(100)>;
+ };
+
+ slot1_partition: partition@1D000 {
+ label = "image-1";
+ reg = <0x0001D000 DT_SIZE_K(100)>;
+ };
+
+ storage_partition: partition@36000 {
+ label = "storage";
+ reg = <0x00036000 DT_SIZE_K(28)>;
+ };
+ };
+};
diff --git a/boards/nxp/frdm_mcxa344/frdm_mcxa344.yaml b/boards/nxp/frdm_mcxa344/frdm_mcxa344.yaml
new file mode 100644
index 0000000..5adc5c8
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/frdm_mcxa344.yaml
@@ -0,0 +1,21 @@
+#
+# Copyright 2025 NXP
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+identifier: frdm_mcxa344
+name: NXP FRDM MCXA344
+type: mcu
+arch: arm
+ram: 48
+flash: 244
+toolchain:
+ - zephyr
+ - gnuarmemb
+supported:
+ - arduino_gpio
+ - flash
+ - gpio
+ - uart
+vendor: nxp
diff --git a/boards/nxp/frdm_mcxa344/frdm_mcxa344_defconfig b/boards/nxp/frdm_mcxa344/frdm_mcxa344_defconfig
new file mode 100644
index 0000000..e006f65
--- /dev/null
+++ b/boards/nxp/frdm_mcxa344/frdm_mcxa344_defconfig
@@ -0,0 +1,12 @@
+#
+# Copyright 2025 NXP
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+CONFIG_CONSOLE=y
+CONFIG_UART_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_UART_INTERRUPT_DRIVEN=y
+CONFIG_GPIO=y
+CONFIG_LPADC_DO_OFFSET_CALIBRATION=y