Skip to content

Commit adb17c3

Browse files
committed
First steps to standard ref_app form
1 parent e80038c commit adb17c3

14 files changed

Lines changed: 190 additions & 49 deletions

File tree

ref_app/target.vcxproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,10 +1010,10 @@
10101010
<None Include="target\micros\bcm2835_raspi_b\startup\SD_CARD\PiZero\bootcode.bin" />
10111011
<None Include="target\micros\bcm2835_raspi_b\startup\SD_CARD\PiZero\kernel.img" />
10121012
<None Include="target\micros\bcm2835_raspi_b\startup\SD_CARD\PiZero\start.elf" />
1013-
<None Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\boot.s" />
10141013
<None Include="target\micros\bl602_sifive_e24_riscv\make\bl602_sifive_e24_riscv.ld" />
10151014
<None Include="target\micros\bl602_sifive_e24_riscv\make\bl602_sifive_e24_riscv_files.gmk" />
10161015
<None Include="target\micros\bl602_sifive_e24_riscv\make\bl602_sifive_e24_riscv_flags.gmk" />
1016+
<None Include="target\micros\bl602_sifive_e24_riscv\startup\boot.s" />
10171017
<None Include="target\micros\lpc11c24\make\lpc11c24.ld" />
10181018
<None Include="target\micros\lpc11c24\make\lpc11c24_files.gmk" />
10191019
<None Include="target\micros\lpc11c24\make\lpc11c24_flags.gmk" />
@@ -1132,9 +1132,11 @@
11321132
<ClCompile Include="target\micros\bcm2835_raspi_b\startup\crt0_init_ram.cpp" />
11331133
<ClCompile Include="target\micros\bcm2835_raspi_b\startup\crt1.cpp" />
11341134
<ClCompile Include="Target\Micros\AVR\Startup\int_vect.cpp" />
1135+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\led.cpp" />
11351136
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\main.c" />
1136-
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\intvect.c" />
1137-
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\Startup.c" />
1137+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_gpt.cpp" />
1138+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\startup\intvect.c" />
1139+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\startup\Startup.c" />
11381140
<ClCompile Include="target\micros\lpc11c24\startup\crt0.cpp" />
11391141
<ClCompile Include="target\micros\lpc11c24\startup\crt0_init_ram.cpp" />
11401142
<ClCompile Include="target\micros\lpc11c24\startup\crt1.cpp" />
@@ -1229,11 +1231,12 @@
12291231
<ItemGroup>
12301232
<Text Include="target\micros\am6254_soc\Code\SBL\config.txt" />
12311233
<Text Include="target\micros\bcm2835_raspi_b\startup\SD_CARD\PiZero\config.txt" />
1232-
<Text Include="target\micros\bl602_sifive_e24_riscv\startup\startup.txt" />
12331234
</ItemGroup>
12341235
<ItemGroup>
12351236
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\core_macros.h" />
12361237
<ClInclude Include="target\micros\am6254_soc\Code\Startup\Core\a53\gic-500.h" />
1238+
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_gpt.h" />
1239+
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_wdg.h" />
12371240
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Mcal\BL602.h" />
12381241
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Mcal\riscv-csr.h" />
12391242
<ClInclude Include="target\micros\xtensa_esp32_s3\startup\Std\core-isa.h" />

ref_app/target.vcxproj.filters

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,6 @@
340340
<Filter Include="micros\bl602_sifive_e24_riscv\Code\Mcal">
341341
<UniqueIdentifier>{75fda3d9-17eb-48a8-92e8-9c440411a545}</UniqueIdentifier>
342342
</Filter>
343-
<Filter Include="micros\bl602_sifive_e24_riscv\Code\Startup">
344-
<UniqueIdentifier>{c701b4a4-37c5-4b88-94d1-2cee1a0a588c}</UniqueIdentifier>
345-
</Filter>
346343
</ItemGroup>
347344
<ItemGroup>
348345
<None Include="target\app\make\app_files.gmk">
@@ -771,8 +768,8 @@
771768
<None Include="target\micros\bl602_sifive_e24_riscv\make\bl602_sifive_e24_riscv_files.gmk">
772769
<Filter>micros\bl602_sifive_e24_riscv\make</Filter>
773770
</None>
774-
<None Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\boot.s">
775-
<Filter>micros\bl602_sifive_e24_riscv\Code\Startup</Filter>
771+
<None Include="target\micros\bl602_sifive_e24_riscv\startup\boot.s">
772+
<Filter>micros\bl602_sifive_e24_riscv\startup</Filter>
776773
</None>
777774
</ItemGroup>
778775
<ItemGroup>
@@ -1103,13 +1100,19 @@
11031100
<ClCompile Include="target\micros\am6254_soc\Code\Appli\Core\a53\main_cores.cpp">
11041101
<Filter>micros\am6254_soc\Code\Appli\Core\a53</Filter>
11051102
</ClCompile>
1106-
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\intvect.c">
1107-
<Filter>micros\bl602_sifive_e24_riscv\Code\Startup</Filter>
1103+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\main.c">
1104+
<Filter>micros\bl602_sifive_e24_riscv\Code\Appli</Filter>
1105+
</ClCompile>
1106+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\startup\intvect.c">
1107+
<Filter>micros\bl602_sifive_e24_riscv\startup</Filter>
11081108
</ClCompile>
1109-
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Startup\Startup.c">
1110-
<Filter>micros\bl602_sifive_e24_riscv\Code\Startup</Filter>
1109+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\startup\Startup.c">
1110+
<Filter>micros\bl602_sifive_e24_riscv\startup</Filter>
11111111
</ClCompile>
1112-
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\main.c">
1112+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\led.cpp">
1113+
<Filter>micros\bl602_sifive_e24_riscv\Code\Appli</Filter>
1114+
</ClCompile>
1115+
<ClCompile Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_gpt.cpp">
11131116
<Filter>micros\bl602_sifive_e24_riscv\Code\Appli</Filter>
11141117
</ClCompile>
11151118
</ItemGroup>
@@ -1120,9 +1123,6 @@
11201123
<Text Include="target\micros\am6254_soc\Code\SBL\config.txt">
11211124
<Filter>micros\am6254_soc\Code\SBL</Filter>
11221125
</Text>
1123-
<Text Include="target\micros\bl602_sifive_e24_riscv\startup\startup.txt">
1124-
<Filter>micros\bl602_sifive_e24_riscv\startup</Filter>
1125-
</Text>
11261126
</ItemGroup>
11271127
<ItemGroup>
11281128
<ClInclude Include="target\micros\xtensa_esp32_s3\startup\Std\core-isa.h">
@@ -1140,6 +1140,12 @@
11401140
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Mcal\riscv-csr.h">
11411141
<Filter>micros\bl602_sifive_e24_riscv\Code\Mcal</Filter>
11421142
</ClInclude>
1143+
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_gpt.h">
1144+
<Filter>micros\bl602_sifive_e24_riscv\Code\Appli</Filter>
1145+
</ClInclude>
1146+
<ClInclude Include="target\micros\bl602_sifive_e24_riscv\Code\Appli\mcal_wdg.h">
1147+
<Filter>micros\bl602_sifive_e24_riscv\Code\Appli</Filter>
1148+
</ClInclude>
11431149
</ItemGroup>
11441150
<ItemGroup>
11451151
<Library Include="target\micros\xtensa_esp32_s3\startup\Std\lib_call0_abi\libc_call0_abi.a">
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
#include <util/utility/util_time.h>
3+
4+
#include <cstdint>
5+
6+
extern "C" auto toggle_led() -> void;
7+
8+
extern "C" auto task_led() -> void;
9+
10+
extern "C" auto task_led() -> void
11+
{
12+
using local_timer_type = util::timer<std::uint64_t>;
13+
using local_tick_type = typename local_timer_type::tick_type;
14+
15+
static local_timer_type local_timer(local_timer_type::seconds(local_tick_type{ UINT8_C(1) }));
16+
17+
if(local_timer.timeout())
18+
{
19+
local_timer.start_interval(local_timer_type::seconds(local_tick_type { UINT8_C(1) }));
20+
21+
toggle_led();
22+
}
23+
}

ref_app/target/micros/bl602_sifive_e24_riscv/Code/Appli/main.c

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,9 @@
4040

4141
#include "riscv-csr.h"
4242

43+
#include <stdbool.h>
4344
#include <stdint.h>
4445

45-
//-----------------------------------------------------------------------------------------
46-
// Defines
47-
//-----------------------------------------------------------------------------------------
48-
#define TIMEOUT_500MS (uint64_t)5000000
49-
#define TIMEOUT_1S (uint64_t)10000000
50-
5146
//-----------------------------------------------------------------------------------------
5247
// Macros
5348
//-----------------------------------------------------------------------------------------
@@ -59,7 +54,11 @@
5954
//-----------------------------------------------------------------------------------------
6055
// Function Prototypes
6156
//-----------------------------------------------------------------------------------------
62-
void __attribute__((interrupt,used,noinline)) Isr_TIMER_Interrupt (void);
57+
58+
extern void task_led();
59+
extern void mcal_gpt_init();
60+
61+
void toggle_led();
6362

6463
//-----------------------------------------------------------------------------------------
6564
/// \brief
@@ -85,27 +84,21 @@ int main(void)
8584
/* enable timer interrupt in CLIC vectored mode */
8685
CLIC_INTIE[7] = 1u;
8786

88-
/* set the timeout to 500ms */
89-
CLIC_MTIMECMP = (uint64_t)(CLIC_MTIME + TIMEOUT_500MS);
87+
mcal_gpt_init();
88+
89+
toggle_led();
9090

9191
/* endless loop */
92-
while(1);
92+
while(1)
93+
{
94+
task_led();
95+
}
9396

9497
return 0;
9598
}
9699

97-
//-----------------------------------------------------------------------------------------
98-
/// \brief
99-
///
100-
/// \param
101-
///
102-
/// \return
103-
//-----------------------------------------------------------------------------------------
104-
void Isr_TIMER_Interrupt (void)
100+
void toggle_led()
105101
{
106-
/* toggle the IO3 pin */
102+
// Toggle the IO3 pin.
107103
glb->GPIO_CFGCTL32.bit.reg_gpio_3_o ^= 1ul;
108-
109-
/* set the next timer timeout timeout */
110-
CLIC_MTIMECMP = (uint64_t)(CLIC_MTIME + TIMEOUT_1S);
111104
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
#include "BL602.h"
3+
4+
#include <mcal_gpt.h>
5+
6+
//-----------------------------------------------------------------------------------------
7+
// Defines
8+
//-----------------------------------------------------------------------------------------
9+
namespace
10+
{
11+
constexpr std::uint64_t TIMEOUT_1S { UINT64_C(10000000) };
12+
13+
// The one (and only one) system tick.
14+
volatile auto mcal_gpt_system_tick = mcal::gpt::value_type { };
15+
16+
auto gpt_is_initialized() -> bool& __attribute__((used, noinline));
17+
18+
auto gpt_is_initialized() -> bool&
19+
{
20+
static auto is_init = bool { };
21+
22+
return is_init;
23+
}
24+
}
25+
26+
extern "C" void Isr_TIMER_Interrupt (void) __attribute__((interrupt,used,noinline));
27+
28+
extern "C"
29+
void Isr_TIMER_Interrupt (void)
30+
{
31+
// Set the next timer timeout timeout.
32+
33+
CLIC_MTIMECMP = (uint64_t)(CLIC_MTIME + TIMEOUT_1S);
34+
}
35+
36+
extern "C" auto mcal_gpt_init() -> void;
37+
38+
extern "C" auto mcal_gpt_init() -> void
39+
{
40+
mcal::gpt::init(nullptr);
41+
}
42+
43+
auto mcal::gpt::init(const config_type*) -> void
44+
{
45+
if(!gpt_is_initialized())
46+
{
47+
// Set the next timer interrupt timeout.
48+
CLIC_MTIMECMP = (uint64_t)(CLIC_MTIME + TIMEOUT_1S);
49+
50+
// Set the is-initialized indication flag.
51+
gpt_is_initialized() = true;
52+
}
53+
}
54+
55+
auto mcal::gpt::secure::get_time_elapsed() -> mcal::gpt::value_type
56+
{
57+
if(gpt_is_initialized())
58+
{
59+
// Return the system tick using a multiple read to ensure data consistency.
60+
61+
const volatile uint64_t time_first = CLIC_MTIME;
62+
const volatile uint64_t time_second = CLIC_MTIME;
63+
64+
const volatile bool is_steady = (((uint32_t) time_second > (uint32_t) time_first) ? true : false);
65+
66+
value_type consistent_microsecond_tick = (is_steady ? time_first : CLIC_MTIME);
67+
68+
consistent_microsecond_tick /= 10U;
69+
70+
return consistent_microsecond_tick;
71+
}
72+
else
73+
{
74+
return value_type { UINT8_C(0) };
75+
}
76+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#ifndef MCAL_GPT_2025_10_30_H
2+
#define MCAL_GPT_2025_10_30_H
3+
4+
#include <cstdint>
5+
6+
namespace mcal
7+
{
8+
namespace gpt
9+
{
10+
using config_type = void;
11+
using value_type = std::uint64_t;
12+
13+
auto init(const config_type*) -> void;
14+
15+
struct secure final
16+
{
17+
static auto get_time_elapsed() -> value_type;
18+
};
19+
}
20+
}
21+
22+
#endif // MCAL_GPT_2025_10_30_H
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#ifndef MCAL_WDG_2025_10_30_H
2+
#define MCAL_WDG_2025_10_30_H
3+
4+
namespace mcal
5+
{
6+
namespace wdg
7+
{
8+
using config_type = void;
9+
10+
inline auto init(const config_type*) -> void { }
11+
12+
struct secure final
13+
{
14+
static auto trigger() -> void { }
15+
};
16+
}
17+
}
18+
19+
#endif // MCAL_WDG_2025_10_30_H

ref_app/target/micros/bl602_sifive_e24_riscv/Code/Mcal/BL602.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
#ifndef BL602_H
33
#define BL602_H
44

5+
#include "stdint.h"
6+
57
#ifdef __cplusplus
68
extern "C" {
79
#endif
810

9-
#include "stdint.h"
10-
1111
#ifdef __cplusplus
1212
#define __I volatile /*!< Defines 'read only' permissions */
1313
#else

ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_files.gmk

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
FILES_CPP :=
1313

14-
FILES_TGT := $(PATH_TGT)/Code/Appli/main \
14+
FILES_TGT := $(PATH_TGT)/Code/Appli/led \
15+
$(PATH_TGT)/Code/Appli/main \
16+
$(PATH_TGT)/Code/Appli/mcal_gpt \
1517
$(PATH_TGT)/Code/Startup/boot \
16-
$(PATH_TGT)/Code/Startup/intvect \
17-
$(PATH_TGT)/Code/Startup/Startup
18+
$(PATH_TGT)/startup/intvect \
19+
$(PATH_TGT)/startup/Startup

ref_app/target/micros/bl602_sifive_e24_riscv/make/bl602_sifive_e24_riscv_flags.gmk

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@ TGT_CXXFLAGS = -std=c++23 \
3737
-Wno-psabi \
3838
$(TGT_ALLFLAGS)
3939

40-
TGT_INCLUDES := -I$(PATH_TGT)/Code \
41-
-I$(PATH_TGT)/Code/Appli \
42-
-I$(PATH_TGT)/Code/Mcal \
43-
-I$(PATH_TGT)/Code/Startup
40+
TGT_INCLUDES := -I$(PATH_TGT)/Code/Appli \
41+
-I$(PATH_TGT)/Code/Mcal
4442

4543
TGT_AFLAGS = $(TGT_ALLFLAGS)
4644

0 commit comments

Comments
 (0)