Arm Cortex-A: Memory window shows inaccessible memory incorrectly in virtual memory area

22-Jul-2024

When using the winIDEA Memory window to view memory that should be inaccessible, you may notice a discrepancy in the memory display between the Virtual and IP memory areas. Specifically, the Virtual memory area displays "00" values instead of the expected "??," while the IP memory area correctly shows memory as "??." This also extends to the use of winIDEA SDK     readMemory(), where access status indicates that all bytes are correctly read in the virtual memory area.


Possible solution

The observed behavior is expected and can be explained as follows:


Virtual memory area

When you view memory in the Virtual memory area, winIDEA operates in a mode where the core is stopped, typically in a secure state. In this state, the core has the ability to access memory areas that may be restricted when the core is running in a non-secure state. Consequently, the Virtual memory area may display memory that would normally be inaccessible in a running, non-secure state, which is why you see "00" values.


IP memory area

In the IP memory area, you are viewing memory as it exists in the non-secure virtual state. When the core is running in a non-secure mode, it may not have access to certain memory regions, and this is correctly reflected in the IP memory area, which shows "??" to indicate inaccessible memory.



To achieve consistency between the Virtual and IP memory areas, you would need to have an application or code that switches the core to non-secure mode. In this case, both memory windows, Virtual and IP,  would show the same memory contents as the core would be in a non-secure state, and the inaccessible memory regions would display as "??."

Was this answer helpful?