(flash 2.1) is a free software which allows the user to access, flash and erase the ESP32 and ESP8266 internal memory. Meanwhile , flash introduces the set of features mentioned in the sections below.
The serial port is selected using the ComboBox Designated Serial Port, like COM1 (Windows). If no option is specified,esptool will enumerate all connected serial ports and try each one until it finds an Espressif device (ESP32 or ESP8266) connected.
The default baud rate is 115200bps. Different rates may be set using the Baud Rate ComboBox. This can speed up writing and reading flash operations.The baud rate is limited to 115200 when initial connection is established,higher speeds are only used for data transfers. Most hardware configurations will work with 230400, some with 460800, 921600 and/or 1500000 or higher.If you have connectivity problems then you can also set baud rates below 115200. You can also choose 74880, which is the usual baud rate used by the ESP8266 to output boot log information.
Binary data (Multiple flash addresses and file)can be written to the ESP's flash chip. The chip selection is optional when writing to ESP flash, as it will be detected when it connects to the serial port.The offset (address) and file name are crucial for this operation.
The file names created by "ELF to Bin" include the flash offsets as part of the file name. For other types of images, consult your SDK documentation to determine the files to flash at which offsets.Numeric values passed as offset address can only be specified in hex (ie 0x1000).
You may also need to specify flash mode and flash size, if you wish to override the defaults.
By default, the serial transfered data is compressed by esptool.py for better performance.
The Read flash feature allows reading back the contents of flash. for that you need to specify an address, a size, and a filename to dump the output to.
To erase the entire flash chip (all data replaced with 0xFF bytes) To erase a region of the flash, for example starting at an address (ie 0x20000)with a length (ie 0x4000 bytes) (16KB) The address and length must both be multiples of the SPI flash erase sector size. This is 0x1000 (4096) bytes for supported flash chips.
Converts an ELF file into the binary executable images which can be flashed and then booted into the chip. This command does not require a serial connection.
The image info outputs some information (load addresses, sizes, etc) about a .bin file.
Allows you to verify that data in flash matches a local file. Additional verification is not usually needed. However, if you wish to perform a byte-by-byte verification of the flash contents then you can do so with this feature.
Will dump a region from the chip's memory space to a file.
Allows the loading of an executable binary image directly into RAM, and then immediately executes the program contained within it.The binary image must only contain IRAM- and DRAM-resident segments. Any SPI flash mapped segments will not load correctly and the image will probably crash. The image info can be used to check the binary image contents.
The read & write Memory allow reading and writing single words (4 bytes) of RAM. This can be used to "peek" and "poke" at registers.
Intended for use when debugging hardware flash chip-related problems. It allows sending a RDSR, RDSR2 and/or RDSR3 command to the flash chip to read the status register contents. This can be used to check write protection status. The bytes number determines how many status register bytes are read:
- bytes 1 sends the most common RDSR command (05h) and returns a single byte of status.
- bytes 2 sends both RDSR (05h) and RDSR2 (35h), reads one byte of status from each, and returns a two byte status.
- bytes 3 sends RDSR (05h), RDSR2 (35h), and RDSR3 (15h), reads one byte of status from each, and returns a 3 byte status.
Intended for use when debugging hardware flash chip-related problems. It allows sending WRSR, WRSR2 and/or WRSR3 commands to the flash chip to write the status register contents. This can be used to clear write protection bits. The bytes option is similar to the corresponding option for read flash status and causes a mix of WRSR (01h), WRSR2 (31h), and WRSR3 (11h) commands to be sent to the chip. If bytes 2 is used then WRSR is sent first with a 16-bit argument and then with an 8-bit argument. Otherwise, each command is accompanied by 8-bits of the new status register value.
Allows you to read a 4 byte ID which forms part of the MAC address.
The efuse tab introduced in flash makes it easier to display and burn any efuse without having to go through a long summary in a terminal. Also having as a simple security layer , a dialog that prevents you from making any unwanted burn operation, makes it safer than the traditional ways.
You can now export the efuse table with all the values and states to an excel (xls) file.
flash uses a number of open source projects and libraries to work properly:
- [Python ]- https://www.python.org/
- [PyQt5] - https://pypi.org/project/PyQt5/
- [esptool] - https://github.com/espressif/esptool (@espressif) (@projectgus) (@themadinventor)
flash itself is open source with a public repository on GitHub.You can also download the LTS (release).
Or simply by cloning the repository to your machine :
git clone https://github.com/Gueni/flash.git
flash requires Python 3 to run.
Install python 3 from https://www.python.org/download/releases/3.0/
Install PyQt5 from https://pypi.org/project/PyQt5/
pip install pyqt5
python3 main.py
or simply download the latest release : (Latest Release)
- Optimize the Efuse feature.
- Enhance UI/UX.
- More Interactive Help Section.
- Secure Boot Feature.
- A dedicated Firmware merge library for ESP32.
- more file type choices for efuse export.
Licensed under the GNU General Public License, Version 3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at GNU.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.