boards: add support for IAR STM32F429II-ACA

Adds support for the IAR STM32F429II-ACA evaluation board

Signed-off-by: Ivar Bjerling <ivar@ivarbjerling.com>
diff --git a/boards/iar/index.rst b/boards/iar/index.rst
new file mode 100644
index 0000000..3cc895f
--- /dev/null
+++ b/boards/iar/index.rst
@@ -0,0 +1,10 @@
+.. _boards-iar:
+
+IAR
+###
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   **/*
diff --git a/boards/iar/stm32f429ii_aca/Kconfig.stm32f429ii_aca b/boards/iar/stm32f429ii_aca/Kconfig.stm32f429ii_aca
new file mode 100644
index 0000000..f04f397
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/Kconfig.stm32f429ii_aca
@@ -0,0 +1,6 @@
+# Copyright (c) 2016 Linaro Limited.
+# Copyright (c) 2025 IAR Systems.
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_STM32F429II_ACA
+	select SOC_STM32F429XX
diff --git a/boards/iar/stm32f429ii_aca/board.cmake b/boards/iar/stm32f429ii_aca/board.cmake
new file mode 100644
index 0000000..1d0b4be
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/board.cmake
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: Apache-2.0
+
+board_runner_args(jlink "--device=STM32F429II" "--speed=4000")
+board_runner_args(pyocd "--target=stm32f429xi")
+board_runner_args(pyocd "--flash-opt=-O reset_type=hw")
+board_runner_args(pyocd "--flash-opt=-O connect_mode=under-reset")
+
+include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
+include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
+include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
diff --git a/boards/iar/stm32f429ii_aca/board.yml b/boards/iar/stm32f429ii_aca/board.yml
new file mode 100644
index 0000000..67419bb
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/board.yml
@@ -0,0 +1,6 @@
+board:
+  name: stm32f429ii_aca
+  full_name: STM32F429II-ACA
+  vendor: iar
+  socs:
+    - name: stm32f429xx
diff --git a/boards/iar/stm32f429ii_aca/doc/img/stm32f429ii_aca.webp b/boards/iar/stm32f429ii_aca/doc/img/stm32f429ii_aca.webp
new file mode 100644
index 0000000..1ce5bb7
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/doc/img/stm32f429ii_aca.webp
Binary files differ
diff --git a/boards/iar/stm32f429ii_aca/doc/index.rst b/boards/iar/stm32f429ii_aca/doc/index.rst
new file mode 100644
index 0000000..cc95c94
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/doc/index.rst
@@ -0,0 +1,138 @@
+.. zephyr:board:: stm32f429ii_aca
+
+Overview
+********
+
+The IAR STM32F429II-ACA evaluation board features an ARM Cortex-M4 based STM32F429II MCU.
+Here are some highlights of the STM32F429II-ACA board:
+
+- STM32 microcontroller in LQFP144 package
+- JTAG/SWD debugger/programmer interface
+- Flexible board power supply
+
+  - JTAG/SWD connector
+  - USB HS connector
+
+- 3x user push-buttons and 1x RESET push-button
+- Open-close switch and on-auto-off switch
+- 2x capacitive touch panels
+- USB OTG with mini-USB connector
+- Small speaker
+- Trimmer potentiometer
+- Nine LEDs
+
+  - 1x power LED
+  - 3x car traffic light LEDs
+  - 2x pedestrian traffic light LEDs
+  - 1x car interior light LED
+  - 2x user LEDs
+
+Schematics for the board can be found `here <stm32f429ii-aca-schematics_>`_
+
+Hardware
+********
+
+The STM32F429II-ACA evaluation board provides the following hardware components:
+
+- STM32F429II in LQFP144 package
+- ARM |reg| 32-bit Cortex |reg| -M4 CPU with FPU
+- 180 MHz max CPU frequency
+- VDD from 1.8 V to 3.6 V
+- 2 MB Internal Flash
+- 4 Mbit External Flash
+- 256+4 KB SRAM including 64-KB of core coupled memory
+- GPIO with external interrupt capability
+- 12-bit ADC
+- 12-bit DAC
+- RTC
+- General Purpose Timers
+- I2C
+- SPI
+- USB 2.0 OTG HS/FS with dedicated DMA, on-chip full-speed PHY and ULPI
+- CRC calculation unit
+- True random number generator
+- DMA Controller
+
+More information about STM32F429II can be found here:
+
+- `STM32F429II on www.st.com`_
+- `STM32F429 Reference Manual`_
+
+Supported Features
+==================
+
+.. zephyr:board-supported-hw::
+
+Default Zephyr Peripheral Mapping:
+----------------------------------
+- I2C_1_SCL : PB8
+- I2C_1_SDA : PB7
+- I2C_2_SCL : PH4
+- I2C_2_SDA : PH5
+- SPI_5_NSS : PF6
+- SPI_5_SCK : PF7
+- SPI_5_MISO : PF8
+- SPI_5_MOSI : PF9
+- OTG_HS_ID : PB12
+- OTG_HS_DM : PB14
+- OTG_HS_DP : PB15
+
+Serial Port
+===========
+
+By default, the STM32F429II-ACA evaluation board has no physical serial port available.
+The board has up to 8 UARTs, of which none are used.
+
+USB Port
+========
+
+The STM32F429II-ACA evaluation board has a USB HS capable Mini-USB port. It is connected to the on-chip
+OTG_HS peripheral.
+
+Programming and Debugging
+*************************
+
+Applications for the ``stm32f429ii_aca`` board configuration can be built
+and flashed in the usual way (see :ref:`build_an_application` and
+:ref:`application_run` for more details).
+
+Flashing
+========
+
+In order to flash this board using west, an external debug probe such as a Segger J-Link
+has to be connected through the JTAG/SWD connector on the board.
+By default, the board is set to be flashed using the jlink runner.
+Alternatively, openocd, or pyocd can also be used as runners to flash the board using
+the ``--runner`` (or ``-r``) option:
+
+.. code-block:: console
+
+   $ west flash --runner openocd
+   $ west flash --runner pyocd
+
+First, connect the STM32F429II-ACA evaluation board to your host computer using
+your debug probe through the JTAG/SWD connector to prepare it for flashing.
+Then build and flash your application.
+
+Here is an example for the :zephyr:code-sample:`blinky` application.
+
+.. zephyr-app-commands::
+   :zephyr-app: samples/basic/blinky
+   :board: stm32f429ii_aca
+   :goals: build flash
+
+LED0 should then begin to blink continuously with a 1-second delay.
+
+References
+**********
+
+.. target-notes::
+
+.. _stm32f429ii-aca-schematics:
+   https://iar.my.salesforce.com/sfc/p/#30000000YATY/a/Qx000000vZVh/EzlIqYKIBVXN8PN4Q8MgtowSZrR_vZarwLiNJXw7UJw
+
+.. _STM32F429II on www.st.com:
+   https://www.st.com/en/microcontrollers-microprocessors/stm32f429ii.html
+
+.. _STM32F429 Reference Manual:
+   https://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf
diff --git a/boards/iar/stm32f429ii_aca/stm32f429ii_aca.dts b/boards/iar/stm32f429ii_aca/stm32f429ii_aca.dts
new file mode 100644
index 0000000..ff7635b
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/stm32f429ii_aca.dts
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 2017 Linaro Limited
+ * Copyright (c) 2024 STMicroelectronics
+ * Copyright (c) 2025 IAR Systems
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/dts-v1/;
+#include <st/f4/stm32f429Xi.dtsi>
+#include <st/f4/stm32f429iitx-pinctrl.dtsi>
+#include <zephyr/dt-bindings/input/input-event-codes.h>
+
+/ {
+	model = "IAR STM32F429II-ACA board";
+	compatible = "iar,stm32f429ii-aca";
+
+	chosen {
+		zephyr,sram = &sram0;
+		zephyr,flash = &flash0;
+		zephyr,ccm = &ccm0;
+	};
+
+	sdram2: sdram@d0000000 {
+		compatible = "zephyr,memory-region", "mmio-sram";
+		device_type = "memory";
+		reg = <0xd0000000 DT_SIZE_M(8)>;
+		zephyr,memory-region = "SDRAM2";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		traffic_red_led: led_0 {
+			gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
+			label = "LED0";
+		};
+
+		traffic_yellow_led: led_1 {
+			gpios = <&gpiod 4 GPIO_ACTIVE_LOW>;
+			label = "LED1";
+		};
+
+		traffic_green_led: led_2 {
+			gpios = <&gpiod 5 GPIO_ACTIVE_LOW>;
+			label = "LED2";
+		};
+
+		car_led: led_3 {
+			gpios = <&gpiod 6 GPIO_ACTIVE_LOW>;
+			label = "LED3";
+		};
+
+		pedestrian_red_led: led_4 {
+			gpios = <&gpiod 7 GPIO_ACTIVE_LOW>;
+			label = "LED4";
+		};
+
+		pedestrian_green_led: led_5 {
+			gpios = <&gpiod 11 GPIO_ACTIVE_LOW>;
+			label = "LED5";
+		};
+
+		user_led_1: led_6 {
+			gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
+			label = "LED6";
+		};
+
+		user_led_2: led_7 {
+			gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
+			label = "LED7";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+
+		button0: button_0 {
+			label = "BUT0";
+			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_0>;
+		};
+
+		button1: button_1 {
+			label = "BUT1";
+			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_1>;
+		};
+
+		button2: button_2 {
+			label = "BUT2";
+			gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_2>;
+		};
+
+		open_close_switch: switch_0 {
+			label = "OPEN/CLOSE SWITCH";
+			gpios = <&gpioi 11 GPIO_ACTIVE_HIGH>;
+			zephyr,code = <INPUT_KEY_3>;
+		};
+
+		interior_light_switch_on: switch_1 {
+			label = "ON";
+			gpios = <&gpioi 10 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_4>;
+		};
+
+		interior_light_switch_auto: switch_2 {
+			label = "AUTO";
+			gpios = <&gpioi 9 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_5>;
+		};
+
+		interior_light_switch_off: switch_3 {
+			label = "OFF";
+			gpios = <&gpioi 8 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_6>;
+		};
+
+		cap_button0: cap_button_0 {
+			label = "CAP_BUT0";
+			gpios = <&gpioh 6 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_7>;
+		};
+
+		cap_button1: cap_button_1 {
+			label = "CAP_BUT1";
+			gpios = <&gpioh 7 GPIO_ACTIVE_LOW>;
+			zephyr,code = <INPUT_KEY_8>;
+		};
+	};
+
+	aliases {
+		led0 = &traffic_red_led;
+		led1 = &traffic_yellow_led;
+		led2 = &traffic_green_led;
+		led3 = &car_led;
+		led4 = &pedestrian_red_led;
+		led5 = &pedestrian_green_led;
+		led6 = &user_led_1;
+		led7 = &user_led_2;
+		sw0 = &button0;
+		sw1 = &button1;
+		sw2 = &button2;
+		sw3 = &open_close_switch;
+		sw4 = &interior_light_switch_on;
+		sw5 = &interior_light_switch_auto;
+		sw6 = &interior_light_switch_off;
+		sw7 = &cap_button0;
+		sw8 = &cap_button1;
+	};
+};
+
+&clk_lsi {
+	status = "okay";
+};
+
+&clk_hse {
+	clock-frequency = <DT_FREQ_M(8)>;
+	status = "okay";
+};
+
+&pll {
+	div-m = <8>;
+	mul-n = <336>;
+	div-p = <2>;
+	div-q = <7>;
+	clocks = <&clk_hse>;
+	status = "okay";
+};
+
+&rcc {
+	clocks = <&pll>;
+	clock-frequency = <DT_FREQ_M(168)>;
+	ahb-prescaler = <1>;
+	apb1-prescaler = <4>;
+	apb2-prescaler = <2>;
+};
+
+&rtc {
+	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
+		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
+	status = "okay";
+};
+
+&i2c1 {
+	pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb7>;
+	pinctrl-names = "default";
+	status = "okay";
+	clock-frequency = <I2C_BITRATE_FAST>;
+};
+
+&i2c2 {
+	pinctrl-0 = <&i2c2_scl_ph4 &i2c2_sda_ph5>;
+	pinctrl-names = "default";
+	status = "okay";
+	clock-frequency = <I2C_BITRATE_FAST>;
+};
+
+
+&spi5 {
+	pinctrl-0 = <&spi5_nss_pf6 &spi5_sck_pf7
+		     &spi5_miso_pf8 &spi5_mosi_pf9>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&gpioc 2 GPIO_ACTIVE_LOW>;
+};
+
+&fmc {
+	status = "okay";
+	pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1
+		     &fmc_sdclk_pg8 &fmc_sdnwe_pc0 &fmc_sdcke0_pc3
+		     &fmc_sdne0_pc2 &fmc_sdnras_pf11 &fmc_sdncas_pg15
+		     &fmc_a0_pf0 &fmc_a1_pf1 &fmc_a2_pf2 &fmc_a3_pf3
+		     &fmc_a4_pf4 &fmc_a5_pf5 &fmc_a6_pf12 &fmc_a7_pf13
+		     &fmc_a8_pf14 &fmc_a9_pf15 &fmc_a10_pg0 &fmc_a11_pg1
+		     &fmc_a12_pg2 &fmc_a13_pg3 &fmc_a14_pg4 &fmc_a15_pg5
+		     &fmc_d0_pd14 &fmc_d1_pd15 &fmc_d2_pd0 &fmc_d3_pd1
+		     &fmc_d4_pe7 &fmc_d5_pe8 &fmc_d6_pe9 &fmc_d7_pe10
+		     &fmc_d8_pe11 &fmc_d9_pe12 &fmc_d10_pe13 &fmc_d11_pe14
+		     &fmc_d12_pe15 &fmc_d13_pd8 &fmc_d14_pd9 &fmc_d15_pd10>;
+	pinctrl-names = "default";
+
+	sdram {
+		status = "okay";
+
+		power-up-delay = <100>;
+		num-auto-refresh = <1>;
+		mode-register = <0>;
+		refresh-rate = <1386>;
+
+		bank@1 {
+			reg = <1>;
+
+			st,sdram-control = <STM32_FMC_SDRAM_NC_8
+					    STM32_FMC_SDRAM_NR_12
+					    STM32_FMC_SDRAM_MWID_16
+					    STM32_FMC_SDRAM_NB_4
+					    STM32_FMC_SDRAM_CAS_2
+					    STM32_FMC_SDRAM_SDCLK_PERIOD_3
+					    STM32_FMC_SDRAM_RBURST_DISABLE
+					    STM32_FMC_SDRAM_RPIPE_1>;
+			st,sdram-timing = <2 7 4 7 2 2 2>;
+		};
+	};
+};
+
+&adc2 {
+	compatible = "st,stm32f4-adc", "st,stm32-adc";
+	pinctrl-0 = <&adc2_in6_pa6>;
+	pinctrl-names = "default";
+	st,adc-prescaler = <2>;
+	status = "okay";
+
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	channel@6 {
+		reg = <6>;
+		zephyr,gain = "ADC_GAIN_1";
+		zephyr,reference = "ADC_REF_INTERNAL";
+		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
+		zephyr,resolution = <12>;
+	};
+};
+
+&dac1 {
+	pinctrl-0 = <&dac_out2_pa5>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+zephyr_udc0: &usbotg_hs {
+	pinctrl-0 = <&usb_otg_hs_dm_pb14 &usb_otg_hs_dp_pb15 &usb_otg_hs_id_pb12>;
+	pinctrl-names = "default";
+	status = "okay";
+};
diff --git a/boards/iar/stm32f429ii_aca/stm32f429ii_aca.yaml b/boards/iar/stm32f429ii_aca/stm32f429ii_aca.yaml
new file mode 100644
index 0000000..b430c8f
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/stm32f429ii_aca.yaml
@@ -0,0 +1,15 @@
+identifier: stm32f429ii_aca
+name: IAR STM32F429II ACA
+type: mcu
+arch: arm
+toolchain:
+  - zephyr
+  - gnuarmemb
+  - iar
+ram: 192
+flash: 2048
+supported:
+  - counter
+  - i2c
+  - spi
+vendor: iar
diff --git a/boards/iar/stm32f429ii_aca/stm32f429ii_aca_defconfig b/boards/iar/stm32f429ii_aca/stm32f429ii_aca_defconfig
new file mode 100644
index 0000000..75a3154
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/stm32f429ii_aca_defconfig
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: Apache-2.0
+
+# Enable MPU
+CONFIG_ARM_MPU=y
+
+# Enable HW stack protection
+CONFIG_HW_STACK_PROTECTION=y
+
+# Enable GPIO
+CONFIG_GPIO=y
diff --git a/boards/iar/stm32f429ii_aca/support/openocd.cfg b/boards/iar/stm32f429ii_aca/support/openocd.cfg
new file mode 100644
index 0000000..fa1360a
--- /dev/null
+++ b/boards/iar/stm32f429ii_aca/support/openocd.cfg
@@ -0,0 +1,17 @@
+source [find interface/cmsis-dap.cfg]
+
+set CHIPNAME STM32F429IITx
+set BOARDNAME STM32F429II-ACA
+
+source [find target/stm32f4x.cfg]
+
+$_TARGETNAME configure -event gdb-attach {
+	echo "Debugger attaching: halting execution"
+	reset halt
+	gdb_breakpoint_override hard
+}
+
+$_TARGETNAME configure -event gdb-detach {
+	echo "Debugger detaching: resuming execution"
+	resume
+}
diff --git a/dts/bindings/vendor-prefixes.txt b/dts/bindings/vendor-prefixes.txt
index 24ea54b..be40175 100644
--- a/dts/bindings/vendor-prefixes.txt
+++ b/dts/bindings/vendor-prefixes.txt
@@ -303,6 +303,7 @@
 hyundai	Hyundai Technology
 hzgrow	Hangzhou Grow Technology Co., Ltd.
 i2se	I2SE GmbH
+iar	IAR Systems AB
 ibm	International Business Machines (IBM)
 icplus	IC Plus Corp.
 idt	Integrated Device Technologies, Inc.