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.
I'm using ADS Version: 2024.b-1 and have a project where I can run and debug code using the ADS suppled Coretex-A720 FPV model. I would like to run / debug the same code on a different FPV model not supplied under the ADS install.
I followed the instructions here to create a model connection
https://developer.arm.com/documentation/107644/0100/Using-Arm-Development-Studio-to-debug-Fast-Models-systems/Import-the-FVP-into-Arm-Development-Studio
The error I run into is in the Disassembly: window I see
"EL1N:0x0000000000000000 : Failed to read 4 bytes from address EL1N:0x0000000000000000"
Any tips or advice would be much appreciated. Thanks.
Hello, I have moved your query to the Arm Development Studio dedicated forum.
I don't know which FVP you are using, is memory implemented at this address?
I see it is address 0x0. Perhaps this is ITCM memory that is not yet enabled?
If you connect without any code loaded, can you access this address?
Can you access it at higher exception levels (EL3:0x0).
If the FVP you are using is public, can you advise which you are using?
Ronan, thanks for the replay,
Memory should be defined at address 0. The output of "info memory" is listed below:
Num Enb Low Addr High Addr Attributes Description1: y NP:0x0000000000000000 NP:0xFFFFFFFFFFFFFFFF rw, nocache, verify Memory accessed using normal world physical addresses2: y N:0x00000000 N:0xFFFFFFFF rw, nocache, verify Memory accessed using normal world addresses3: y EL1N:0x0000000000000000 EL1N:0xFFFFFFFFFFFFFFFF rw, nocache, verify Memory accessed using EL1 normal world addresses
I also attempted to load code manually using the command "load my.axf" which produced the error message below.ERROR(CMD16-TAD59-NAL82): ! Failed to load "my.axf"! Download of 131,512 bytes to address EL1N:0x0000000000000000 failed while writing block of 1,024 bytes to address EL1N:0x0000000000000000! Error attempting to perform memory operations
I revied information about the error code "CMD16-TAD59-NAL82" from here community.arm.com/.../error-cmd16-tad59-nal33 however I don't see a reason why that would be applicable in this case
Here are a few other details for register settings related to memory:
SCTLR.M = 0 (Translation disabled)ID_AA64MMFR0_EL1.PARange = 48 bits
For the time being EL3 and EL2 are disabledID_AA64PFR0_EL1.EL3 = 0ID_AA64PFR0_EL1.EL2 = 0ID_AA64PFR0_EL1.EL1 = 1ID_AA64PFR0_EL1.EL0 = 1
Thanks for any advice.
All the debugger knows is that it tried to write to the address on the target, and it failed to verify that it completed (as it is a read error).
As a simple test - can you attempt to access the address directly on the command line, with something like:
memory set EL1N:0x0 32 0xDEADBEEF
Does this complete successfully?
I'm not sure what the effect of those bits would be - they are read-only on the standard FVP and so I cannot modify.
I see the same error irrespective of address used:
memory set EL1N:0x0 32 0xDEADBEEF ERROR(TAD11-NAL82): ! Failed to write 4 bytes to address EL1N:0x0000000000000000! Error attempting to perform memory operations
memory set EL1N:0x8000000 32 0xDEADBEEF ERROR(TAD11-NAL82): ! Failed to write 4 bytes to address EL1N:0x0000000008000000! Error attempting to perform memory operations
dump memory /tmp/foo 0x0 0x7ERROR(TAD10-NAL82): ! Failed to read 8 bytes from address EL1N:0x0000000000000000! Error attempting to perform memory operations
dump memory /tmp/foo 0x80000000 0x80000000ERROR(TAD10-NAL82): ! Failed to read 1 bytes from address EL1N:0x0000000080000000! Error attempting to perform memory operations
Try loading the image directly on the FVP (ie do not use Debugger at all) via the command line:
fvp_executable -a image.axf
All signs point to an issue with the FVP, not the debugger...
Running from the command line the model and code work as expected.
Do any of these command complete successfully?
The 32 or 8 reflects the width of the bus access.
NP/SP refer to (non)secure physical addresses.
memory set NP:0x0 32 0xDEADBEEF memory set SP:0x0 32 0xDEADBEEF memory set NP:0x0 8 0xDEADBEEF memory set SP:0x0 8 0xDEADBEEF
Also, do you use Iris or CADI to connect to your FVP?
HiMy name is Stephen and I work at Arm.To follow-up on my colleague Ronan's suggestions, if the Debugger is connected to your model via Iris, then you can get diagnostic logging information by adding the "--iris-log" (or -i") option to the Model Parameters field in the connection dialog.FVP_Base_Cortex-A720 --helpshows-i, --iris-log Iris log level (may be specified multiple times), example: -ii for level 2When I try this with FVP_Base_Cortex-A720, I see a lot of initial connection logging in the Target Console.Once that settled down:memory set EL1N:0x0 32 0xDEADBEEFreported:IrisGI:REQ:2599: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_write(instId:44 /*0x2cu*/, spaceId:2, address:0, data:[0xdeadbeef], byteWidth:4, count:1)IrisGI:RES:2599: rddi_debug <- result={}IrisGI:REQ:2600: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_read(instId:44 /*0x2cu*/, spaceId:2, address:0, byteWidth:4, count:1)IrisGI:RES:2600: rddi_debug <- result={data:[0xdeadbeef]}followed by the Debugger reading more data to update the (larger) Disassembly view:IrisGI:REQ:2605: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_read(instId:44 /*0x2cu*/, spaceId:0, address:0, byteWidth:4, count:128 /*0x80u*/)IrisGI:RES:2605: rddi_debug <- result={data:[0xe800e800deadbeef, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010,:0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010]}Please could you try the same?Furthermore, the Arm-supplied FVP_Base_Cortex-A* family models all have secure memory. For all the Examples provide in Arm DS, this is disabled with:-C bp.secure_memory=falseMaybe you could try that too?Stephen
FVP_Base_Cortex-A720 --help
-i, --iris-log Iris log level (may be specified multiple times), example: -ii for level 2
IrisGI:REQ:2599: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_write(instId:44 /*0x2cu*/, spaceId:2, address:0, data:[0xdeadbeef], byteWidth:4, count:1)
IrisGI:RES:2599: rddi_debug <- result={}
IrisGI:REQ:2600: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_read(instId:44 /*0x2cu*/, spaceId:2, address:0, byteWidth:4, count:1)
IrisGI:RES:2600: rddi_debug <- result={data:[0xdeadbeef]}
IrisGI:REQ:2605: rddi_debug -> component.FVP_Base_Cortex_A720.cluster0.cpu0 memory_read(instId:44 /*0x2cu*/, spaceId:0, address:0, byteWidth:4, count:128 /*0x80u*/)
IrisGI:RES:2605: rddi_debug <- result={data:[0xe800e800deadbeef, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010,:0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010, 0xe800e800e7ff0010]}
-C bp.secure_memory=false
I ran with --iris-log ( the bp.secure_memory parameter is not available I assume that is expected as EL3 is disabled) after loading I see slow but continuous stream of messages like the ones below. I did not see any additional log messages after the "memory set" command
IrisGI:RES:1599: rddi_debug <- result={data:[0x1]}IrisGI:REQ:1600: rddi_debug -> component.project.cpu.cpu0 resource_read(instId:10 /*0xau*/, rscIds:[0x2a9])IrisGI:RES:1600: rddi_debug <- result={data:[0x1]}IrisGI:REQ:1601: rddi_debug -> component.project.cpu.cpu0 resource_read(instId:10 /*0xau*/, rscIds:[0x2a9])IrisGI:RES:1601: rddi_debug <- result={data:[0x1]}IrisGI:REQ:1602: rddi_debug -> component.project.cpu.cpu0 resource_read(instId:10 /*0xau*/, rscIds:[0x2a9])IrisGI:RES:1602: rddi_debug <- result={data:[0x1]}IrisGI:REQ:1603: rddi_debug -> component.project.cpu.cpu0 resource_read(instId:10 /*0xau*/, rscIds:[0x2a9])
Hi again Brad,
Sorry your message got filtered by the moderation software, it can be very sensitive. Don't worry, no harm done.
You can use <FVP> --list-params > params.txt to see all the available parameters, bp.secure.memory may be something slightly different on your FVP.
Looking at the log, I see a lot of REQuests and RESponses, which are likely the debugger detecting the individual blocks inside the FVP.
IrisGI:REQ:1600: rddi_debug -> component.project.cpu.cpu0 resource_read(instId:10 /*0xau*/, rscIds:[0x2a9]) IrisGI:RES:1600: rddi_debug <- result={data:[0x1]}
It is worrying that there is no log after trying to perform the write... this says to me that the debugger never manages to pass that request to the model (this log is from the FVPs point of view).
This may be a difficult one to solve in a public forum... you may need to raise an official (private) support case from the Support section below. You can reference this thread so that the team have some history.
Thanks for looking. I opened a support request.
Just in case this helps here or with the support ticket I found the following in the debugger error log
!ENTRY com.arm.debugger.ux 4 0 2025-06-23 14:02:37.574!MESSAGE Unable to map memory space NON_SECURE!STACK 0com.arm.debug.interpreter.ds.DSException: Failed to load "my.axf" at com.arm.debug.interpreter.ds.commands.file.AbstractFileCommand.executeOrUnload(AbstractFileCommand.java:84) at com.arm.debug.interpreter.ds.commands.file.LoadCommand.execute(LoadCommand.java:48) at com.arm.debug.interpreter.ds.commands.file.LoadCommand.execute(LoadCommand.java:1) at com.arm.debug.interpreter.ds.DSInterpreter$3.run(DSInterpreter.java:369) at com.arm.debug.interpreter.ds.DSInterpreter$3.run(DSInterpreter.java:1) at com.arm.debug.core.engine.connection.ConnectionEventManager$QueuedTask.run(ConnectionEventManager.java:94) at com.arm.debug.core.engine.connection.ConnectionEventManager.processTask(ConnectionEventManager.java:305) at com.arm.debug.core.engine.connection.ConnectionEventManager.access$8(ConnectionEventManager.java:303) at com.arm.debug.core.engine.connection.ConnectionEventManager$2.run(ConnectionEventManager.java:208) at com.arm.debug.control.CommandTask.fillInStackTrace(CommandTask.java:78) at com.arm.debug.control.ConnectionController.execute(ConnectionController.java:1959) at com.arm.debug.api.AbstractCommands.execute(AbstractCommands.java:115) at com.arm.debug.api.Commands.consoleCommand(Commands.java:149) at com.arm.debug.views.debugConsole.DebugConsolePage.commandIssued(DebugConsolePage.java:779) at com.arm.debug.views.debugConsole.DebugCommandLine.notifyListeners(DebugCommandLine.java:160) at com.arm.debug.views.debugConsole.DebugCommandLine.keyTraversed(DebugCommandLine.java:246)
.....