Skip to content

Commit 04acda9

Browse files
authored
Merge pull request #662 from ckormanyos/am6254_use_gpio
Am6254 use gpio
2 parents fdaa2c5 + 23f2dae commit 04acda9

12 files changed

Lines changed: 256 additions & 160 deletions

File tree

ref_app/ref_app.vcxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,10 @@
261261
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
262262
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
263263
</ClCompile>
264+
<ClCompile Include="src\mcal\am6254_soc\mcal_cpu_secure.s">
265+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
266+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
267+
</ClCompile>
264268
<ClCompile Include="src\mcal\am6254_soc\mcal_gpt.cpp">
265269
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
266270
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@@ -1512,10 +1516,6 @@
15121516
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
15131517
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
15141518
</ClInclude>
1515-
<ClInclude Include="src\mcal\am6254_soc\mcal_led_am6254_soc.h">
1516-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
1517-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
1518-
</ClInclude>
15191519
<ClInclude Include="src\mcal\am6254_soc\mcal_memory_progmem.h">
15201520
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
15211521
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@@ -1528,6 +1528,10 @@
15281528
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
15291529
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
15301530
</ClInclude>
1531+
<ClInclude Include="src\mcal\am6254_soc\mcal_reg.h">
1532+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
1533+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
1534+
</ClInclude>
15311535
<ClInclude Include="src\mcal\am6254_soc\mcal_ser.h">
15321536
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
15331537
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>

ref_app/ref_app.vcxproj.filters

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,9 @@
12761276
<ClCompile Include="src\mcal\am6254_soc\mcal_led.cpp">
12771277
<Filter>src\mcal\am6254_soc</Filter>
12781278
</ClCompile>
1279+
<ClCompile Include="src\mcal\am6254_soc\mcal_cpu_secure.s">
1280+
<Filter>src\mcal\am6254_soc</Filter>
1281+
</ClCompile>
12791282
</ItemGroup>
12801283
<ItemGroup>
12811284
<ClInclude Include="src\math\calculus\derivative.h">
@@ -2892,9 +2895,6 @@
28922895
<ClInclude Include="src\mcal\am6254_soc\mcal_led.h">
28932896
<Filter>src\mcal\am6254_soc</Filter>
28942897
</ClInclude>
2895-
<ClInclude Include="src\mcal\am6254_soc\mcal_led_am6254_soc.h">
2896-
<Filter>src\mcal\am6254_soc</Filter>
2897-
</ClInclude>
28982898
<ClInclude Include="src\mcal\am6254_soc\mcal_spi.h">
28992899
<Filter>src\mcal\am6254_soc</Filter>
29002900
</ClInclude>
@@ -2919,6 +2919,9 @@
29192919
<ClInclude Include="src\mcal\am6254_soc\mcal_memory_progmem.h">
29202920
<Filter>src\mcal\am6254_soc</Filter>
29212921
</ClInclude>
2922+
<ClInclude Include="src\mcal\am6254_soc\mcal_reg.h">
2923+
<Filter>src\mcal\am6254_soc</Filter>
2924+
</ClInclude>
29222925
</ItemGroup>
29232926
<ItemGroup>
29242927
<None Include="src\util\STL\algorithm">

ref_app/src/mcal/am6254_soc/mcal_benchmark.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
#ifndef MCAL_BENCHMARK_2014_04_16_H
99
#define MCAL_BENCHMARK_2014_04_16_H
1010

11-
#include <cstdint>
1211
#include <mcal_port.h>
12+
#include <mcal_reg.h>
13+
14+
#include <cstdint>
1315

1416
namespace mcal
1517
{
1618
namespace benchmark
1719
{
18-
typedef mcal::port::port_pin<2U> benchmark_port_type;
20+
typedef mcal::port::port_pin<mcal::reg::gpio0, 2U> benchmark_port_type;
1921
}
2022
}
2123

ref_app/src/mcal/am6254_soc/mcal_cpu.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010

1111
#include <cstdint>
1212

13+
extern "C" auto hw_acquire_spin_lock(volatile std::uint32_t*) noexcept -> void;
14+
extern "C" auto hw_release_spin_lock(volatile std::uint32_t*) noexcept -> void;
15+
1316
namespace mcal
1417
{
1518
namespace cpu
@@ -19,6 +22,9 @@
1922
inline auto post_init() -> void { }
2023

2124
inline auto nop() noexcept -> void { asm volatile("nop"); }
25+
26+
inline auto acquire_spin_lock(volatile std::uint32_t* p_sync) noexcept -> void { hw_acquire_spin_lock(p_sync); }
27+
inline auto release_spin_lock(volatile std::uint32_t* p_sync) noexcept -> void { hw_release_spin_lock(p_sync); }
2228
}
2329
}
2430

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// Originally from:
9+
10+
// ***************************************************************************************
11+
// Filename : boot.s
12+
//
13+
// Core : ARM Cortex-A53
14+
//
15+
// Author : Chalandi Amine
16+
//
17+
// Owner : Chalandi Amine
18+
//
19+
// Date : 16.05.2025
20+
//
21+
// Description : multicore ARM Cortex-A53 (ARMv8-A) startup code
22+
//
23+
// ***************************************************************************************
24+
25+
.section .text
26+
.type hw_acquire_spin_lock,@function
27+
.align 3
28+
.globl hw_acquire_spin_lock
29+
30+
hw_acquire_spin_lock:
31+
mov w1, #1
32+
.L_loop:
33+
ldaxr w2, [x0]
34+
cbnz w2, .L_loop
35+
stxr w2, w1, [x0]
36+
cbnz w2, .L_loop
37+
dmb ish
38+
ret
39+
40+
.section .text
41+
.type hw_release_spin_lock,@function
42+
.align 3
43+
.globl hw_release_spin_lock
44+
45+
hw_release_spin_lock:
46+
dmb ish
47+
stlr wzr, [x0]
48+
ret

ref_app/src/mcal/am6254_soc/mcal_led.cpp

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,50 @@
66
//
77

88
#include <mcal_led.h>
9-
#include <mcal_led_am6254_soc.h>
9+
#include <mcal_led/mcal_led_port.h>
10+
#include <mcal_port.h>
11+
#include <mcal_reg.h>
1012

1113
auto mcal::led::led0() -> mcal::led::led_base&
1214
{
13-
using led0_led_type = led_am6254_soc<LED_1>;
15+
using local_led_port_type = mcal::port::port_pin<mcal::reg::gpio0, mcal::led::LED_ID_1>;
1416

15-
static led0_led_type l0;
17+
using local_led_type = led_port<local_led_port_type>;
1618

17-
return l0;
19+
static local_led_type led_instance;
20+
21+
return led_instance;
22+
}
23+
24+
auto mcal::led::led1() -> mcal::led::led_base&
25+
{
26+
using local_led_port_type = mcal::port::port_pin<mcal::reg::gpio0, mcal::led::LED_ID_2>;
27+
28+
using local_led_type = led_port<local_led_port_type>;
29+
30+
static local_led_type led_instance;
31+
32+
return led_instance;
33+
}
34+
35+
auto mcal::led::led2() -> mcal::led::led_base&
36+
{
37+
using local_led_port_type = mcal::port::port_pin<mcal::reg::gpio0, mcal::led::LED_ID_3>;
38+
39+
using local_led_type = led_port<local_led_port_type>;
40+
41+
static local_led_type led_instance;
42+
43+
return led_instance;
44+
}
45+
46+
auto mcal::led::led3() -> mcal::led::led_base&
47+
{
48+
using local_led_port_type = mcal::port::port_pin<mcal::reg::gpio0, mcal::led::LED_ID_4>;
49+
50+
using local_led_type = led_port<local_led_port_type>;
51+
52+
static local_led_type led_instance;
53+
54+
return led_instance;
1855
}

ref_app/src/mcal/am6254_soc/mcal_led.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,21 @@
1010

1111
#include <mcal_led/mcal_led_base.h>
1212

13+
#include <cstdint>
14+
1315
namespace mcal
1416
{
1517
namespace led
1618
{
19+
constexpr unsigned LED_ID_1 { UINT8_C(6) };
20+
constexpr unsigned LED_ID_2 { UINT8_C(5) };
21+
constexpr unsigned LED_ID_3 { UINT8_C(4) };
22+
constexpr unsigned LED_ID_4 { UINT8_C(3) };
23+
1724
auto led0() -> led_base&;
25+
auto led1() -> led_base&;
26+
auto led2() -> led_base&;
27+
auto led3() -> led_base&;
1828
}
1929
}
2030

ref_app/src/mcal/am6254_soc/mcal_led_am6254_soc.h

Lines changed: 0 additions & 132 deletions
This file was deleted.

0 commit comments

Comments
 (0)