diff --git a/ref_app/ref_app.vcxproj b/ref_app/ref_app.vcxproj
index 9faabde92..ec9eb4389 100644
--- a/ref_app/ref_app.vcxproj
+++ b/ref_app/ref_app.vcxproj
@@ -1401,6 +1401,10 @@
true
true
+
+ true
+ true
+
true
true
@@ -3273,6 +3277,10 @@
true
true
+
+ true
+ true
+
true
true
diff --git a/ref_app/ref_app.vcxproj.filters b/ref_app/ref_app.vcxproj.filters
index 3c8d1f3da..4a621cec8 100644
--- a/ref_app/ref_app.vcxproj.filters
+++ b/ref_app/ref_app.vcxproj.filters
@@ -1402,6 +1402,9 @@
src\mcal\xtensa_esp32_p4
+
+ src\mcal\xtensa_esp32_p4
+
@@ -3195,6 +3198,9 @@
src\mcal\xtensa_esp32_p4
+
+ src\mcal\xtensa_esp32_p4
+
diff --git a/ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.c b/ref_app/src/mcal/xtensa_esp32_p4/gpio.c
similarity index 93%
rename from ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.c
rename to ref_app/src/mcal/xtensa_esp32_p4/gpio.c
index 56076fd3c..3e2660f9b 100644
--- a/ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.c
+++ b/ref_app/src/mcal/xtensa_esp32_p4/gpio.c
@@ -26,15 +26,15 @@
#include
-#include
+#include
#define __IM volatile const /*! Defines 'read only' structure member permissions */
#define __OM volatile /*! Defines 'write only' structure member permissions */
#define __IOM volatile /*! Defines 'read / write' structure member permissions */
-#define GPIO_BASE 0x500E0000UL
-#define LP_IO_MUX_BASE 0x5012B000UL
-#define IO_MUX_BASE 0x500E1000UL
+constexpr uintptr_t GPIO_BASE = (uintptr_t) 0x500E0000UL;
+constexpr uintptr_t LP_IO_MUX_BASE = (uintptr_t) 0x5012B000UL;
+constexpr uintptr_t IO_MUX_BASE = (uintptr_t) 0x500E1000UL;
typedef union
{
@@ -105,7 +105,7 @@ LP_IO_MUX_GPIO;
///
/// \return
//-----------------------------------------------------------------------------------------
-void gpio_cfg_output(uint8_t pin)
+void gpio_cfg_output(const uint8_t pin)
{
if((unsigned) pin > 54u)
{
@@ -145,7 +145,7 @@ void gpio_cfg_output(uint8_t pin)
///
/// \return
//-----------------------------------------------------------------------------------------
-void gpio_set_output_level(uint8_t pin, uint8_t level)
+void gpio_set_output_level(const uint8_t pin, const uint8_t level)
{
volatile uint32_t* pGPIO_OUT_W1Tx = (volatile uint32_t*)(GPIO_BASE + (((unsigned) pin < 32u) ? 8u : 0x14u) + (((unsigned) level == 1u) ? (0u) : (4u)));
@@ -164,7 +164,7 @@ void gpio_set_output_level(uint8_t pin, uint8_t level)
///
/// \return
//-----------------------------------------------------------------------------------------
-void gpio_toggle_output_level(uint8_t pin)
+void gpio_toggle_output_level(const uint8_t pin)
{
volatile uint32_t* pGPIO_OUT = (volatile uint32_t*)(GPIO_BASE + 4u + (((unsigned) pin < 32u) ? 0u : 0xCu));
diff --git a/ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.h b/ref_app/src/mcal/xtensa_esp32_p4/gpio.h
similarity index 58%
rename from ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.h
rename to ref_app/src/mcal/xtensa_esp32_p4/gpio.h
index 34a6d0343..57012ad9f 100644
--- a/ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.h
+++ b/ref_app/src/mcal/xtensa_esp32_p4/gpio.h
@@ -23,26 +23,26 @@
Description : GPIO driver header file
******************************************************************************************/
-#ifndef __GPIO_H__
-#define __GPIO_H__
-//-----------------------------------------------------------------------------------------
-// Includes
-//-----------------------------------------------------------------------------------------
+#ifndef GPIO_2026_02_13_H
+ #define GPIO_2026_02_13_H
-#include
-#include
+ #if defined(__cplusplus)
+ #include
+ #else
+ #include
+ #endif
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
+ #if defined(__cplusplus)
+ extern "C"
+ {
+ #endif
-void gpio_cfg_output(uint8_t pin);
-void gpio_set_output_level(uint8_t pin, uint8_t level);
-void gpio_toggle_output_level(uint8_t pin);
+ void gpio_cfg_output(const uint8_t pin);
+ void gpio_set_output_level(const uint8_t pin, const uint8_t level);
+ void gpio_toggle_output_level(const uint8_t pin);
-#if defined(__cplusplus)
-}
-#endif
+ #if defined(__cplusplus)
+ }
+ #endif
-#endif /*__GPIO_H__*/
+#endif // GPIO_2026_02_13_H
diff --git a/ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp b/ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp
index c2c8d6ee3..2f702bf33 100644
--- a/ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp
+++ b/ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp
@@ -5,55 +5,28 @@
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//
-#include
-
#include
#include
#include
-#include
-namespace local
+auto mcal::led::led0() -> mcal::led::led_base&
{
- class led_port54 : public mcal::led::led_boolean_state_base
- {
- public:
- led_port54() noexcept
- {
- gpio_cfg_output(54);
- }
-
- ~led_port54() override = default;
-
- auto toggle() noexcept -> void override
- {
- using base_class_type = led_boolean_state_base;
+ using led0_port_type = mcal::port::port_pin;
- gpio_toggle_output_level(54);
+ using led0_led_type = mcal::led::led_port;
- base_class_type::toggle();
- }
- };
+ static led0_led_type l0;
- class led_port19 : public mcal::led::led_boolean_state_base
- {
- public:
- led_port19() noexcept
- {
- gpio_cfg_output(19);
- }
+ return l0;
+}
- ~led_port19() override = default;
-
- auto toggle() noexcept -> void override
- {
- using base_class_type = led_boolean_state_base;
+auto mcal::led::led1() -> mcal::led::led_base&
+{
+ using led1_port_type = mcal::port::port_pin;
- gpio_toggle_output_level(19);
+ using led1_led_type = mcal::led::led_port;
- base_class_type::toggle();
- }
- };
-} // namespace local
+ static led1_led_type l1;
-auto mcal::led::led0() -> mcal::led::led_base& { static local::led_port54 my_led { }; return my_led; }
-auto mcal::led::led1() -> mcal::led::led_base& { static local::led_port19 my_led { }; return my_led; }
+ return l1;
+}
diff --git a/ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h b/ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h
index 923546a35..a6975fb25 100644
--- a/ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h
+++ b/ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h
@@ -8,6 +8,7 @@
#ifndef MCAL_PORT_2025_02_22_H
#define MCAL_PORT_2025_02_22_H
+ #include
#include
#include
@@ -26,6 +27,7 @@
public:
static auto set_direction_output() -> void
{
+ ::gpio_cfg_output(static_cast(PortIndex));
}
static auto set_direction_input() -> void
@@ -34,10 +36,12 @@
static auto set_pin_high() -> void
{
+ ::gpio_set_output_level(static_cast(PortIndex), std::uint8_t { UINT8_C(1) });
}
static auto set_pin_low() -> void
{
+ ::gpio_set_output_level(static_cast(PortIndex), std::uint8_t { UINT8_C(0) });
}
static auto read_input_value() -> bool
@@ -47,6 +51,7 @@
static auto toggle_pin() -> void
{
+ ::gpio_toggle_output_level(static_cast(PortIndex));
}
};
}
diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj
index 5e39c477e..a5db7249b 100644
--- a/ref_app/target.vcxproj
+++ b/ref_app/target.vcxproj
@@ -1285,7 +1285,6 @@
-
@@ -1304,7 +1303,6 @@
-
diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters
index 6f2821d34..a7292ae56 100644
--- a/ref_app/target.vcxproj.filters
+++ b/ref_app/target.vcxproj.filters
@@ -355,9 +355,6 @@
{a4e34517-143d-491c-925b-5d3e7d7bd195}
-
- {98fa75e2-bb60-4a37-9e72-f609821f0859}
-
{17889d6f-9174-40cb-bcad-01e3995207e5}
@@ -1169,9 +1166,6 @@
micros\xtensa_esp32_p4\startup\Code\Appli
-
- micros\xtensa_esp32_p4\startup\Code\Mcal
-
micros\xtensa_esp32_p4\startup\Code\Startup
@@ -1200,9 +1194,6 @@
micros\am6254_soc\Code\Startup\Core\a53
-
- micros\xtensa_esp32_p4\startup\Code\Mcal
-
diff --git a/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_files.gmk b/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_files.gmk
index d32bfc510..24ef54f1a 100644
--- a/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_files.gmk
+++ b/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_files.gmk
@@ -10,9 +10,9 @@
# ------------------------------------------------------------------------------
FILES_TGT := $(PATH_APP)/mcal/mcal_gcc_cxx_completion \
+ $(PATH_APP)/mcal/$(TGT)/gpio \
$(PATH_TGT)/startup/Code/Appli/main \
$(PATH_TGT)/startup/Code/Appli/main_cores \
- $(PATH_TGT)/startup/Code/Mcal/gpio \
$(PATH_TGT)/startup/Code/Startup/boot \
$(PATH_TGT)/startup/Code/Startup/intvect \
$(PATH_TGT)/startup/Code/Startup/Startup
diff --git a/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_flags.gmk b/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_flags.gmk
index 3d828a72a..3d7d4d99a 100644
--- a/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_flags.gmk
+++ b/ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_flags.gmk
@@ -27,7 +27,7 @@ TGT_ALLFLAGS = -O2
-fno-reorder-functions \
-DHP_CORES_SMP_MODE
-TGT_CFLAGS = -std=c11 \
+TGT_CFLAGS = -std=c23 \
$(TGT_ALLFLAGS)
TGT_CXXFLAGS = -std=c++23 \