Skip to content

Commit

Permalink
Improved AVRUtils
Browse files Browse the repository at this point in the history
  • Loading branch information
ArminJo committed Oct 8, 2024
1 parent 93d659c commit 2e8544d
Show file tree
Hide file tree
Showing 18 changed files with 521 additions and 297 deletions.
3 changes: 2 additions & 1 deletion examples/ADCSwitchingTest/ADCSwitchingTest.ino
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ void setup() {
pinMode(LED_BUILTIN, OUTPUT);

Serial.begin(115200);
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /*stm32duino*/|| defined(USBCON) /*STM32_stm32*/|| defined(SERIALUSB_PID) || defined(ARDUINO_attiny3217)
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /*stm32duino*/|| defined(USBCON) /*STM32_stm32*/ \
|| defined(SERIALUSB_PID) || defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_attiny3217)
delay(4000); // To be able to connect Serial monitor after reset or power up and before first print out. Do not wait for an attached Serial Monitor!
#endif

Expand Down
80 changes: 55 additions & 25 deletions examples/AVRUtilsDemo/AVRUtilsDemo.ino
Original file line number Diff line number Diff line change
Expand Up @@ -50,37 +50,38 @@
|| defined(__AVR_ATtiny88__)
# define CODE_FOR_ATTINY
#endif
#if defined(CODE_FOR_ATTINY)
#include "ATtinySerialOut.hpp" // Available as Arduino library "ATtinySerialOut"
#else

//#define SIZE_OF_DUMMY_ARRAY 1800 // Stack runs into data
//#define SIZE_OF_DUMMY_ARRAY 1700 // Stack is OK, but no heap is available
#define SIZE_OF_DUMMY_ARRAY 1600 // Stack is OK, and small heap is available
uint8_t sDummyArray[SIZE_OF_DUMMY_ARRAY] __attribute__((section(".noinit"))); // Place it at end of BSS to be first overwritten by stack.
#endif

#define VERSION_EXAMPLE "1.0"
#define VERSION_EXAMPLE "1.1"

#define TONE_OUT_PIN 4

#if defined(CODE_FOR_ATTINY)
#include "ATtinySerialOut.hpp" // Available as Arduino library "ATtinySerialOut"
#define LED_PIN PB1
// Pin 1 has an LED connected on my Digispark board.
# if (LED_PIN == TX_PIN)
#error LED pin must not be equal TX pin (pin 2).
# endif

#else

//#define SIZE_OF_DUMMY_ARRAY 1800 // Stack runs into data
//#define SIZE_OF_DUMMY_ARRAY 1700 // Stack is OK, but no heap is available
#define SIZE_OF_DUMMY_ARRAY 0x600 // 1536 Stack is OK, and small heap is available
uint8_t sDummyArray[SIZE_OF_DUMMY_ARRAY] __attribute__((section(".noinit"))); // Place it at end of BSS to be first overwritten by stack.

#define LED_PIN LED_BUILTIN
#endif

uint8_t sMCUSRStored; // content of MCUSR register at startup

#define WATCHDOG_INFO_STRING_SIZE 16
/*
* A variable to hold the reset cause written by the main program
* It must not be overwritten by the initialization code after a reset.
* avr-gcc provides this via the ".noinit" section.
*
* Independent of order in file, sDummyArray is allocated lower than sWatchdogResetInfoString :-(
*/
char sWatchdogResetInfoString[WATCHDOG_INFO_STRING_SIZE] __attribute__ ((section(".noinit")));

Expand Down Expand Up @@ -108,6 +109,9 @@ void setup() {
* Initialize the serial pin as an output for Serial.print like debugging
*/
initTXPin();
// Just to know which program is running on my Arduino
Serial.println(F("START " __FILE__ "\r\nVersion " VERSION_EXAMPLE " from " __DATE__));
Serial.println();
#else

/*
Expand All @@ -122,34 +126,48 @@ void setup() {
for (int i = 0; i < SIZE_OF_DUMMY_ARRAY; ++i) {
sDummyArray[i] = 0; // Mark array with 0 to detect overwriting by StackFreeMeasurement
}
initStackFreeMeasurement();

Serial.begin(115200);

#endif // defined(CODE_FOR_ATTINY)
// Just to know which program is running on my Arduino
Serial.println(F("START " __FILE__ "\r\nVersion " VERSION_EXAMPLE " from " __DATE__));
Serial.println();
printBaseRAMData(&Serial);
Serial.flush();

initStackFreeMeasurement();

#endif // defined(CODE_FOR_ATTINY)

Serial.flush();

Serial.print(F("sMCUSR=0x"));
Serial.print(sMCUSRStored, HEX);
Serial.print(F(" => Boot reason is"));
printMCUSR(sMCUSRStored);
if (sMCUSRStored != 0) {
Serial.print(F(" => Boot reason is"));
printMCUSR(sMCUSRStored);
}
Serial.println();

if (sMCUSRStored & (1 << WDRF)) {
Serial.println(sWatchdogResetInfoString);
} else {
strncpy(sWatchdogResetInfoString, "during setup", WATCHDOG_INFO_STRING_SIZE - 1);
sWatchdogResetInfoString[WATCHDOG_INFO_STRING_SIZE - 1] = '\0'; // Terminate any string later copied with strncpy(..., ..., WATCHDOG_INFO_STRING_SIZE - 1);
}
Serial.flush();

printBODLevel();
Serial.flush();

/*
* Prints to avoid optimizing away the sDummyArray, which is first overwritten by stack.
*/
Serial.print(F("sDummyArray[1000]=0x"));
Serial.println(sDummyArray[1000], HEX);
Serial.println(F("DummyArray size=" STR(SIZE_OF_DUMMY_ARRAY)));
sDummyArray[SIZE_OF_DUMMY_ARRAY - 1] = 0x42;
Serial.print(F("DummyArray size=" STR(SIZE_OF_DUMMY_ARRAY)));
Serial.print(F(", &DummyArray["));
Serial.print(SIZE_OF_DUMMY_ARRAY - 1);
Serial.print(F("]=0x"));
Serial.println((uint16_t) &sDummyArray[SIZE_OF_DUMMY_ARRAY - 1], HEX);
Serial.flush();

pinMode(LED_PIN, OUTPUT);

Expand All @@ -165,17 +183,29 @@ void setup() {
delay(400);

Serial.println();
printRAMInfo(&Serial);
printStackUnusedAndUsedBytes(&Serial);

Serial.println();
printRAMInfo(&Serial);
Serial.print(F("getStackMaxUsedSize="));
Serial.println(getStackMaxUsedSize());

Serial.println(F("Dump stack / end of RAM"));
printMemoryHexDump((uint8_t*) (RAMEND - 256) + 1, 256);
printMemoryHexDump((uint8_t*) (RAMEND - 288) + 1, 288);
printRAMInfo(&Serial);

Serial.println();
printStackUsedBytes(&Serial);
Serial.println();

/*
* Test calloc sizes
*/
testCallocSizesAndPrint(&Serial);

printBaseRAMData(&Serial);
printRAMInfo(&Serial);
Serial.print(F("getStackMaxUsedSize="));
Serial.println(getStackMaxUsedSize()); // test this function, it works different from function used in printRAMInfo

Serial.println(F("Dump stack / end of RAM"));
printMemoryHexDump((uint8_t*) (RAMEND - 288) + 1, 288);

//}

Expand Down
181 changes: 124 additions & 57 deletions examples/AVRUtilsDemo/AVRUtilsDemo.log
Original file line number Diff line number Diff line change
@@ -1,64 +1,131 @@
START ../src/AVRUtilsDemo.cpp
Version 1.0 from Sep 11 2023
sMCUSR=0xD5 BootReasonWasPowerUp=1
sStaticVariable filled by analogRead(A0)=676
sDummyArray[1000]=0x0
DummyArray size=1800

Size of Data + BSS, Heap start, Stack end=2021
Stack used 27 of 27
Currently available Heap=0
Stack unused=0, used=16

0x0880: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0890: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x04 0x40 0x02 0x66 0x04 0x40 .@.f.@
0x08A0: 0x02 0x66 0x01 0x3C 0x1B 0x21 0x08 0x38 0x00 0x01 0x00 0x00 0x23 0xA3 0x00 0x02 .f.<...2 . #. .
0x08B0: 0x93 0x08 0xE5 0x08 0xE5 0x08 0xE4 0x01 0xEE 0x08 0xC4 0x08 0xE4 0x08 0xC0 0x08 ................
0x08C0: 0xC0 0x00 0x00 0x03 0x3A 0x04 0x40 0x02 0x66 0x04 0x40 0x02 0x66 0x01 0x3C 0x04 . .:.@.f.@.f.<.
0x08D0: 0x40 0x00 0xD7 0x00 0x01 0x04 0x40 0x08 0xD8 0x00 0x02 0x01 0x07 0x08 0x30 0x00 @ . .@....(*..
0x08E0: 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0xEF 0x08 0xE8 0x00 0x00 0x08 0xE0 0x07 0x15 . #. .........%
0x08F0: 0x00 0x00 0xEB 0x00 0xFB 0x38 0x7B 0x00 0x00 0x03 0x05 0x11 0x01 0x12 0x01 0x12 . .8{ .......

START ../src/AVRUtilsDemo.cpp
Version 1.0 from Sep 11 2023
sMCUSR=0xD5 BootReasonWasPowerUp=1
sStaticVariable filled by analogRead(A0)=679
sDummyArray[1000]=0x0
DummyArray size=1700

Size of Data + BSS, Heap start, Stack end=1921
Stack used 103 of 127
Currently available Heap=0
Stack unused=25, used=102

0x0880: 0x00 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZ
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x04 0x40 0x02 0x66 0x04 0x40 ZZZZZZZZZZ.@.f.@
0x08A0: 0x02 0x66 0x01 0x3C 0x1F 0x25 0x08 0x38 0x00 0x01 0x00 0x00 0x23 0xA3 0x00 0x02 .f.<...2 . #. .
0x08B0: 0x93 0x08 0xE5 0x08 0xE5 0x08 0xE4 0x01 0xEE 0x08 0xC4 0x08 0xE4 0x08 0xC0 0x08 ................
0x08C0: 0xC0 0x00 0x00 0x03 0x3A 0x04 0x40 0x02 0x66 0x04 0x40 0x02 0x66 0x01 0x3C 0x04 . .:.@.f.@.f.<.
0x08D0: 0x40 0x00 0xD7 0x00 0x01 0x04 0x40 0x08 0xD8 0x00 0x02 0x05 0x0B 0x08 0x30 0x00 @ . .@....,...
0x08E0: 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0xEF 0x08 0xE8 0x00 0x00 0x08 0xE0 0x07 0x15 . #. .........%
0x08F0: 0x00 0x00 0xEB 0x00 0xFB 0x38 0x7B 0x00 0x00 0x03 0x05 0x11 0x01 0x12 0x01 0x12 . .8{ .......
Version 1.1 from Sep 17 2024
__malloc_heap_start=2062|0x80E, &__heap_start=2062|0x80E, __brkval=0|0x0, __malloc_margin=128, SP=2299|0x8FB, __malloc_heap_end=0, __flp=0
sMCUSR=0x0
Brown-out=1.8V
DummyArray size=0x600, &DummyArray[1535]=0x7FD

Data+BSS=1806. Heap: used=0, max used=0, available=120. Stack: available=234, used=8, max used=90, unused=152 of current total 242
Dump stack / end of RAM
0x07E0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x07F0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x42 0x64 0x75 Bdu
0x0800: 0x72 0x69 0x6E 0x67 0x20 0x73 0x65 0x74 0x75 0x70 0x00 0x00 0x00 0x00 0x5A 0x5A ring setup ZZ
0x0810: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0820: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0830: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0840: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0850: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0860: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0870: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0880: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x08A0: 0x5A 0x06 0x6F 0x03 0x23 0x01 0x5E 0x25 0x2B 0x08 0x5E 0x00 0x01 0x00 0x00 0x23 Z.o.#.^...3 . #
0x08B0: 0x00 0x00 0x03 0x55 0x08 0xE8 0x08 0xE8 0x08 0xE7 0x02 0xAA 0x08 0xC7 0x08 0xE7 . .S............
0x08C0: 0xCA 0xD0 0x00 0x00 0x00 0x00 0x04 0x07 0x00 0x04 0x07 0x04 0x07 0x04 0x07 0x06 .. .. .......
0x08D0: 0x6F 0x03 0x06 0x6F 0x00 0x6A 0x00 0x01 0x06 0x6F 0x08 0x6B 0x00 0x02 0x0B 0x11 o..o .o.W .o ..
0x08E0: 0x03 0x30 0x00 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0x08 0x08 0xEC 0x03 0x05 0x11 ..... . #. .Q..
0x08F0: 0x08 0x05 0x41 0xF0 0x05 0x6F 0x01 0x02 0x01 0x0F 0x00 0x0B 0x07 0xF9 0x01 0xCC . . .{.... .....
Data+BSS=1806. Heap: used=0, max used=0, available=120. Stack: available=234, used=8, max used=95, unused=147 of current total 242

SP=0x8FD available=98 -> calloc(128,1)failed ->available=98
SP=0x8FD available=98 -> calloc(64,1)=0x810 ->available=32
SP=0x8FD available=32 -> calloc(64,1)failed ->available=32
SP=0x8FD available=32 -> calloc(32,1)failed ->available=32
SP=0x8FD available=32 -> calloc(16,1)=0x852 ->available=14
SP=0x8FD available=14 -> calloc(16,1)failed ->available=14
SP=0x8FD available=14 -> calloc(8,1)=0x864 ->available=4
SP=0x8FD available=4 -> calloc(8,1)failed ->available=4
SP=0x8FD available=4 -> calloc(4,1)failed ->available=4
SP=0x8FD available=4 -> calloc(2,1)=0x86E ->available=0
SP=0x8FD available=0 -> calloc(2,1)failed ->available=0
SP=0x8FD available=0 -> calloc(1,1)failed ->
__malloc_heap_start=2062|0x80E, &__heap_start=2062|0x80E, __brkval=2160|0x870, __malloc_margin=128, SP=2299|0x8FB, __malloc_heap_end=0, __flp=0
Data+BSS=1806. Heap: used=98, max used=98, available=22. Stack: available=136, used=8, max used=95, unused=49 of current total 144
Dump stack / end of RAM
0x07E0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x07F0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x42 0x64 0x75 Bdu
0x0800: 0x72 0x69 0x6E 0x67 0x20 0x73 0x65 0x74 0x75 0x70 0x00 0x00 0x00 0x00 0x40 0x00 ring setup @
0x0810: 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Z
0x0820: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0830: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0840: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x11 .
0x0850: 0x10 0x00 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 . Z
0x0860: 0x00 0x11 0x08 0x00 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x11 0x02 0x00 0x5A 0x11 .. Z .. Z.
0x0870: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0880: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x08A0: 0x5A 0x06 0x6F 0x03 0x23 0x01 0x5E 0x26 0x2C 0x08 0x38 0x00 0x01 0x00 0x00 0x23 Z.o.#.^...3 . #
0x08B0: 0x00 0x00 0x03 0x51 0x08 0xE8 0x08 0xE8 0x08 0xE7 0x02 0xAA 0x08 0xC7 0x08 0xE7 . .Q............
0x08C0: 0xCA 0xD0 0x00 0x00 0x00 0x00 0x04 0x07 0x00 0x04 0x07 0x04 0x07 0x00 0x00 0x06 .. .. .... .
0x08D0: 0x6F 0x03 0x06 0x6F 0x00 0x6A 0x00 0x01 0x06 0x6F 0x08 0x6B 0x00 0x02 0x0C 0x12 o..o .o.W .o ..
0x08E0: 0x03 0x30 0x00 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0x08 0x08 0xEC 0x03 0x05 0x11 ..... . #. .S..
0x08F0: 0x08 0x05 0x41 0xF0 0x05 0x6F 0x00 0x00 0x00 0x00 0x5A 0x11 0x08 0x40 0x01 0xCC . . .{ Z..@..
Sleep 2 seconds with watchdog reset sNumberOfSleeps=0
Sleep 2 seconds with watchdog reset sNumberOfSleeps=1
Sleep 2 seconds with watchdog reset sNumberOfSleeps=2
Sleep 2 seconds with watchdog reset sNumberOfSleeps=3
Wait 5 seconds to force watchdog reset
START ../src/AVRUtilsDemo.cpp
Version 1.0 from Sep 11 2023
sMCUSR=0xD5 BootReasonWasPowerUp=1
sStaticVariable filled by analogRead(A0)=671
sDummyArray[1000]=0x0
DummyArray size=1600

Size of Data + BSS, Heap start, Stack end=1821
Stack used 103 of 227
Currently available Heap=82
Stack unused=125, used=102
Version 1.1 from Sep 17 2024
__malloc_heap_start=2062|0x80E, &__heap_start=2062|0x80E, __brkval=0|0x0, __malloc_margin=128, SP=2299|0x8FB, __malloc_heap_end=0, __flp=0
sMCUSR=0x0
Brown-out=1.8V
DummyArray size=0x600, &DummyArray[1535]=0x7FD

Data+BSS=1806. Heap: used=0, max used=0, available=120. Stack: available=234, used=8, max used=90, unused=152 of current total 242
Dump stack / end of RAM
0x07E0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x07F0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x42 0x64 0x75 Bdu
0x0800: 0x72 0x69 0x6E 0x67 0x20 0x73 0x65 0x74 0x75 0x70 0x00 0x00 0x00 0x00 0x5A 0x5A ring setup ZZ
0x0810: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0820: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0830: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0840: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0850: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0860: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0870: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0880: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x04 0x40 0x02 0x66 0x04 0x40 ZZZZZZZZZZ.@.f.@
0x08A0: 0x02 0x66 0x01 0x3C 0x21 0x27 0x08 0x38 0x00 0x01 0x00 0x00 0x23 0xA3 0x00 0x02 .f.<...2 . #. .
0x08B0: 0x96 0x08 0xE5 0x08 0xE5 0x08 0xE4 0x01 0xEE 0x08 0xC4 0x08 0xE4 0x08 0xC0 0x08 ................
0x08C0: 0xC0 0x00 0x00 0x03 0x3A 0x04 0x40 0x02 0x66 0x04 0x40 0x02 0x66 0x01 0x3C 0x04 . .:.@.f.@.f.<.
0x08D0: 0x40 0x00 0xD7 0x00 0x01 0x04 0x40 0x08 0xD8 0x00 0x02 0x07 0x0D 0x08 0x30 0x00 @ . .@.....0..
0x08E0: 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0xEF 0x08 0xE8 0x00 0x00 0x08 0xE0 0x07 0x15 . #. .........%
0x08F0: 0x00 0x00 0xEB 0x00 0x9F 0x00 0x1A 0x00 0x00 0x03 0x05 0x11 0x01 0x12 0x01 0x12 . . . .......
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x08A0: 0x5A 0x06 0x6F 0x03 0x23 0x01 0x5E 0x25 0x2B 0x08 0x5E 0x00 0x01 0x00 0x00 0x23 Z.o.#.^...3 . #
0x08B0: 0x00 0x00 0x03 0x55 0x08 0xE8 0x08 0xE8 0x08 0xE7 0x02 0xAA 0x08 0xC7 0x08 0xE7 . .S............
0x08C0: 0xCA 0xD0 0x35 0x60 0x00 0x00 0x04 0x07 0x00 0x04 0x07 0x04 0x07 0x04 0x07 0x06 ..5` .. .......
0x08D0: 0x6F 0x03 0x06 0x6F 0x00 0x6A 0x00 0x01 0x06 0x6F 0x08 0x6B 0x00 0x02 0x0B 0x11 o..o .o.W .o ..
0x08E0: 0x03 0x30 0x00 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0x08 0x08 0xEC 0x00 0x00 0x0B ..... . #. .S..
0x08F0: 0x08 0x05 0x41 0xF0 0x05 0x6F 0x01 0x02 0x01 0x0F 0x00 0x62 0x07 0xF9 0x01 0xCC . . .{.... b....
Data+BSS=1806. Heap: used=0, max used=0, available=120. Stack: available=234, used=8, max used=95, unused=147 of current total 242

SP=0x8FD available=98 -> calloc(128,1)failed ->available=98
SP=0x8FD available=98 -> calloc(64,1)=0x810 ->available=32
SP=0x8FD available=32 -> calloc(64,1)failed ->available=32
SP=0x8FD available=32 -> calloc(32,1)failed ->available=32
SP=0x8FD available=32 -> calloc(16,1)=0x852 ->available=14
SP=0x8FD available=14 -> calloc(16,1)failed ->available=14
SP=0x8FD available=14 -> calloc(8,1)=0x864 ->available=4
SP=0x8FD available=4 -> calloc(8,1)failed ->available=4
SP=0x8FD available=4 -> calloc(4,1)failed ->available=4
SP=0x8FD available=4 -> calloc(2,1)=0x86E ->available=0
SP=0x8FD available=0 -> calloc(2,1)failed ->available=0
SP=0x8FD available=0 -> calloc(1,1)failed ->
__malloc_heap_start=2062|0x80E, &__heap_start=2062|0x80E, __brkval=2160|0x870, __malloc_margin=128, SP=2299|0x8FB, __malloc_heap_end=0, __flp=0
Data+BSS=1806. Heap: used=98, max used=98, available=22. Stack: available=136, used=8, max used=95, unused=49 of current total 144
Dump stack / end of RAM
0x07E0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x07F0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x42 0x64 0x75 Bdu
0x0800: 0x72 0x69 0x6E 0x67 0x20 0x73 0x65 0x74 0x75 0x70 0x00 0x00 0x00 0x00 0x40 0x00 ring setup @
0x0810: 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Z
0x0820: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0830: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x0840: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x11 .
0x0850: 0x10 0x00 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 . Z
0x0860: 0x00 0x11 0x08 0x00 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x11 0x02 0x00 0x5A 0x11 .. Z .. Z.
0x0870: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0880: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x0890: 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A 0x5A ZZZZZZZZZZZZZZZZ
0x08A0: 0x5A 0x06 0x6F 0x03 0x23 0x01 0x5E 0x26 0x2C 0x08 0x38 0x00 0x01 0x00 0x00 0x23 Z.o.#.^...3 . #
0x08B0: 0x00 0x00 0x03 0x53 0x08 0xE8 0x08 0xE8 0x08 0xE7 0x02 0xAA 0x08 0xC7 0x08 0xE7 . .S............
0x08C0: 0xCA 0xD0 0x35 0x60 0x00 0x00 0x04 0x07 0x00 0x04 0x07 0x04 0x07 0x00 0x00 0x06 ..5` .. .... .
0x08D0: 0x6F 0x03 0x06 0x6F 0x00 0x6A 0x00 0x01 0x06 0x6F 0x08 0x6B 0x00 0x02 0x0C 0x12 o..o .o.W .o ..
0x08E0: 0x03 0x30 0x00 0x02 0x00 0x00 0x23 0x33 0x00 0x08 0x08 0x08 0xEC 0x00 0x00 0x0B ..... . #. .P..
0x08F0: 0x08 0x05 0x41 0xF0 0x05 0x6F 0x00 0x00 0x00 0x00 0x5A 0x11 0x08 0x40 0x01 0xCC . . .{ Z..@..
Sleep 2 seconds with watchdog reset sNumberOfSleeps=0
Sleep 2 seconds with watchdog reset sNumberOfSleeps=1
Loading

0 comments on commit 2e8544d

Please sign in to comment.