Skip to content

Commit e457821

Browse files
authored
Merge pull request #631 from ckormanyos/cleanup_esp32s3
Cleanup esp32s3
2 parents a6b659a + 22d07a4 commit e457821

21 files changed

Lines changed: 336 additions & 158 deletions

File tree

ref_app/src/mcal/xtensa_esp32_s3/mcal_cpu.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#define MY_PROGMEM
1212

1313
#include <cstdint>
14-
#include <type_traits>
1514

1615
namespace mcal { namespace cpu {
1716

ref_app/src/mcal/xtensa_esp32_s3_riscv_cop/mcal_cpu.cpp

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

88
#include <mcal_cpu.h>
9-
10-
auto mcal::cpu::post_init() noexcept -> void
11-
{
12-
}
9+
#include <mcal_osc.h>
10+
#include <mcal_port.h>
11+
#include <mcal_wdg.h>
1312

1413
auto mcal::cpu::init() -> void
1514
{
15+
mcal::wdg::init(nullptr);
16+
mcal::port::init(nullptr);
17+
mcal::osc::init(nullptr);
1618
}

ref_app/src/mcal/xtensa_esp32_s3_riscv_cop/mcal_cpu.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111
#define MY_PROGMEM
1212

1313
#include <cstdint>
14-
#include <type_traits>
1514

1615
namespace mcal { namespace cpu {
1716

1817
auto init() -> void;
1918

20-
auto post_init() noexcept -> void;
19+
inline auto post_init() noexcept -> void { }
2120

2221
inline auto nop() noexcept -> void { asm volatile("nop"); }
2322

ref_app/src/mcal/xtensa_esp32_s3_riscv_cop/mcal_osc.cpp

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

1111
void mcal::osc::init(const config_type*)
1212
{
13+
// Set the core clock to 240 MHz and APB clock to 80 MHz.
14+
15+
// SYSTEM->CPU_PERI_CLK_EN.reg = 7;
16+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::system::cpu_peri_clk_en, static_cast<std::uint32_t>(UINT32_C(7))>::reg_set();
17+
18+
//SYSTEM->SYSCLK_CONF.reg = 0x401;
19+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::system::sysclk_conf, static_cast<std::uint32_t>(UINT32_C(0x00000401))>::reg_set();
1320
}

ref_app/src/mcal/xtensa_esp32_s3_riscv_cop/mcal_reg.h

Lines changed: 171 additions & 1 deletion
Large diffs are not rendered by default.

ref_app/src/mcal/xtensa_esp32_s3_riscv_cop/mcal_wdg.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,25 @@
1212

1313
void mcal::wdg::init(const config_type*)
1414
{
15+
// Disable the super watchdog.
16+
17+
// RTC_CNTL->SWD_WPROTECT.reg = 0x8F1D312A;
18+
// RTC_CNTL->WDTCONFIG1.reg = 0;
19+
// RTC_CNTL->SWD_CONF.reg = (1ul << 30);
20+
// RTC_CNTL->SWD_WPROTECT.reg = 0;
21+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::rtc_cntl::swd_wprotect, static_cast<std::uint32_t>(UINT32_C(0x8F1D312A))>::reg_set();
22+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::rtc_cntl::wdtconfig1, static_cast<std::uint32_t>(UINT32_C(0x00000000))>::reg_set();
23+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::rtc_cntl::swd_conf, static_cast<std::uint32_t>(UINT32_C(0x40000000))>::reg_set();
24+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::rtc_cntl::swd_wprotect, static_cast<std::uint32_t>(UINT32_C(0x00000000))>::reg_set();
25+
26+
// Disable Timer Group 0 WDT.
27+
28+
// TIMG0->WDTWPROTECT.reg = 0x50D83AA1;
29+
// TIMG0->WDTCONFIG0.reg = 0;
30+
// TIMG0->WDTWPROTECT.reg = 0;
31+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::timg0::wdtwprotect, static_cast<std::uint32_t>(UINT32_C(0x50D83AA1))>::reg_set();
32+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::timg0::wdtconfig0, static_cast<std::uint32_t>(UINT32_C(0x00000000))>::reg_set();
33+
mcal::reg::reg_access_static<std::uint32_t, std::uint32_t, mcal::reg::timg0::wdtwprotect, static_cast<std::uint32_t>(UINT32_C(0x00000000))>::reg_set();
1534
}
1635

1736
void mcal::wdg::secure::trigger()

ref_app/target.vcxproj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,9 +1041,9 @@
10411041
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\make\xtensa_esp32_s3_riscv_cop.ld" />
10421042
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\make\xtensa_esp32_s3_riscv_cop_files.gmk" />
10431043
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\make\xtensa_esp32_s3_riscv_cop_flags.gmk" />
1044-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\boot.S" />
1045-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\IntVectTable.S" />
1046-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Scripts\bin2asm.py" />
1044+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\boot.S" />
1045+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\IntVectTable.S" />
1046+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\Scripts\bin2asm.py" />
10471047
</ItemGroup>
10481048
<ItemGroup>
10491049
<ClCompile Include="target\micros\am335x\startup\crt0.cpp" />
@@ -1148,10 +1148,10 @@
11481148
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\crt0_init_ram.cpp" />
11491149
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\crt1.cpp" />
11501150
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\Std\StdLib.cpp" />
1151-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Appli\main.cpp" />
1152-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt0.cpp" />
1153-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt0_init_ram.cpp" />
1154-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt1.cpp" />
1151+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt0.cpp" />
1152+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt0_init_ram.cpp" />
1153+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt1.cpp" />
1154+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\main.cpp" />
11551155
</ItemGroup>
11561156
<ItemGroup>
11571157
<Text Include="target\micros\bcm2835_raspi_b\startup\SD_CARD\PiZero\config.txt" />

ref_app/target.vcxproj.filters

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -289,19 +289,7 @@
289289
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup">
290290
<UniqueIdentifier>{a71738e7-0c88-4bb9-a1bd-3a5ffd125490}</UniqueIdentifier>
291291
</Filter>
292-
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk">
293-
<UniqueIdentifier>{bb1fed00-c4cd-4e52-833d-16cf0f69bc10}</UniqueIdentifier>
294-
</Filter>
295-
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code">
296-
<UniqueIdentifier>{de099968-fa17-4f75-b098-50ed5325d04f}</UniqueIdentifier>
297-
</Filter>
298-
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Appli">
299-
<UniqueIdentifier>{7b9aadde-8fde-47da-bd4b-d348e1b2778d}</UniqueIdentifier>
300-
</Filter>
301-
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup">
302-
<UniqueIdentifier>{66ae9aa3-915d-4366-9492-87cdb30add93}</UniqueIdentifier>
303-
</Filter>
304-
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Scripts">
292+
<Filter Include="micros\xtensa_esp32_s3_riscv_cop\startup\Scripts">
305293
<UniqueIdentifier>{1a0b187b-0ef0-4365-b263-303097393b67}</UniqueIdentifier>
306294
</Filter>
307295
</ItemGroup>
@@ -684,17 +672,17 @@
684672
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\make\xtensa_esp32_s3_riscv_cop_flags.gmk">
685673
<Filter>micros\xtensa_esp32_s3_riscv_cop\make</Filter>
686674
</None>
687-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\IntVectTable.S">
688-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup</Filter>
675+
<None Include="target\micros\xtensa_esp32_s3\startup\coprocessor_binary.S">
676+
<Filter>micros\xtensa_esp32_s3\startup</Filter>
689677
</None>
690-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\boot.S">
691-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup</Filter>
678+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\Scripts\bin2asm.py">
679+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\Scripts</Filter>
692680
</None>
693-
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Scripts\bin2asm.py">
694-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Scripts</Filter>
681+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\boot.S">
682+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
695683
</None>
696-
<None Include="target\micros\xtensa_esp32_s3\startup\coprocessor_binary.S">
697-
<Filter>micros\xtensa_esp32_s3\startup</Filter>
684+
<None Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\IntVectTable.S">
685+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
698686
</None>
699687
</ItemGroup>
700688
<ItemGroup>
@@ -1004,17 +992,17 @@
1004992
<ClCompile Include="target\micros\xtensa_esp32_s3\startup\Std\StdLib.cpp">
1005993
<Filter>micros\xtensa_esp32_s3\startup\Std</Filter>
1006994
</ClCompile>
1007-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Appli\main.cpp">
1008-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Appli</Filter>
995+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt0.cpp">
996+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
1009997
</ClCompile>
1010-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt1.cpp">
1011-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup</Filter>
998+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt0_init_ram.cpp">
999+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
10121000
</ClCompile>
1013-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt0.cpp">
1014-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup</Filter>
1001+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\crt1.cpp">
1002+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
10151003
</ClCompile>
1016-
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup\crt0_init_ram.cpp">
1017-
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup\from_no_sdk\Code\Startup</Filter>
1004+
<ClCompile Include="target\micros\xtensa_esp32_s3_riscv_cop\startup\main.cpp">
1005+
<Filter>micros\xtensa_esp32_s3_riscv_cop\startup</Filter>
10181006
</ClCompile>
10191007
</ItemGroup>
10201008
<ItemGroup>

ref_app/target/micros/xtensa_esp32_s3/make/xtensa_esp32_s3_flags.gmk

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,6 @@ GCC_PREFIX = xtensa-esp32s3-elf
1515

1616
TGT_SUFFIX = elf
1717

18-
WARN_FLAGS := -Wall \
19-
-Wextra \
20-
-Wpointer-arith \
21-
-Wno-maybe-uninitialized \
22-
-Wno-unused-function \
23-
-Wno-unused-but-set-variable \
24-
-Wno-unused-variable \
25-
-Wno-deprecated-declarations \
26-
-Wno-unused-parameter \
27-
-Wno-unused-but-set-parameter \
28-
-Wno-missing-field-initializers \
29-
-Wno-sign-compare \
30-
-Wno-main
31-
3218

3319
include $(PATH_TGT_MAKE)/$(TGT)_flags_extra.gmk
3420

@@ -47,6 +33,7 @@ TGT_ALLFLAGS = -O1
4733
-fno-stack-protector \
4834
-nostdlib \
4935
-gdwarf-4 \
36+
-ffreestanding \
5037
-DCONFIG_IDF_TARGET_ESP32S3 \
5138
-DI_KNOW_WHAT_I_AM_DOING
5239

ref_app/target/micros/xtensa_esp32_s3/startup/Std/StdLib.cpp

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
2424
******************************************************************************************/
2525

26+
#include <cstddef>
2627
#include <cstdint>
2728
#include <cstring>
2829

@@ -32,13 +33,15 @@ typedef signed long long DItype __attribute__((mode (DI)));
3233
typedef unsigned long long UDItype __attribute__((mode (DI)));
3334
typedef unsigned int USItype __attribute__((mode (SI)));
3435

35-
extern int __builtin_clzll(long long unsigned int);
36+
extern int __builtin_clzll(unsigned long long);
3637

3738
#define DWtype DItype
3839
#define UDWtype UDItype
3940
#define UWtype USItype
4041

42+
UDWtype __udivdi3 (UDWtype n, UDWtype d);
4143
UDWtype __udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp);
44+
UDWtype __umoddi3 (UDWtype u, UDWtype v);
4245

4346
UDWtype __udivdi3 (UDWtype n, UDWtype d)
4447
{
@@ -69,8 +72,8 @@ UDWtype __udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp)
6972

7073
if (y <= r)
7174
{
72-
lz1 = __builtin_clzll (d);
73-
lz2 = __builtin_clzll (n);
75+
lz1 = static_cast<USItype>(__builtin_clzll(static_cast<unsigned long long>(d)));
76+
lz2 = static_cast<USItype>(__builtin_clzll(static_cast<unsigned long long>(n)));
7477

7578
k = lz1 - lz2;
7679
y = (y << k);
@@ -128,39 +131,48 @@ UDWtype __udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp)
128131
return q;
129132
}
130133

134+
#if defined(__GNUC__)
135+
#pragma GCC diagnostic push
136+
#pragma GCC diagnostic ignored "-Wcast-align"
137+
#endif
138+
131139
void* memset(void* str, int c, size_t n)
132140
{
133-
uint8_t *ptr = (uint8_t*) str;
134-
uint32_t value = (uint8_t) c;
141+
std::uint8_t* ptr { reinterpret_cast<std::uint8_t*>(str) };
142+
143+
const std::uint8_t uc { static_cast<std::uint8_t>(c) };
144+
145+
std::uint32_t value = static_cast<std::uint32_t>(uc);
135146

136147
// Set value to repeat the byte across a 32-bit word.
137-
value |= value << 8;
138-
value |= value << 16;
148+
value |= value << unsigned { UINT8_C( 8) };
149+
value |= value << unsigned { UINT8_C(16) };
139150

140151
// Align to the next 32-bit boundary.
141-
while (((uintptr_t)ptr & 3) && n > 0)
152+
while ( (static_cast<unsigned>(reinterpret_cast<std::uintptr_t>(ptr) & unsigned { UINT8_C(3) }) != 0U)
153+
&& (n > std::size_t { UINT8_C(0) }))
142154
{
143-
*ptr++ = (uint8_t) c;
155+
*ptr++ = uc;
144156

145157
--n;
146158
}
147159

148160
// Set memory in 32-bit chunks.
149-
uint32_t* ptr32 = (uint32_t*) ptr;
161+
std::uint32_t* ptr32 { reinterpret_cast<std::uint32_t*>(ptr) };
150162

151-
while (n >= 4)
163+
while (n >= std::size_t { UINT8_C(4) })
152164
{
153165
*ptr32++ = value;
154166

155-
n -= 4;
167+
n -= std::size_t { UINT8_C(4) };
156168
}
157169

158170
// Handle any remaining bytes.
159-
ptr = (uint8_t*) ptr32;
171+
ptr = reinterpret_cast<std::uint8_t*>(ptr32);
160172

161-
while (n > 0)
173+
while (n > std::size_t { UINT8_C(0) })
162174
{
163-
*ptr++ = (uint8_t) c;
175+
*ptr++ = uc;
164176

165177
--n;
166178
}
@@ -170,8 +182,8 @@ void* memset(void* str, int c, size_t n)
170182

171183
void* memcpy (void* dest, const void* src, size_t n)
172184
{
173-
uint8_t *d = (uint8_t*) dest;
174-
const uint8_t* s = (const uint8_t*) src;
185+
std::uint8_t* d { reinterpret_cast<std::uint8_t*>(dest) };
186+
const std::uint8_t* s { reinterpret_cast<const uint8_t*>(src) };
175187

176188
// Align destination to the next 32-bit boundary.
177189
while (((uintptr_t) d & 3) && n > 0)
@@ -183,8 +195,8 @@ void* memcpy (void* dest, const void* src, size_t n)
183195

184196
// Copy memory in 32-bit chunks.
185197

186-
uint32_t *d32 = (uint32_t*) d;
187-
const uint32_t* s32 = (const uint32_t*) s;
198+
std::uint32_t* d32 { reinterpret_cast<std::uint32_t*>(d) };
199+
const std::uint32_t* s32 { reinterpret_cast<const uint32_t*>(s) };
188200

189201
while (n >= 4)
190202
{
@@ -195,8 +207,8 @@ void* memcpy (void* dest, const void* src, size_t n)
195207

196208
// Handle any remaining bytes.
197209

198-
d = (uint8_t*) d32;
199-
s = (const uint8_t*) s32;
210+
d = reinterpret_cast<std::uint8_t*>(d32);
211+
s = reinterpret_cast<const uint8_t*>(s32);
200212

201213
while (n > 0)
202214
{
@@ -208,4 +220,8 @@ void* memcpy (void* dest, const void* src, size_t n)
208220
return dest;
209221
}
210222

223+
#if defined(__GNUC__)
224+
#pragma GCC diagnostic pop
225+
#endif
226+
211227
} // extern "C"

0 commit comments

Comments
 (0)