Привет!
Нашел в одном проекте любопытную организацию записи во flash: держим в ram массив размеров FLASH_PAGE_SIZE и как только он заполнится - записываем одним большим куском во flash.
Абсолютно не понимаю зачем так сделано, можно же по несколько байт записывать - и программа будет более равномерно выполняться, да и так проще гораздо.
Единственная версия - это чтобы изменять несколько байт во flash и не затрагивать все остальные,
но в коде такое нигде не используется.Может быть автор хотел так сэкономить ресурс?
Но разве это повлияет на ресурс памяти?
PS: Начинаю догадываться, что такая хитрая запись сделана для экономии электроэнергии, но в данном случае о ней речи не идет, видимо из другого проекта перенесена.Ммм! А можно ли объявить массив вот так:
Код
__root const unsigned char place_for_archive[2048] @ 0x20000; //20000 - в начало страницы
И далее читать/записывать flash память, взяв указатель от
place_for_archive? Только как бы его в начало страницы поместить?
Это же поможет избежать ситуацию, когда код программы разрастется и наедет на ту область flash памяти, в которую пишем некий архив событий
По идеи линкер нас об этом предупредит.
Сообщение отредактировал 93 - Oct 21 2017, 13:48