Skip to content

Commit 350d5ef

Browse files
committed
Partial port abstraction standard form
1 parent cb5bf7f commit 350d5ef

File tree

10 files changed

+59
-78
lines changed

10 files changed

+59
-78
lines changed

ref_app/ref_app.vcxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,6 +1401,10 @@
14011401
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
14021402
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
14031403
</ClCompile>
1404+
<ClCompile Include="src\mcal\xtensa_esp32_p4\gpio.c">
1405+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
1406+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
1407+
</ClCompile>
14041408
<ClCompile Include="src\mcal\xtensa_esp32_p4\mcal_cpu.cpp">
14051409
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
14061410
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@@ -3273,6 +3277,10 @@
32733277
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
32743278
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
32753279
</ClInclude>
3280+
<ClInclude Include="src\mcal\xtensa_esp32_p4\gpio.h">
3281+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
3282+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
3283+
</ClInclude>
32763284
<ClInclude Include="src\mcal\xtensa_esp32_p4\mcal_benchmark.h">
32773285
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
32783286
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>

ref_app/ref_app.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,6 +1402,9 @@
14021402
<ClCompile Include="src\mcal\xtensa_esp32_p4\mcal_cpu.cpp">
14031403
<Filter>src\mcal\xtensa_esp32_p4</Filter>
14041404
</ClCompile>
1405+
<ClCompile Include="src\mcal\xtensa_esp32_p4\gpio.c">
1406+
<Filter>src\mcal\xtensa_esp32_p4</Filter>
1407+
</ClCompile>
14051408
</ItemGroup>
14061409
<ItemGroup>
14071410
<ClInclude Include="src\math\calculus\derivative.h">
@@ -3195,6 +3198,9 @@
31953198
<ClInclude Include="src\mcal\xtensa_esp32_p4\mcal_cpu.h">
31963199
<Filter>src\mcal\xtensa_esp32_p4</Filter>
31973200
</ClInclude>
3201+
<ClInclude Include="src\mcal\xtensa_esp32_p4\gpio.h">
3202+
<Filter>src\mcal\xtensa_esp32_p4</Filter>
3203+
</ClInclude>
31983204
</ItemGroup>
31993205
<ItemGroup>
32003206
<None Include="src\util\STL\algorithm">

ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.c renamed to ref_app/src/mcal/xtensa_esp32_p4/gpio.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626

2727
#include <gpio.h>
2828

29-
#include <stdint.h>
29+
#include <stddef.h>
3030

3131
#define __IM volatile const /*! Defines 'read only' structure member permissions */
3232
#define __OM volatile /*! Defines 'write only' structure member permissions */
3333
#define __IOM volatile /*! Defines 'read / write' structure member permissions */
3434

35-
#define GPIO_BASE 0x500E0000UL
36-
#define LP_IO_MUX_BASE 0x5012B000UL
37-
#define IO_MUX_BASE 0x500E1000UL
35+
constexpr uintptr_t GPIO_BASE = (uintptr_t) 0x500E0000UL;
36+
constexpr uintptr_t LP_IO_MUX_BASE = (uintptr_t) 0x5012B000UL;
37+
constexpr uintptr_t IO_MUX_BASE = (uintptr_t) 0x500E1000UL;
3838

3939
typedef union
4040
{
@@ -105,7 +105,7 @@ LP_IO_MUX_GPIO;
105105
///
106106
/// \return
107107
//-----------------------------------------------------------------------------------------
108-
void gpio_cfg_output(uint8_t pin)
108+
void gpio_cfg_output(const uint8_t pin)
109109
{
110110
if((unsigned) pin > 54u)
111111
{
@@ -145,7 +145,7 @@ void gpio_cfg_output(uint8_t pin)
145145
///
146146
/// \return
147147
//-----------------------------------------------------------------------------------------
148-
void gpio_set_output_level(uint8_t pin, uint8_t level)
148+
void gpio_set_output_level(const uint8_t pin, const uint8_t level)
149149
{
150150
volatile uint32_t* pGPIO_OUT_W1Tx = (volatile uint32_t*)(GPIO_BASE + (((unsigned) pin < 32u) ? 8u : 0x14u) + (((unsigned) level == 1u) ? (0u) : (4u)));
151151

@@ -164,7 +164,7 @@ void gpio_set_output_level(uint8_t pin, uint8_t level)
164164
///
165165
/// \return
166166
//-----------------------------------------------------------------------------------------
167-
void gpio_toggle_output_level(uint8_t pin)
167+
void gpio_toggle_output_level(const uint8_t pin)
168168
{
169169
volatile uint32_t* pGPIO_OUT = (volatile uint32_t*)(GPIO_BASE + 4u + (((unsigned) pin < 32u) ? 0u : 0xCu));
170170

ref_app/target/micros/xtensa_esp32_p4/startup/Code/Mcal/gpio.h renamed to ref_app/src/mcal/xtensa_esp32_p4/gpio.h

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,26 @@
2323
Description : GPIO driver header file
2424
2525
******************************************************************************************/
26-
#ifndef __GPIO_H__
27-
#define __GPIO_H__
28-
//-----------------------------------------------------------------------------------------
29-
// Includes
30-
//-----------------------------------------------------------------------------------------
26+
#ifndef GPIO_2026_02_13_H
27+
#define GPIO_2026_02_13_H
3128

32-
#include <stdio.h>
33-
#include <stdint.h>
29+
#if defined(__cplusplus)
30+
#include <cstdint>
31+
#else
32+
#include <stdint.h>
33+
#endif
3434

35-
#if defined(__cplusplus)
36-
extern "C"
37-
{
38-
#endif
35+
#if defined(__cplusplus)
36+
extern "C"
37+
{
38+
#endif
3939

40-
void gpio_cfg_output(uint8_t pin);
41-
void gpio_set_output_level(uint8_t pin, uint8_t level);
42-
void gpio_toggle_output_level(uint8_t pin);
40+
void gpio_cfg_output(const uint8_t pin);
41+
void gpio_set_output_level(const uint8_t pin, const uint8_t level);
42+
void gpio_toggle_output_level(const uint8_t pin);
4343

44-
#if defined(__cplusplus)
45-
}
46-
#endif
44+
#if defined(__cplusplus)
45+
}
46+
#endif
4747

48-
#endif /*__GPIO_H__*/
48+
#endif // GPIO_2026_02_13_H

ref_app/src/mcal/xtensa_esp32_p4/mcal_led.cpp

Lines changed: 13 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,55 +5,28 @@
55
// or copy at http://www.boost.org/LICENSE_1_0.txt)
66
//
77

8-
#include <gpio.h>
9-
108
#include <mcal_led.h>
119
#include <mcal_led/mcal_led_port.h>
1210
#include <mcal_port.h>
13-
#include <mcal_reg.h>
1411

15-
namespace local
12+
auto mcal::led::led0() -> mcal::led::led_base&
1613
{
17-
class led_port54 : public mcal::led::led_boolean_state_base
18-
{
19-
public:
20-
led_port54() noexcept
21-
{
22-
gpio_cfg_output(54);
23-
}
24-
25-
~led_port54() override = default;
26-
27-
auto toggle() noexcept -> void override
28-
{
29-
using base_class_type = led_boolean_state_base;
14+
using led0_port_type = mcal::port::port_pin<unsigned { UINT8_C(54) }>;
3015

31-
gpio_toggle_output_level(54);
16+
using led0_led_type = mcal::led::led_port<led0_port_type>;
3217

33-
base_class_type::toggle();
34-
}
35-
};
18+
static led0_led_type l0;
3619

37-
class led_port19 : public mcal::led::led_boolean_state_base
38-
{
39-
public:
40-
led_port19() noexcept
41-
{
42-
gpio_cfg_output(19);
43-
}
20+
return l0;
21+
}
4422

45-
~led_port19() override = default;
46-
47-
auto toggle() noexcept -> void override
48-
{
49-
using base_class_type = led_boolean_state_base;
23+
auto mcal::led::led1() -> mcal::led::led_base&
24+
{
25+
using led1_port_type = mcal::port::port_pin<unsigned { UINT8_C(19) }>;
5026

51-
gpio_toggle_output_level(19);
27+
using led1_led_type = mcal::led::led_port<led1_port_type>;
5228

53-
base_class_type::toggle();
54-
}
55-
};
56-
} // namespace local
29+
static led1_led_type l1;
5730

58-
auto mcal::led::led0() -> mcal::led::led_base& { static local::led_port54 my_led { }; return my_led; }
59-
auto mcal::led::led1() -> mcal::led::led_base& { static local::led_port19 my_led { }; return my_led; }
31+
return l1;
32+
}

ref_app/src/mcal/xtensa_esp32_p4/mcal_port.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#ifndef MCAL_PORT_2025_02_22_H
99
#define MCAL_PORT_2025_02_22_H
1010

11+
#include <gpio.h>
1112
#include <mcal_reg.h>
1213

1314
#include <cstdint>
@@ -26,6 +27,7 @@
2627
public:
2728
static auto set_direction_output() -> void
2829
{
30+
::gpio_cfg_output(static_cast<std::uint8_t>(PortIndex));
2931
}
3032

3133
static auto set_direction_input() -> void
@@ -34,10 +36,12 @@
3436

3537
static auto set_pin_high() -> void
3638
{
39+
::gpio_set_output_level(static_cast<std::uint8_t>(PortIndex), std::uint8_t { UINT8_C(1) });
3740
}
3841

3942
static auto set_pin_low() -> void
4043
{
44+
::gpio_set_output_level(static_cast<std::uint8_t>(PortIndex), std::uint8_t { UINT8_C(0) });
4145
}
4246

4347
static auto read_input_value() -> bool
@@ -47,6 +51,7 @@
4751

4852
static auto toggle_pin() -> void
4953
{
54+
::gpio_toggle_output_level(static_cast<std::uint8_t>(PortIndex));
5055
}
5156
};
5257
}

ref_app/target.vcxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,7 +1285,6 @@
12851285
<ClCompile Include="target\micros\xtensa32\startup\esp_stubs.cpp" />
12861286
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main.c" />
12871287
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main_cores.cpp" />
1288-
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.c" />
12891288
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\intvect.c" />
12901289
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\Startup.c" />
12911290
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\crt0.cpp" />
@@ -1304,7 +1303,6 @@
13041303
<ItemGroup>
13051304
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\core_macros.h" />
13061305
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\gic-500.h" />
1307-
<ClInclude Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.h" />
13081306
<ClInclude Include="target\micros\xtensa_esp32_s3\startup\Std\core-isa.h" />
13091307
</ItemGroup>
13101308
<ItemGroup>

ref_app/target.vcxproj.filters

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,6 @@
355355
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Appli">
356356
<UniqueIdentifier>{a4e34517-143d-491c-925b-5d3e7d7bd195}</UniqueIdentifier>
357357
</Filter>
358-
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Mcal">
359-
<UniqueIdentifier>{98fa75e2-bb60-4a37-9e72-f609821f0859}</UniqueIdentifier>
360-
</Filter>
361358
<Filter Include="micros\xtensa_esp32_p4\startup\Code\Startup">
362359
<UniqueIdentifier>{17889d6f-9174-40cb-bcad-01e3995207e5}</UniqueIdentifier>
363360
</Filter>
@@ -1169,9 +1166,6 @@
11691166
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Appli\main.c">
11701167
<Filter>micros\xtensa_esp32_p4\startup\Code\Appli</Filter>
11711168
</ClCompile>
1172-
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.c">
1173-
<Filter>micros\xtensa_esp32_p4\startup\Code\Mcal</Filter>
1174-
</ClCompile>
11751169
<ClCompile Include="target\micros\xtensa_esp32_p4\startup\Code\Startup\intvect.c">
11761170
<Filter>micros\xtensa_esp32_p4\startup\Code\Startup</Filter>
11771171
</ClCompile>
@@ -1200,9 +1194,6 @@
12001194
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\gic-500.h">
12011195
<Filter>micros\am6254_soc\Code\Startup\Core\a53</Filter>
12021196
</ClInclude>
1203-
<ClInclude Include="target\micros\xtensa_esp32_p4\startup\Code\Mcal\gpio.h">
1204-
<Filter>micros\xtensa_esp32_p4\startup\Code\Mcal</Filter>
1205-
</ClInclude>
12061197
</ItemGroup>
12071198
<ItemGroup>
12081199
<Library Include="target\micros\xtensa_esp32_s3\startup\Std\lib_call0_abi\libc_call0_abi.a">

ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_files.gmk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
# ------------------------------------------------------------------------------
1111

1212
FILES_TGT := $(PATH_APP)/mcal/mcal_gcc_cxx_completion \
13+
$(PATH_APP)/mcal/$(TGT)/gpio \
1314
$(PATH_TGT)/startup/Code/Appli/main \
1415
$(PATH_TGT)/startup/Code/Appli/main_cores \
15-
$(PATH_TGT)/startup/Code/Mcal/gpio \
1616
$(PATH_TGT)/startup/Code/Startup/boot \
1717
$(PATH_TGT)/startup/Code/Startup/intvect \
1818
$(PATH_TGT)/startup/Code/Startup/Startup

ref_app/target/micros/xtensa_esp32_p4/make/xtensa_esp32_p4_flags.gmk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ TGT_ALLFLAGS = -O2
2727
-fno-reorder-functions \
2828
-DHP_CORES_SMP_MODE
2929

30-
TGT_CFLAGS = -std=c11 \
30+
TGT_CFLAGS = -std=c23 \
3131
$(TGT_ALLFLAGS)
3232

3333
TGT_CXXFLAGS = -std=c++23 \

0 commit comments

Comments
 (0)