XHSC XStudio Extension
The XHSC XStudio Extension make XHSC devices (based on ARM Cortex-M cores) easy to use right from Visual Studio Code.
Before use this extension, user must have XHSC ADL software build environment been configured correctly.
Overview
Supported Features:
- XC27X series device support
- CMake project import / build
- Elf file import/debug
- Single/multi-core ARM Cortex-M debugging via:
- Custom debug adapter (Cortex-Debug based)
- xhsc-link & jink debugger
- Real-time views:
- Peripheral registers
- Memory view
- Disassembly view
Getting Started
Import Projects Folder**
Click Import Project
in PROJECTS EXPLORER → Select target folder
Import CMake Projects**
Click Refresh
in MAKEFILE EXPLORER, then all the CMake projects(CMakeLists.txt) in selected project explorer will be displayed.
Debug Configuration
Access via Settings
button in the SETTING:
- Debugger Types
1. jlink, user need supply external jlink hardware
2. xhsc_link, use on board xhsc_link hardware
- Device Configurations
1. Device, support XC27X only.
2. Core, support M7_0, M7_0_M7_1. It must set properly when debug cmake project, M7_0 means single core project, M7_0_M7_1 means multi-core project.
3. EnableCTI, support Arm core CTI features, it can be ON when debug multicore project to make core0 and core1 halt/continue synchronize, it is useless for single core debug.
4. Device register describe file(SVD), the path of SVD file which will be used for peripheral registers view if provided.
- ARM GDB Root Path
Must have configurations.
- JLink Root Path
Must have configurations when debugger type select jlink.
Once configuration updated done, please click the save
buttion at the right side of Debug configurations pannel.
Build project
Click build
button on the each project of MARKFILE EXPLORER
Debug project
Once the debug
configuration have configured correctly, click the debug button on the each project of MARKFILE EXPLORER, if everything ok, the VSCODE enter into debug status and mcu halt at entry point.
see vscode debug
Debug elf
Configure the debug
configuration properly in SETTING.
Click refresh
buttion in the ELF EXPLORER, all the elf files in the folder imported to the PROJECTS EXPLORER will be listed in the ELF EXPLORER.
Select elf files to be debug
Note: User can select one elf for single core debug, select two elf files by CTRL+CLICK
for multicore debug.
The Core in SETTING must be configured correctly according to the number of selected elf files.
click the debug button on the ELF EXPLORER, if everything ok, the VSCODE enter into debug status and mcu halt at entry point.
Note for multicore debugging
Multicore debugging naming
XHSC XStudio Extension support core0 or core0_core1 debugging methods only now.
And there is one naming rule for the elfs when debug multi core, elf naming or path must contains core information
Such as for XC27X devices, the Core configuration is M7_0_M7_1, then the elfs naming must contains M7_0
,M7_1
, either upper or lower is ok.
For example core0 elf name can be example_cm7_0.elf
, core1 elf name can be example_cm7_1.elf
The reason is XHSC XStudio Extension use that information to create launch configurations, maybe this limitation will be fixed in future version, but please follow the rule for current version.
Multicore debugging life cycle management
The multicore debug feature is implemented based on the Cortex-Debug Multi core debugging, so in the multicore debug configurations we always set core0 as the primary core.
About the life cycle management for the two debug sessions, Cortex-Debug provide a configurations lifecycleManagedByParent
, but this affects actions like Restart, Reset, Stop, and Disconnect only, and we have engaged it in XHSC Studio Extension.
So about two core PAUSE/CONTINUE
synchronize, user have to set EnableCTI in the debug configuration of SETTING before debug, then core1 will be halted/continued when primary core halt/continue immediately.
From the testing, the two core can halt/continue from soc side if EnableCTI is ON
, but the VSCODE's debug toolbar status not synchronize as expect. That is to say, if we click CONTINUE on primary debug toolbar, core0 and core1 are running actually, but the secondary debug toolbar still in PAUSE status if user just set EnableCTI to 'ON'.
To solve the GUI not synchronize issue mentioned above, please contact XHSC semiconductor.