espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.49k stars 7.26k forks source link

Extending ESP32-S3-WROOM-1-N16R8 Storage with External Winbond SPI Flash for Large Scale Applications (IDFGH-12645) #13639

Closed NEHAL608 closed 1 month ago

NEHAL608 commented 5 months ago

Answers checklist.

General issue report

Hello,

I am currently working on a project with the ESP32-N16R8, where we are leveraging multiple advanced features including a ChatGPT-like model, ESP BLE Mesh, and ESP RainMaker. As these components are significantly increasing our memory demands, we are approaching the limits of the built-in 16 MB flash memory.

Given the complexity and memory requirements of our application, we are considering the integration of an external Winbond SPI flash memory for additional storage capacity. Here are some specifics about our setup and needs:

Device: ESP32-N16R8 Current Usage: ChatGPT Model: Running language processing tasks ESP BLE Mesh: Managing multiple BLE nodes ESP RainMaker: Implementing cloud integration Memory Concerns: Nearing the 16 MB internal flash capacity, necessitating external storage solutions for both program code and data. Questions:

Is it technically feasible to use external Winbond SPI flash to extend the storage capacity beyond the internal 16 MB flash for such a complex application? Are there any known limitations or performance concerns when integrating external SPI flash with ESP32 for high-demand applications like ours? Could you recommend best practices or existing implementations that leverage external flash memory for similar scale applications? Any guidance, examples, or references to relevant documentation would be greatly appreciated as we navigate this expansion of our project's memory capabilities.

Thanks and regards,
Nehal

igrr commented 5 months ago

@NEHAL608 For information about connecting an external flash chip for data storage, please refer to examples/storage/ext_flash_fatfs example.

It is not possible to use external flash for code storage. Currently available ESP chips can run code only from one flash chip at a time. However even with the functionality you describe, it is unlikely that the code size (excluding data) would exceed half of the 16 MB Flash capacity.

I would also recommend considering the ESP32-S3-WROOM-2-N32R8V for your application. Not only it has 32 MB flash capacity, it also uses an Octal SPI interface for Flash and PSRAM, which should result in better performance for demanding applications such as yours.