The latest development version of this page may be more current than this released 3.7.0 version.

Debug with Arm DS

Install Arm DS

Please refer to the official Arm Development Studio Page [1] for details. Here Version: 2020.b Build: 2020110909 is used in the following example.

Arm DS Version

Download Arm FVP BaseR AEMv8-R

Please refer to official FVP page [2] for download instructions. Here $FVP_D is used to indicate which directory is FVP located.

Use DS perspective

From menu choose Window -> Perspective -> Open Perspective -> Other...:

Arm DS Perspective choose Other...

In the opened window, choose Development Studio (default):

Arm DS Perspective choose DS

Create a new configuration database

Create a new configuration database by selecting File -> New -> Other... -> Configuration Database:

Arm DS create new configuration database

Choose a name for the database. Here Zephyr is used:

Arm DS create new configuration database: choose database name

Click Finish and the new configuration database can be seen in Project Explorer:

Arm DS create new configuration database: shown in project explorer

Create a new model configuration

Right click Zephyr in Project Explorer, choose New -> Model Configuration:

Arm DS create new model configuration

In the opened window:

  1. Choose Iris for Model Interface, then Next >.

  2. Choose Launch and connect to specific model, then Next >.

  3. Set Model Path to $FVP_D/FVP_BaseR_AEMv8R, then Finish.

Arm DS create new model configuration: set model path

Then in FVP_BaseR_AEMv8R tab, change ARMAEMv8-R_ to V8R64-Generic, click Save and then click Import:

Arm DS create new model configuration: import

Create a new launch configuration

From Project Explorer, right click FVP_BaseR_AEMv8R and select Debug as -> Debug configurations...:

Arm DS create new launch configuration: context menu

Select Generic Arm C/C++ Application and click New launch configuration button. A new configuration named New_configuration will be created.

  1. In Connection tab:

    • In Select target box, select Imported -> FVP_BaseR_AEMv8R -> Bare Metal Debug -> ARMAEMv8-R_MP_0

    • In Connections box, set Model parameters to:

      -C bp.dram.enable_atomic_ops=1 -C bp.sram.enable_atomic_ops=1 -C bp.refcounter.non_arch_start_at_default=1 -C gic_distributor.GICD_CTLR-DS-1-means-secure-only=1 -C gic_distributor.has-two-security-states=0 -C bp.vis.disable_visualisation=1 -C cluster0.has_aarch64=1 -a /home/fengqi/zephyrproject/build/zephyr/zephyr.elf
      

      These parameters are passed to FVP_BaseR_AEMv8R when launches. Run FVP_BaseR_AEMv8R --help to see all command line options. Run FVP_BaseR_AEMv8R --list-params to see all supported parameters. The file zephyr.elf specified by -a is the binary built from Zephyr.

Arm DS create new launch configuration: connection
  1. In Files tab:

    In Files box, set Load symbols from file to full path of zephyr.elf that you built.

Arm DS create new launch configuration: files
  1. In Debugger tab:

    • In Run control box, check Execute debugger commands and insert:

      add-symbol-file "/home/fengqi/zephyrproject/build/zephyr/zephyr.elf" EL1S:0
      

      Replace /home/fengqi/zephyrproject/build/zephyr/zephyr.elf with your local path.

    • In Paths box, set Source search directory to the path to Zephyr source code.

Arm DS create new launch configuration: debugger

After all these changes are made, click Apply, then click Debug. DS will launch FVP_BaseR_AEMv8R and connect to it. You can see a new session is connected in Debug Control window.

Arm DS working

References