extern "C" { #include "user_interface.h" } byte complete_rtc_mem[512]; void hexDump(char *desc, void *addr, int len) { int i; unsigned char buff[17]; unsigned char *pc = (unsigned char*)addr; // Output description if given. if (desc != NULL) Serial.printf ("%s:\n", desc); if (len == 0) { Serial.printf(" ZERO LENGTH\n"); return; } if (len < 0) { Serial.printf(" NEGATIVE LENGTH: %i\n",len); return; } // Process every byte in the data. for (i = 0; i < len; i++) { // Multiple of 16 means new line (with line offset). if ((i % 16) == 0) { // Just don't print ASCII for the zeroth line. if (i != 0) Serial.printf (" %s\n", buff); // Output the offset. Serial.printf (" %04x ", i); } // Now the hex code for the specific character. Serial.printf (" %02x", pc[i]); // And store a printable ASCII character for later. if ((pc[i] < 0x20) || (pc[i] > 0x7e)) buff[i % 16] = '.'; else buff[i % 16] = pc[i]; buff[(i % 16) + 1] = '\0'; } // Pad out last line if not exactly 16 characters. while ((i % 16) != 0) { Serial.printf (" "); i++; } // And print the final ASCII bit. Serial.printf (" %s\n", buff); } void setup() { //setup serial Serial.begin(115200); Serial.printf("\n\nsystem start - dump RTC\n"); //read memory system_rtc_mem_read(0, complete_rtc_mem, 512); //dump memory to console hexDump ("rtcmem", &complete_rtc_mem, sizeof(complete_rtc_mem)); //modify memory for(int i=0;i<512;i++){ complete_rtc_mem[i]++; } //write back to memory system_rtc_mem_write(0, complete_rtc_mem, 512); //deepsleep for 5 seconds (remember to connect RST and GPIO16) ESP.deepSleep(5*1000*1000, WAKE_RF_DISABLED); } void loop() { //never reach }