AlexMelven
New member
pvvx, USE_CPU_SPEED на самом деле не меняет частоту проца? Вроде как она используется всего в одном месте - sys_read_sfg()
Нет - это не Ардуино. Старый остается, на случай если во время перехода к записям в новый сектор выключили питание. При переходе к новому сектору происходит паковка старых данных - удаляются старые записи. 3 сектора дают увеличение кол-ва записей до дырки во flash и при переполнении для новых записей стирается самый старый сектор.pvvx, Пытаюсь разобраться с сохранением настроек.
Правильно ли я понял, что для сохранения настроек используется флеш с адреса 0x79000 (495616), сектор размером 4096. Всего секторов - 3.
Функция get_addr_bscfg берет последний используемый сектор.
По какому принципу меняется номер сектора?
Только при переполнении сектора во время записи - пробуем удалить неиспользуемые объекты.
Старый сектор более не используется, так?
Зачем тогда менять номер сектора?
нет конечно Я оттуда качать недавно только научился.в github это все есть?
// Возвращает размер текущей сохраненной конфигурации в байтах
int32 ICACHE_FLASH_ATTR current_cfg_length(void)
{
fobj_head fobj;
uint32 base_addr = get_addr_bscfg(false); // поиск текушего сегмента
if(base_addr < 4) return -base_addr; // error
uint32 faddr = base_addr + 4;
do {
if(flash_read(faddr, &fobj, fobj_head_size)) return -4; // последовательное чтение из сегмента
if(fobj.x == fobj_x_free) {
break;
}
faddr += align(fobj_head_size + (fobj.n.size > MAX_FOBJ_SIZE ? MAX_FOBJ_SIZE : fobj.n.size));
} while(faddr <= (base_addr + FMEMORY_SCFG_BANK_SIZE - align(fobj_head_size+1)));
return faddr - base_addr;
}
А цель этого?pvvx, Написал функцию, выдающую размер текущего конфига, у меня получилось = 1240 байт.
Если сочтете необходимым, добавьте в github.
Дайте альтернативу.Если эти сохранения только для внутренних переменных прошивки, то мне думается, что вообще все эти навороты с 3-мя секторами лишнии.
Но проверки и описанной процедуры то нет.А список ид вроде же есть в flash_eep.h?
Тогда надо 2x 13 килобайт. Иначе - потеря данных, если требуется такое их кол-воАльтернатива, я думаю, использовать всю область 3-х секторов (12KB) под запись настроек.
Удаление старых и упаковка тоже, наверно, нужна.
А что-бы ему не работать? Так вся прошивка работает с опцией 48 кило IRAM.pvvx, Если в Rapid_Loader в call_user_start после Cache_Read_Enable(0, 0, 0) вставить свой код для копирования флеша, работать будет?
Если делаете по аналогии, т.е. прикручивание будет путем копирования к первому блоку стандартного загрузчика, то:Я так понимаю, что нужно изменить loader_flash_boot_addr и next_flash_header_addr.
Если так, как их посчитать?