ESP32S3 Bare-Metal Hang on Data SRAM1 Write
Posted: Thu Jul 17, 2025 12:45 am
Hello there!
I'm doing a project with my ESP32S3 that is bare-metal, and so as a result I have to develop the bootloader and kernel (or otherwise however I want to use the resources) myself.
In my bootloader I want to zero out sections of SRAM1 Data memory, but if I do this at around >1024 bytes into SRAM1 data (0x3FC88000) memory it will just hang, and I cannot figure out why. If I simply read the memory back and place it onto UART0 there is no issues, and I can even read the entirety of SRAM1 data memory (0x3FC88000 - 0x3FCEFFFF) but if I edit the memory in data memory then it will hang. My bootloader does not store any data but accesses peripherals and other sections of memory directly, this is by design. I also checked to ensure my stack is not the issue, the stack is nowhere near the section of memory I am editing, so it cannot be the issue. Also, I have my vector table in place and interrupts working, and there are no interrupts on the hang, meaning it's not stuck in a vector handler either.
Has anyone experienced this issue before writing their own bare-metal projects? I would love any kind of advice, please.
I'm doing a project with my ESP32S3 that is bare-metal, and so as a result I have to develop the bootloader and kernel (or otherwise however I want to use the resources) myself.
In my bootloader I want to zero out sections of SRAM1 Data memory, but if I do this at around >1024 bytes into SRAM1 data (0x3FC88000) memory it will just hang, and I cannot figure out why. If I simply read the memory back and place it onto UART0 there is no issues, and I can even read the entirety of SRAM1 data memory (0x3FC88000 - 0x3FCEFFFF) but if I edit the memory in data memory then it will hang. My bootloader does not store any data but accesses peripherals and other sections of memory directly, this is by design. I also checked to ensure my stack is not the issue, the stack is nowhere near the section of memory I am editing, so it cannot be the issue. Also, I have my vector table in place and interrupts working, and there are no interrupts on the hang, meaning it's not stuck in a vector handler either.
Has anyone experienced this issue before writing their own bare-metal projects? I would love any kind of advice, please.