Здравствуйте. Суть вопроса такая:
- есть ESP32. Возможно ли как-то залить во флеш-память несколько разных программ и по необходимости загружать одну или другую. Оперативной памяти хватает только на 1 экземпляр программы, флеш памяти кушается примерно 15-20%. Как я понимаю программа лежит во флеш памяти и при запуске микроконтроллера уже занимает оперативную память в соответствии с кодом программы.
Technical Reference Manual на ESP32 открывали? Читали? Похоже что нет...
Читаем, параграф:
Цитата:
1.3.3 External Memory
The ESP32 can access external SPI flash and SPI SRAM as external memory. Table 4 provides a list of external
memories that can be accessed by either CPU at a range of addresses on the data and instruction buses. When
a CPU accesses external memory through the Cache and MMU, the cache will map the CPU’s address to an
external physical memory address (in the external memory’s address space), according to the MMU settings. Due
to this address mapping, the ESP32 can address up to 16 MB External Flash and 8 MB External SRAM
Т.е. - исходя из первых 2-х предложений можно сделать вывод, что ESP32 может выполнять код напрямую из подключенной по SPI внешней памяти. На лету. Ничего никуда не загружая и не тратя на это ОЗУ. Эта память
по чтению отображается на адресное пространство CPU, как если бы это была внутренняя память. А наличие кеша (32КБ) делает такое обращение по скорости почти не отличимым от скорости доступа к внутренней флешь памяти (в тех МК, где она имеется). SPI-флешь вы можете подключить объёмом до 16МБ. Вам мало 16MB на код и надо ещё больше? Серьёзно???
PS: Конечно можно разбить код на множество программ, загружаемых в ОЗУ и выполняемых по отдельности. Но смысла в таком мазохизме нет никакого....

PPS: Или в TRM наврали насчёт возможности выполнения из внешней памяти? Признаюсь - errata не открывал и не читал. Заранее посыпаю голову пеплом...
