RisalDash RisalDash

Qoʻllanma · Xotira · Saqlash

Flash, SRAM, NVS — maʼlumotlaring aslida qayerda yashaydi

Har bir ESP boshlovchisini uchta savol dovdiratib qoʻyadi: nega sozlamalar qayta yuklashdan keyin yoʻqoladi? nega oʻzgaruvchilar tiklanib (nolga) qaytadi? nega RAM tugab qoladi? Uchalasi ham bitta narsaga borib taqaladi — qaysi xotira nimani saqlashini bilish. Mana xarita va konfiguratsiyani toʻgʻri saqlash yoʻli.

XotiraNVSPreferencesEEPROMESP32ESP8266
ESP32 xotira xaritasi: flesh boʻlimlari (app, OTA, NVS, SPIFFS) va SRAM hududlari
Flesh qayta yuklashda saqlanadi, SRAM — yoʻq; sozlamalar joyi NVS.

Xotira turlari

Nega sozlamalaring yoʻqoladi

Oʻzgaruvchilar SRAMda yashaydi, u esa oʻzgaruvchan — quvvatni oʻchirding, hammasi yoʻq boʻldi. Wi-Fi parolini, kalibrovka qiymatini yoki foydalanuvchi sozlamasini qayta yuklashlar orasida saqlab qolish uchun uni energiya-mustaqil xotiraga yozishing kerak: NVS yoki flash.

Konfiguratsiyani toʻgʻri saqlaymiz — Preferences (NVS)

ESPda EEPROM.hni unut. Preferences kutubxonasidan foydalan — u nomlangan, tiplangan qiymatlarni NVSga yozadi va yeyilishni tekislashni oʻzi uddalaydi:

#include <Preferences.h>
Preferences prefs;

void saveConfig(const char* ssid, int interval) {
  prefs.begin("cfg", false);          // "cfg" nom fazosi, oʻqish/yozish
  prefs.putString("ssid", ssid);
  prefs.putInt("interval", interval);
  prefs.end();
}

void loadConfig() {
  prefs.begin("cfg", true);           // faqat oʻqish
  String ssid   = prefs.getString("ssid", "");     // agar boʻsh boʻlsa, standart qiymat
  int    every  = prefs.getInt("interval", 60);
  prefs.end();
}

setup() ichida loadConfig()ni chaqir — va sozlamalaring har qayta yuklashdan keyin joyida, birinchi safar esa maʼqul standart qiymatlar bilan. Kutubxonalar Wi-Fi maʼlumotlarini aynan shunday saqlaydi.

EEPROM vs Preferences

Klassik Arduinoda EEPROM — haqiqiy temir. ESPda esa u yoʻq: EEPROM.h flashda blokni emulyatsiya qiladi, baytlab manzillanadi va maʼlumotni buzish oson. Preferences (NVS) xom bayt siljishlari oʻrniga senga nomlangan kalitlar, tiplar va yeyilishni tekislashni beradi. Har qanday yangi narsa uchun — faqat shuni ishlat.

RAM tugab qolyapti

SRAM kichik, uni tugatib yoki fragmentlab yuborish oson:

Nima qayerda saqlanadi — shpargalka

Qaysi xotira oʻzgaruvchan, qaysi biri yoʻqligini bilib olishing bilan sirlar tarqab ketadi: sozlamalar saqlanadi, oʻzgaruvchilar oldindan aytsa boʻladigan tarzda tutadi, RAM esa tugashdan toʻxtaydi.

Qiymat faqat rebutni emas, chuqur uyquni ham omon qolsin degan boʻlsang? Bu — RTC xotira.