Please enable JavaScript to view this site.

winIDEA Help

Version: 9.21.246

Navigation: Storage programming

Scroll Prev Top Next More


In this topic

Internal Flash Programming

External Flash programming

FPGA bitstream programming

Live programming





Manipulation of many non-volatile storage devices in embedded systems such as on-chip FLASH memories, external FLASH memories, (Q)SPI FLASH devices and other storage devices is enabled by UMI technology. Manipulating storage device includes erasing, programming, verifying the content, securing, filling etc.



Internal Flash Programming

Internal CPU program Flash is programmed through the standard debug interface. The debugger recognizes which code from the download file fits in the internal flash and programs it during the debug download.


Click to enlarge

Internal Flash memory layout



External Flash programming

External Flash programming is supported for SPI Flashes (NOR - Serial FLASH Discoverable Parameters, and SPI NAND), eMMC, and HyperFlash.


Click to enlarge

External Flash memory layout


Unlike internal flash device which is programmed during the debug download, external flash devices are programmed on command.



It is highly recommended to reset the target microcontroller before and after any external flash programming procedure. In the first case, this makes sure that the flash programming monitor executes correctly, and in the second case, this restores the default out-of-reset microcontroller state after the flash programming monitor uses some of the core register for its operation.


External storage devices have to be added manually, unlike internal storage devices, which are automatically added to the Hardware drop-down.


SDK Examples

External storage devices can be accessed via winIDEA SDK. Use the CStorageDeviceController. See the examples for a quick start. All operations from winIDEA are available in SDK. Sector erase operation, which is not available from winIDEA, is available via SDKs.



SPI NAND External Flash

SPI NAND Flash provides an high density non-volatile memory storage solution for embedded systems, based on an industry-standard NAND Flash memory core.


Click to enlarge

SPI NAND Flash memory layout


When adding SPI NAND device, choose a device name with MainArray suffix if you want to program the Flash by using only Main Flash Array.



winIDEA can simulate usage of Main array to behave same as NOR flash. Use the flash with the “Main Array” suffix.



You can program SPI NAND Flash by using:

Only Main Flash Array

Entire Flash


Main Flash Array only

Entire Flash (Main Array + Spare Bytes)

The winIDEA Flash size is defined as the size of the Main Array of the device.

The winIDEA Flash size is defined as twice the size of the device Main Array.

Binary files can be programmed directly to the Flash.

Binary files cannot be programmed directly to the Flash, because the address space contain empty spaces after Spare Bytes.

Auto ECC calculation is forced and cannot be disabled.

You can enable/disable Auto ECC calculation.

You are not allowed to program Spare Bytes.

You are allowed to program Spare Bytes.



Bad block markers

If winIDEA finds a bad block marker (non 0xFFFF at the Bad Block Marker Area in the first Spare Area in the block), it skips the Flash erase or program operation of this block. Warning about skipping this block is added to the Progress window.



New bad block found

If the Flash erase or program operation fails, a new bad block is found. winIDEA automatically mark the block, where it fails, with a bad block marker. The next erase or program operations on this block is in the future skipped.



Serial Flash Discoverable Parameter External Flash

The Serial Flash Discoverable Parameter (SFDP) standard provides a consistent method of describing the functional and feature capabilities of serial Flash devices in a standard set of internal parameter tables. These parameter tables can be interrogated by host system software to enable adjustments needed to accommodate divergent features from multiple vendors.

The SFDP standard defines a common parameter table describing important device characteristics and serial access methods used to read the parameter table data. Special Function parameter tables for erase sector address map and 4-byte address instructions are added in this revision of this standard. Additional parameter headers and tables can be specified by future revisions of this standard or by flash vendors and are optional.

SFDP table information aligns with JEDEC-standard JESD216 for Serial Flash Discoverable Parameters. Qualified implementation for winIDEA is 9.17.136; supporting SFDP revisions: 1.0 (JESD216), 1.5 (JESD216A), 1.6. (JESD216B). Revisions are backwards compatible. Refer to JEDEC-standard  for a complete overview of the SFDP table definition.


Click to enlarge

SFDP memory layout



Due to UMI Programming limitations, the maximum page size to be programmed is currently 256B, so SFDP page size field is ignored if larger page size is defined (performance limit).

Methods for entering quad mode are currently skipped due to inconsistency regarding quad enabling procedures in different devices.

For Microchip/SST devices a global protection unlock command is ran prior to execution of any other commands. Devices are discovered by JEDEC ID (1st byte = 0xBF).



eMMC External Flash

eMMC (embedded MultiMediaCard) is an internal storage card which is widely used as a temporary storage medium for a portable device and it is soldered to the motherboard.


Click to enlarge

Click to enlarge

eMMC Flash memory layout



FPGA bitstream programming

Unlike internal Flash device which is programmed during the debug download, bitstream is loaded on command.



Live programming

winIDEA allows modifying flash contents during debug sessions. Typical use case is changing user parameters, when debugging an application. Read more about Modifying memory content.



Editing flash memory during debug session is disabled on some devices.




1. If any core is running from the same flash or using the same RAM operation of that core can fail. To prevent this, multi-core synchronization must be enabled.

2. If any interrupt is running during flash modification it can either change the monitor or it can read wrong unexpected data from RAM. To prevent this, disable interrupts (if possible).

3. If any peripheral module (DMA for example) is running during flash modification, it can either change the monitor or it can read wrong unexpected data from RAM. To prevent this, suspend peripherals (if possible).


During flash modification winIDEA is using a monitor, which is loaded to internal RAM. Before the flash sector can be programmed sector, must be erased.



It is strongly recommended to modify Internal Flash using download only or immediately after reset before any peripheral or secondary core is running. It is also recommended to perform CPU reset after Flash operation.


Copyright © 2024 TASKING Germany GmbH