We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
After I have enabled MMU, I want to write a value to a specify address by DS-5. The DS-5 reports an error as following:
memory set_typed EL3:0x0000000080006000 (unsigned int) (0x1)ERROR(TAD11-NAL23): ! Failed to write 4 bytes to address EL3:0x0000000080006000! Error accessing memory.
Then I read this address by DS-5 again. I find the value has been wrote to the address.
By the way, if I disable MMU, I can write a value to a specify without any error.
What does DS-5 check, after it writes a value to a specify address?
Thanks!
Hello Amao,
This _may_ be due to the debugger re-reading the address to verify that the write occured. Depending on what exactly is at this address, this may cause issues. You can disable this either by creating a memory region around this address with noverify specified, or use the memory set command, and specify noverify that way.
Hi Ronan Synnott,
Thank your reply.
I follow your indication to try with noverify attribute, but there is the error by DS-5 still. The command as below:
memory set EL3<verify=0>:0x80006000 32 0xffffERROR(TAD11-NAL23): ! Failed to write 4 bytes to address EL3:0x0000000080006000! Error accessing memory.
BTW, the SOC that I am verifying is being developed.
If I disable MMU, the following commands is ok.
memory set EL3<verify=0>:0x80006000 32 0xffffmemory set EL3:0x80006000 32 0x5a5a
I attach a memory layout of 'info memory' of DS-5 and my MMU configuration.
Does the MMU remap this address to another, and/or change the access permissions of this address? DS-5 has a handy MMU view (as well as the mmu commands) to help you investigate this.
The SP: prefix refers to "secure world, physical memory". I wonder if the system responds to say that secure accesses are not allowed (even though they are, as the write seemingly completes) - hence the debugger flags that the write failed.
The virtual address, 0x80006000 is mapped to physical address 0x80006000. I can verify it by MMU view.
I try to change 0x80006000 to None-secure world, as below:
The error is reported by DS-5 still.
Hello Ronan Synnott and Elizabeth Weidmann,
Thank you very much!
The reason is that I have set a software breakpoint by DS-5 before enable MMU. Unfortunately, the region where software breakpoint resides is set as read-only in page-table. So, when MMU has been enabled, the DS-5 Debugger will attempt to re-write any software breakpoints that have been set when any write operation occurs in order to ensure the write operation has not removed the software breakpoint. The writing to read-only region will trigger a sync error.
The solution is that use hardware breakpoints in this case, instead of software breakpoints.