Read-Modify-Write Flash

From SEGGER Wiki
Jump to: navigation, search

This article describes how to use the Read-Modify-Write (RMW) function in the J-Link software. This article assumes that there is already a basic knowledge about flash programming in general.

The following example project will be shown for a Infineon XMC4500 MCU but can be applied to any other MCU. This can for example be used to split physical memory sectors into smaller logical ones.

By default the Read-Modify-Write threshold is set to 1 kB in order to allow read-modify-write of single bytes in flash (e.g. when editing bytes in memory windows of IDEs).

To increase the threshold J-Link offers the following command string: SetFlashDLNoRMWThreshold = <value>

A more detailed description is available in the J-Link User Manual (UM08001).

Sample project

The sample project is designed to be used with J-Link and a Infineon XMC4500 MCU. It will we automatically executed when starting the .bat file.

The .bat and .jlink file can be used as a reference for your own RMW flash projects.

How to

For the example project the SetFlashDLNoRMWThreshold value is set to 0xFFFF (64 kB RMW threshold). This means that the J-Link DLL will perform a read-modify-write of flash memory regions <= 64 kB. Make sure you adjust this value depending on the device and sector you are trying to modify.

To use the example project follow these steps:

  • Unzip the contents of the to a example folder
  • execute StartTest.bat
  • The J-Link commander will open and you should see the following output
Flash Success.PNG
  • If your output matches the screenshot, the RMW was successful (this applies only to the example project, the output on your own project might vary)