From 350d5ef2de608acf9acb5d8db9b6ed243559c8e2 Mon Sep 17 00:00:00 2001 From: ckormanyos Date: Fri, 13 Feb 2026 10:22:34 +0100 Subject: [PATCH] Partial port abstraction standard form --- ref_app/ref_app.vcxproj | 8 +++ ref_app/ref_app.vcxproj.filters | 6 +++ .../Mcal => src/mcal/xtensa_esp32_p4}/gpio.c | 14 ++--- .../Mcal => src/mcal/xtensa_esp32_p4}/gpio.h | 36 ++++++------- ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp | 53 +++++-------------- ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h | 5 ++ ref_app/target.vcxproj | 2 - ref_app/target.vcxproj.filters | 9 ---- .../make/xtensa_esp32_p4_files.gmk | 2 +- .../make/xtensa_esp32_p4_flags.gmk | 2 +- 10 files changed, 59 insertions(+), 78 deletions(-) rename ref_app/{target/micros/xtensa_esp32_p4/startup/Code/Mcal => src/mcal/xtensa_esp32_p4}/gpio.c (93%) rename ref_app/{target/micros/xtensa_esp32_p4/startup/Code/Mcal => src/mcal/xtensa_esp32_p4}/gpio.h (58%) 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 \