33 return (
int)&v - (__brkval == 0 ? (int)&__heap_start : (
int)__brkval);
38 #define STACK_CANARY 0xc5 40 void mu_StackPaint(
void) __attribute__((naked)) __attribute__((section(
".init1")));
56 " ldi r30,lo8(_end)\n" 57 " ldi r31,hi8(_end)\n" 58 " ldi r24,lo8(0xc5)\n" 59 " ldi r25,hi8(__stack)\n" 64 " cpi r30,lo8(__stack)\n" 74 uint8_t *p = (__brkval == 0 ? (uint8_t *) &__heap_start : __brkval);
79 return (uint16_t)RAMEND - (uint16_t)p;
85 int data_size = (int)&__data_end - (
int)&__data_start;
86 int bss_size = (int)&__bss_end - (
int)&__data_end;
87 int heap_end = (int) (__brkval == 0 ? (uint8_t *) &__heap_start : __brkval);
89 int heap_size = heap_end - (int)&__bss_end;
90 int stack_size = RAMEND - (int)SP + 1;
91 int available = (RAMEND - (int)&__data_start + 1);
93 available -= data_size + bss_size + heap_size + stack_size;
95 Serial.print(F(
"+----------------+ ")); Serial.print((
int)&__data_start); Serial.println(
" (__data_start)");
96 Serial.print(F(
"+ data +")); Serial.println();
97 Serial.print(F(
"+ variables + size = ")); Serial.println(data_size);
98 Serial.print(F(
"+----------------+ ")); Serial.print((
int)&__data_end); Serial.println(
" (__data_end / __bss_start)");
99 Serial.print(F(
"+ bss +")); Serial.println();
100 Serial.print(F(
"+ variables + size = ")); Serial.println(bss_size);
101 Serial.print(F(
"+----------------+ ")); Serial.print((
int)&__bss_end); Serial.println(
" (__bss_end / __heap_start)");
102 Serial.print(F(
"+ heap + size = ")); Serial.println(heap_size);
103 Serial.print(F(
"+----------------+ ")); Serial.print((
int)heap_end); Serial.println(
" (__brkval if not 0, or __heap_start)");
104 Serial.print(F(
"+ +")); Serial.println();
105 Serial.print(F(
"+ +")); Serial.println();
106 Serial.print(F(
"+ FREE RAM + size = ")); Serial.println(available);
107 Serial.print(F(
"+ +")); Serial.println();
108 Serial.print(F(
"+ +")); Serial.println();
109 Serial.print(F(
"+----------------+ ")); Serial.print((
int)SP); Serial.println(
" (SP)");
110 Serial.print(F(
"+ stack + size = ")); Serial.println(stack_size);
111 Serial.print(F(
"+----------------+ ")); Serial.print((
int)RAMEND); Serial.println(
" (RAMEND / __stack)");
void SRamDisplay(void)
Displays the 'map' of the current state of the Arduino's SRAM memory on the Serial console...
#define STACK_CANARY
Copy / adaptation of the library StackPaint available here : https://github.com/WickedDevice/StackPa...
void mu_StackPaint(void) __attribute__ ((naked)) __attribute__ ((section (".init1")))
Function called before any other function.
uint16_t mu_StackCount(void)
Show the stack size on console.
int mu_freeRam(void)
Show the free Ram size on console.