|
@@ -44,25 +44,32 @@ void setup_usb_ids()
|
|
|
USB.serialNumber(serial_number);
|
|
|
}
|
|
|
|
|
|
-static void heap_info()
|
|
|
+bool _spiram_broken;
|
|
|
+
|
|
|
+void heap_info()
|
|
|
{
|
|
|
size_t il = heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL);
|
|
|
size_t ia = heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
|
|
|
+ size_t it = heap_caps_get_total_size(MALLOC_CAP_INTERNAL);
|
|
|
size_t sl = heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM);
|
|
|
size_t sa = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
|
|
|
+ size_t st = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
|
|
|
|
|
|
char msg_buffer[128];
|
|
|
snprintf(msg_buffer, sizeof msg_buffer,
|
|
|
- "Heap: sram %zu/%zu, spiram %zu/%zu\r\n",
|
|
|
- il, ia, sl, sa);
|
|
|
+ "Heap: sram %zu/%zu/%zu, spiram %zu/%zu/%zu\r\n",
|
|
|
+ il, ia, it, sl, sa, st);
|
|
|
|
|
|
fputs(msg_buffer, stdout);
|
|
|
Serial.print(msg_buffer);
|
|
|
|
|
|
setvar_uint(status_heap_sram_max, il);
|
|
|
setvar_uint(status_heap_sram_free, ia);
|
|
|
+ setvar_uint(status_heap_sram_size, it);
|
|
|
setvar_uint(status_heap_spiram_max, sl);
|
|
|
setvar_uint(status_heap_spiram_free, sa);
|
|
|
+ setvar_uint(status_heap_spiram_size, st);
|
|
|
+ _spiram_broken = st == 0;
|
|
|
}
|
|
|
|
|
|
#if 0
|
|
@@ -125,7 +132,6 @@ void setup() {
|
|
|
|
|
|
// Enable external PSRAM for heap
|
|
|
heap_caps_malloc_extmem_enable(3000); // >= 3K allocations in PSRAM
|
|
|
- heap_info();
|
|
|
|
|
|
TTY::init();
|
|
|
Serial.print("\r\n*** Hello, World! ***\r\n");
|
|
@@ -143,13 +149,18 @@ void setup() {
|
|
|
set_build_status_info();
|
|
|
fpga_service_init();
|
|
|
fpga_service_enable(true);
|
|
|
- SetupWiFi();
|
|
|
+ if (spiram_broken()) {
|
|
|
+ const char spiram_broken_msg[] =
|
|
|
+ "WARNING: SPIRAM broken, not starting network\r\n";
|
|
|
+ fputs(spiram_broken_msg, stdout);
|
|
|
+ Serial.print(spiram_broken_msg);
|
|
|
+ } else {
|
|
|
+ SetupWiFi();
|
|
|
+ }
|
|
|
Serial.println("[RDY]");
|
|
|
sysvar_print_updates = true;
|
|
|
do_log_config_status = true; // Print configuration from main loop
|
|
|
led_set(LED_BLUE, LED_ON); // Software ready
|
|
|
-
|
|
|
- heap_info();
|
|
|
}
|
|
|
|
|
|
static inline char task_state(eTaskState state)
|