void setup() {
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
while (!Serial);
Serial.println("\n" __FILE__ " " __DATE__ " " __TIME__);
if ( CrashReport ) Serial.print ( CrashReport );
memInfo();
}
void loop() {
// put your main code here, to run repeatedly:
}
extern unsigned long _itcm_block_count;
extern uint32_t external_psram_size;
void memInfo () {
constexpr auto RAM_BASE = 0x20200000;
constexpr auto RAM_SIZE = 512 << 10;
constexpr auto FLASH_BASE = 0x60000000;
constexpr auto FLASH_SIZE = 8 << 20;
extern char _stext[], _etext[], _sbss[], _ebss[], _sdata[], _edata[], _estack[],
_heap_start[], _heap_end[], _extram_start[], _extram_end[], *__brkval;
char* sp = __builtin_frame_address(0);
Serial.printf("_stext %08x\n", _stext);
Serial.printf("_etext %08x +%db\n", _etext, _etext - _stext);
Serial.printf("_sdata %08x\n", _sdata);
Serial.printf("_edata %08x +%db\n", _edata, _edata - _sdata);
Serial.printf("_sbss %08x\n", _sbss);
Serial.printf("_ebss %08x +%db\n", _ebss, _ebss - _sbss);
Serial.printf("curr stack %08x +%db\n", sp, sp - _ebss);
Serial.printf("_estack %08x +%db\n", _estack, _estack - sp);
Serial.printf("_heap_start %08x\n", _heap_start);
Serial.printf("__brkval %08x +%db\n", __brkval, __brkval - _heap_start);
Serial.printf("_heap_end %08x +%db\n", _heap_end, _heap_end - __brkval);
Serial.printf("_extram_start %08x\n", _extram_start);
Serial.printf("_extram_end %08x +%db\n", _extram_end, _extram_end - _extram_start);
Serial.printf("\n");
Serial.printf("Fault 1\n");
Serial.flush(); delay(10);
[B][COLOR="#FF0000"] Serial.printf("<ITCM> %08x .. %08x\n", _stext, _stext + ((int) _itcm_block_count << 15) - 1);[/COLOR][/B] [U]//line 47[/U]
Serial.printf("Fault 2\n");
Serial.flush(); delay(10);
Serial.printf("<DTCM> %08x .. %08x\n",
_sdata, _estack - 1);
Serial.printf("<RAM> %08x .. %08x\n",
RAM_BASE, RAM_BASE + RAM_SIZE - 1);
Serial.printf("<FLASH> %08x .. %08x\n",
FLASH_BASE, FLASH_BASE + FLASH_SIZE - 1);
Serial.printf("<PSRAM> %08x .. %08x\n",
_extram_start, _extram_start + (external_psram_size << 20) - 1);
Serial.printf("\n");
auto stack = sp - _ebss,
heap = _heap_end - __brkval,
psram = _extram_start + (external_psram_size << 20) - _extram_end;
Serial.printf("avail STACK %8d b %5d kb\n", stack, stack >> 10);
Serial.printf("avail HEAP %8d b %5d kb\n", heap, heap >> 10);
Serial.printf("avail PSRAM %8d b %5d kb\n", psram, psram >> 10);
}