Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ref_app/ref_app.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1401,6 +1401,10 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="src\mcal\xtensa_esp32_p4\gpio.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="src\mcal\xtensa_esp32_p4\mcal_cpu.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
Expand Down Expand Up @@ -3273,6 +3277,10 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="src\mcal\xtensa_esp32_p4\gpio.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="src\mcal\xtensa_esp32_p4\mcal_benchmark.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
Expand Down
6 changes: 6 additions & 0 deletions ref_app/ref_app.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -1402,6 +1402,9 @@
<ClCompile Include="src\mcal\xtensa_esp32_p4\mcal_cpu.cpp">
<Filter>src\mcal\xtensa_esp32_p4</Filter>
</ClCompile>
<ClCompile Include="src\mcal\xtensa_esp32_p4\gpio.c">
<Filter>src\mcal\xtensa_esp32_p4</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\math\calculus\derivative.h">
Expand Down Expand Up @@ -3195,6 +3198,9 @@
<ClInclude Include="src\mcal\xtensa_esp32_p4\mcal_cpu.h">
<Filter>src\mcal\xtensa_esp32_p4</Filter>
</ClInclude>
<ClInclude Include="src\mcal\xtensa_esp32_p4\gpio.h">
<Filter>src\mcal\xtensa_esp32_p4</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="src\util\STL\algorithm">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@

#include <gpio.h>

#include <stdint.h>
#include <stddef.h>

#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
{
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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)));

Expand All @@ -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));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <stdio.h>
#include <stdint.h>
#if defined(__cplusplus)
#include <cstdint>
#else
#include <stdint.h>
#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
53 changes: 13 additions & 40 deletions ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,55 +5,28 @@
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

#include <gpio.h>

#include <mcal_led.h>
#include <mcal_led/mcal_led_port.h>
#include <mcal_port.h>
#include <mcal_reg.h>

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<unsigned { UINT8_C(54) }>;

gpio_toggle_output_level(54);
using led0_led_type = mcal::led::led_port<led0_port_type>;

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<unsigned { UINT8_C(19) }>;

gpio_toggle_output_level(19);
using led1_led_type = mcal::led::led_port<led1_port_type>;

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;
}
5 changes: 5 additions & 0 deletions ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#ifndef MCAL_PORT_2025_02_22_H
#define MCAL_PORT_2025_02_22_H

#include <gpio.h>
#include <mcal_reg.h>

#include <cstdint>
Expand All @@ -26,6 +27,7 @@
public:
static auto set_direction_output() -> void
{
::gpio_cfg_output(static_cast<std::uint8_t>(PortIndex));
}

static auto set_direction_input() -> void
Expand All @@ -34,10 +36,12 @@

static auto set_pin_high() -> void
{
::gpio_set_output_level(static_cast<std::uint8_t>(PortIndex), std::uint8_t { UINT8_C(1) });
}

static auto set_pin_low() -> void
{
::gpio_set_output_level(static_cast<std::uint8_t>(PortIndex), std::uint8_t { UINT8_C(0) });
}

static auto read_input_value() -> bool
Expand All @@ -47,6 +51,7 @@

static auto toggle_pin() -> void
{
::gpio_toggle_output_level(static_cast<std::uint8_t>(PortIndex));
}
};
}
Expand Down
2 changes: 0 additions & 2 deletions ref_app/target.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1285,7 +1285,6 @@
<ClCompile Include="target\micros\xtensa32\startup\esp_stubs.cpp" />
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main.c" />
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main_cores.cpp" />
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.c" />
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\intvect.c" />
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\Startup.c" />
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\crt0.cpp" />
Expand All @@ -1304,7 +1303,6 @@
<ItemGroup>
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\core_macros.h" />
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\gic-500.h" />
<ClInclude Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.h" />
<ClInclude Include="target\micros\xtensa_esp32_s3\startup\Std\core-isa.h" />
</ItemGroup>
<ItemGroup>
Expand Down
9 changes: 0 additions & 9 deletions ref_app/target.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -355,9 +355,6 @@
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Appli">
<UniqueIdentifier>{a4e34517-143d-491c-925b-5d3e7d7bd195}</UniqueIdentifier>
</Filter>
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Mcal">
<UniqueIdentifier>{98fa75e2-bb60-4a37-9e72-f609821f0859}</UniqueIdentifier>
</Filter>
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Startup">
<UniqueIdentifier>{17889d6f-9174-40cb-bcad-01e3995207e5}</UniqueIdentifier>
</Filter>
Expand Down Expand Up @@ -1169,9 +1166,6 @@
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main.c">
<Filter>micros\xtensa_esp32_p4\startup\Code\Appli</Filter>
</ClCompile>
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.c">
<Filter>micros\xtensa_esp32_p4\startup\Code\Mcal</Filter>
</ClCompile>
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\intvect.c">
<Filter>micros\xtensa_esp32_p4\startup\Code\Startup</Filter>
</ClCompile>
Expand Down Expand Up @@ -1200,9 +1194,6 @@
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\gic-500.h">
<Filter>micros\am6254_soc\Code\Startup\Core\a53</Filter>
</ClInclude>
<ClInclude Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.h">
<Filter>micros\xtensa_esp32_p4\startup\Code\Mcal</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Library Include="target\micros\xtensa_esp32_s3\startup\Std\lib_call0_abi\libc_call0_abi.a">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
Loading