File tree Expand file tree Collapse file tree 4 files changed +90
-6
lines changed
unexpectedmaker_feathers2 Expand file tree Collapse file tree 4 files changed +90
-6
lines changed Original file line number Diff line number Diff line change @@ -436,11 +436,12 @@ int run_repl(void) {
436
436
}
437
437
438
438
int __attribute__((used )) main (void ) {
439
- memory_init ();
440
-
441
439
// initialise the cpu and peripherals
442
440
safe_mode_t safe_mode = port_init ();
443
441
442
+ // Init memory after the port in case the port needs to set aside memory.
443
+ memory_init ();
444
+
444
445
// Turn on LEDs
445
446
init_status_leds ();
446
447
rgb_led_status_init ();
Original file line number Diff line number Diff line change
1
+ CONFIG_ESP32S2_SPIRAM_SUPPORT=y
2
+
3
+ #
4
+ # SPI RAM config
5
+ #
6
+ # CONFIG_SPIRAM_TYPE_AUTO is not set
7
+ CONFIG_SPIRAM_TYPE_ESPPSRAM16=y
8
+ # CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
9
+ # CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
10
+ CONFIG_SPIRAM_SIZE=2097152
11
+
12
+ #
13
+ # PSRAM clock and cs IO for ESP32S2
14
+ #
15
+ CONFIG_DEFAULT_PSRAM_CLK_IO=30
16
+ CONFIG_DEFAULT_PSRAM_CS_IO=26
17
+ # end of PSRAM clock and cs IO for ESP32S2
18
+
19
+ # CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
20
+ # CONFIG_SPIRAM_RODATA is not set
21
+ # CONFIG_SPIRAM_SPEED_80M is not set
22
+ CONFIG_SPIRAM_SPEED_40M=y
23
+ # CONFIG_SPIRAM_SPEED_26M is not set
24
+ # CONFIG_SPIRAM_SPEED_20M is not set
25
+ CONFIG_SPIRAM=y
26
+ CONFIG_SPIRAM_BOOT_INIT=y
27
+ # CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
28
+ CONFIG_SPIRAM_USE_MEMMAP=y
29
+ # CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
30
+ # CONFIG_SPIRAM_USE_MALLOC is not set
31
+ CONFIG_SPIRAM_MEMTEST=y
32
+ # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
33
+ # end of SPI RAM config
Original file line number Diff line number Diff line change
1
+ CONFIG_ESP32S2_SPIRAM_SUPPORT=y
2
+
3
+ #
4
+ # SPI RAM config
5
+ #
6
+ # CONFIG_SPIRAM_TYPE_AUTO is not set
7
+ # CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
8
+ # CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
9
+ CONFIG_SPIRAM_TYPE_ESPPSRAM64=y
10
+ CONFIG_SPIRAM_SIZE=8388608
11
+
12
+ #
13
+ # PSRAM clock and cs IO for ESP32S2
14
+ #
15
+ CONFIG_DEFAULT_PSRAM_CLK_IO=30
16
+ CONFIG_DEFAULT_PSRAM_CS_IO=26
17
+ # end of PSRAM clock and cs IO for ESP32S2
18
+
19
+ CONFIG_SPIRAM_SPIWP_SD3_PIN=28
20
+ # CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
21
+ # CONFIG_SPIRAM_RODATA is not set
22
+ # CONFIG_SPIRAM_USE_AHB_DBUS3 is not set
23
+ # CONFIG_SPIRAM_SPEED_80M is not set
24
+ CONFIG_SPIRAM_SPEED_40M=y
25
+ # CONFIG_SPIRAM_SPEED_26M is not set
26
+ # CONFIG_SPIRAM_SPEED_20M is not set
27
+ CONFIG_SPIRAM=y
28
+ CONFIG_SPIRAM_BOOT_INIT=y
29
+ # CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
30
+ CONFIG_SPIRAM_USE_MEMMAP=y
31
+ # CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
32
+ # CONFIG_SPIRAM_USE_MALLOC is not set
33
+ CONFIG_SPIRAM_MEMTEST=y
34
+ # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
35
+ # end of SPI RAM config
Original file line number Diff line number Diff line change 43
43
#include "supervisor/memory.h"
44
44
#include "supervisor/shared/tick.h"
45
45
46
- #include "rmt.h"
46
+ #include "peripherals/rmt.h"
47
+ #include "esp-idf/components/heap/include/esp_heap_caps.h"
48
+ #include "esp-idf/components/soc/soc/esp32s2/include/soc/cache_memory.h"
49
+
50
+ #define HEAP_SIZE (48 * 1024)
51
+
52
+ uint32_t * heap ;
53
+ uint32_t heap_size ;
47
54
48
55
STATIC esp_timer_handle_t _tick_timer ;
49
56
@@ -59,6 +66,16 @@ safe_mode_t port_init(void) {
59
66
args .name = "CircuitPython Tick" ;
60
67
esp_timer_create (& args , & _tick_timer );
61
68
never_reset_module_internal_pins ();
69
+
70
+ #ifdef CONFIG_SPIRAM
71
+ heap = (uint32_t * ) (DRAM0_CACHE_ADDRESS_HIGH - CONFIG_SPIRAM_SIZE );
72
+ heap_size = CONFIG_SPIRAM_SIZE / sizeof (uint32_t );
73
+ #endif
74
+
75
+ if (heap == NULL ) {
76
+ heap = malloc (HEAP_SIZE );
77
+ heap_size = HEAP_SIZE / sizeof (uint32_t );
78
+ }
62
79
return NO_SAFE_MODE ;
63
80
}
64
81
@@ -90,14 +107,12 @@ void reset_to_bootloader(void) {
90
107
void reset_cpu (void ) {
91
108
}
92
109
93
- uint32_t heap [64 / sizeof (uint32_t ) * 1024 ];
94
-
95
110
uint32_t * port_heap_get_bottom (void ) {
96
111
return heap ;
97
112
}
98
113
99
114
uint32_t * port_heap_get_top (void ) {
100
- return heap + sizeof ( heap ) / sizeof ( heap [ 0 ]) ;
115
+ return heap + heap_size ;
101
116
}
102
117
103
118
uint32_t * port_stack_get_limit (void ) {
You can’t perform that action at this time.
0 commit comments