• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Вопрос по RTC Memory

Sever44

Member
Всем успехов в Новом Году!
Методом тыка, вроде, разобрался. Но хотелось бы понять, как работает память.
Конкретно:
system_rtc_mem_read(64, rtc_mem, 15);
64 это первый блок пользовательской части памяти. Это понятно.
Как размечается эта часть памяти? На стандартные блоки, ил в соответствии с длинной переменных
(byte - 1 байт, int - 2 байта).
15 это количество переменных? Должно соответствовать количеству сохраняемых переменных, или может быть назначено "с запасом"?
Знатоки, просветите, пожалуйста.
 

nikolz

Well-known member
Всем успехов в Новом Году!
Методом тыка, вроде, разобрался. Но хотелось бы понять, как работает память.
Конкретно:
system_rtc_mem_read(64, rtc_mem, 15);
64 это первый блок пользовательской части памяти. Это понятно.
Как размечается эта часть памяти? На стандартные блоки, ил в соответствии с длинной переменных
(byte - 1 байт, int - 2 байта).
15 это количество переменных? Должно соответствовать количеству сохраняемых переменных, или может быть назначено "с запасом"?
Знатоки, просветите, пожалуйста.
user data in RTC memory. Only user data area can be used by user.
|<--------system data--------->|<-----------------user data--------------->|
| 256 bytes | 512 bytes |
Note:
RTC memory is 4 bytes aligned for read and write operations. Parameter
des_addr means block number(4 bytes per block). So, if we want to save some
data at the beginning of user data area, des_addr will be 256/4 = 64,
save_size will be data length.
Prototype:
bool system_rtc_mem_write (uint32 des_addr,void * src_addr,uint32 save_size)
Parameter:
uint32 des_addr : destination address (block number) in RTC memory,
des_addr >=64
void * src_addr : data pointer.
uint32 save_size : data length ( byte)
Return:
true: succee
---------------------
Prototype: bool system_rtc_mem_read (uint32 src_addr,void * des_addr,uint32 save_size)
Parameter:
uint32 src_addr : source address (block number) in rtc memory, src_addr >=
64
void * des_addr : data pointer
uint32 save_size : data length, byte
Return:
true: succeed
false: fail
 

Sever44

Member
user data in RTC memory. Only user data area can be used by user.
|<--------system data--------->|<-----------------user data--------------->|
| 256 bytes | 512 bytes |
Note:
RTC memory is 4 bytes aligned for read and write operations. Parameter
des_addr means block number(4 bytes per block). So, if we want to save some
data at the beginning of user data area, des_addr will be 256/4 = 64,
save_size will be data length.
Prototype:
bool system_rtc_mem_write (uint32 des_addr,void * src_addr,uint32 save_size)
Parameter:
uint32 des_addr : destination address (block number) in RTC memory,
des_addr >=64
void * src_addr : data pointer.
uint32 save_size : data length ( byte)
Return:
true: succee
---------------------
Prototype: bool system_rtc_mem_read (uint32 src_addr,void * des_addr,uint32 save_size)
Parameter:
uint32 src_addr : source address (block number) in rtc memory, src_addr >=
64
void * des_addr : data pointer
uint32 save_size : data length, byte
Return:
true: succeed
false: fail
Большое спасибо.
Пожалуйста, укажите ссылку на документ - источник информации.
 

nikolz

Well-known member
Большое спасибо.
Пожалуйста, укажите ссылку на документ - источник информации.
вот здесь в документах
ESP8266EX Resources | Espressif Systems
есть все
по вашему вопросу смотрите
ESP8266 Non-OS SDK API Reference
2c-esp8266_non_os_sdk_api_reference_en.pdf
3.3.23. system_rtc_mem_write ...................................................................................................20
3.3.24. system_rtc_mem_read ....................................................................................................21
 

Сергей_Ф

Moderator
Команда форума
Sever44, Настоятельно советую ознакомиться с Правилами форума
5.1. Если участник форума дал вам хороший совет, который помог вам в решении вашей проблемы не следует помещать сообщение с текстом "Спасибо! Ты супер!!!". На нашем форуме благодарность принято выражать путем поднятия репутации конкретного участника - нажмите ссылку "Мне нравится" в нижней правой части поста.
 
Сверху Снизу