Difference between revisions of "BELK-TN-008: Integrating Visual Studio Code and Lauterbach PowerView TRACE32"

From DAVE Developer's Wiki
Jump to: navigation, search
(Introduction)
(30 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
{{Applies To BoraX}}
 
{{Applies To BoraX}}
 
{{Applies To BoraLite}}
 
{{Applies To BoraLite}}
{{AppliesToBORA_TN}}
 
{{AppliesToBORA_Xpress_TN}}
 
{{AppliesToBORA Lite TN}}
 
{{AppliesToVisualStudioCode}}
 
{{AppliesTo VisualStudioCode TN}}
 
 
{{InfoBoxBottom}}
 
{{InfoBoxBottom}}
 
__FORCETOC__
 
__FORCETOC__
Line 20: Line 15:
 
|-
 
|-
 
|1.0.0
 
|1.0.0
|June 2020
+
|February 2020
 
|First public release
 
|First public release
 
|}
 
|}
  
 
== Introduction ==
 
== Introduction ==
This Technical Note (TN) shows how to integrate [https://code.visualstudio.com/ Visual Studio Code (VSC)] and [https://www.lauterbach.com/ Lauterbach PowerView TRACE32 (PVT32)]. The integration aims to:
+
This Technical Note (TN) shows how to integrate Visual Studio Code (VSC) and Lauterbach PowerView TRACE32 (PVT32). The integration aims to:
*Debug the program in VSC by using PVT32 as a communication bridge with the target
+
*Debugging the program in VSC by using PVT32 to run it on the target
*Jump from PVT32 to VSC (in editing mode) to edit the source file where an issue/bug was found.
+
*To jump from PVT32 to VSC (in editing mode) to edit the source file where the bug was found.
 +
 
 +
This article also shows how to configure VSC in order to cross-build a Makefile-based application. This configuration supports cross-toolchain error messages to jump on erroneous lines with a simple click.
  
 
==Testbed==
 
==Testbed==
 
To test the procedure, the same testbed described [[BELK-TN-007:_FreeRTOS_on_single-core_Bora_Lite_SoM|here]] was used. Therefore, the application used to validate the procedure is <code>freertos_hello_world</code>.
 
To test the procedure, the same testbed described [[BELK-TN-007:_FreeRTOS_on_single-core_Bora_Lite_SoM|here]] was used. Therefore, the application used to validate the procedure is <code>freertos_hello_world</code>.
  
With regard to VSC, the following version was used:
+
==Integrating VSC e PVRT32==
<pre>
+
===Debugging in VSC===
Version: 1.41.1 (system setup)
+
After opening VSC from the root directory of the <code>freertos_hello_world</code> project, install the ''Native Debug'' extension.
Commit: 26076a4de974ead31f97692a0d32f90d735645c0
 
Date: 2019-12-18T14:58:56.166Z
 
Electron: 6.1.5
 
Chrome: 76.0.3809.146
 
Node.js: 12.4.0
 
V8: 7.6.303.31-electron.0
 
OS: Windows_NT x64 6.1.7601
 
</pre>
 
  
==Integrating VSC e PVT32==
+
Then, create a <code>launch.json</code> file by selecting ''Debug->Add Configuration->GDB''. The file should look like this:
===Debugging in VSC by using PVT32 as a communication bridge===
+
<syntaxhighlight lang="text" line="line">
*After opening VSC from the root directory of the <code>freertos_hello_world</code> project, install the ''Native Debug'' extension.
 
*Then, create a <code>launch.json</code> file by selecting ''Debug->Add Configuration->GDB''. The file should look like this:
 
<syntaxhighlight lang="text">
 
 
{
 
{
 
     // Use IntelliSense to learn about possible attributes.
 
     // Use IntelliSense to learn about possible attributes.
Line 59: Line 45:
 
             "type": "gdb",
 
             "type": "gdb",
 
             "request": "launch",
 
             "request": "launch",
             "target": "${workspaceRoot}/Debug/freertos_hello_world.elf",
+
             //"target": "${workspaceRoot}/Debug/freertos_hello_world.elf",
 +
            "target": "r:/home/llandre/devel/formulasae/ecu/boralite/workspace-2019.1/freertos_hello_world/Debug/freertos_hello_world.elf",
 
             "gdbpath": "e:/Xilinx/SDK/2019.1/gnu/aarch32/nt/gcc-arm-none-eabi/bin/arm-none-eabi-gdb.exe",
 
             "gdbpath": "e:/Xilinx/SDK/2019.1/gnu/aarch32/nt/gcc-arm-none-eabi/bin/arm-none-eabi-gdb.exe",
 
             "cwd": "${workspaceRoot}",
 
             "cwd": "${workspaceRoot}",
Line 71: Line 58:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
*Edit the PVT32's configuration file (usually named <code>config.t32</code>) and add the following lines:
 
<syntaxhighlight lang="text">
 
; Remote Control Access
 
GDB=NETASSIST
 
PORT=30000
 
PROTOCOL=TCP
 
</syntaxhighlight>
 
*Run PVT32 and start a debugging session (see for instance [[BELK-TN-007:_FreeRTOS_on_single-core_Bora_Lite_SoM#Running_the_application|this section]]).
 
[[File:BoraLite-VSC1.png|thumb|center|600px|Debugging session started on PVT32 side]]
 
*On VSC side, start a debugging session by pressing F5. VSC will start a debug session that is synchronized with PVT32 as shown in the following image. So you can set breakpoints, steb-by-step execute the code, etc. on VSC side, but the actual operations will be done on the target by PVT32.
 
[[File:BoraLite-VSC2.png|thumb|center|600px|Visual Studio Code and PowerView TRACE32 synchornization during a debugging session]]
 
 
===Jumping from PVT32 to VSC to edit source files===
 
To enable this functionality, add the following lines to the PRACTICE script used to initialize the debugging session:
 
<syntaxhighlight lang="text">
 
&VSCODE="E:\program_files\MicrosoftVSCode\Code.exe"
 
setup.editext on "&VSCODE -g ""*:#"""
 
</syntaxhighlight>
 
 
 
While debugging, right-click on the line you want to edit and select ''Edit Source''.
 
[[File:BoraLite-VSC3.png|thumb|center|600px|Using VSC as the default editor for PVT32]]
 
 
 
The source file will be open in VSC, which will jump on the selected line.
 
[[File:BoraLite-VSC4.png|thumb|center|600px|Using VSC as the default editor for PVT32]]
 

Revision as of 16:37, 12 February 2020

Info Box
Bora5-small.jpg Applies to Bora
BORA Xpress.png Applies to BORA Xpress
BORALite-TOP.png Applies to BORA Lite


Warning-icon.png This technical note was validated against specific versions of hardware and software. What is described here may not work with other versions. Warning-icon.png

History[edit | edit source]

Version Date Notes
1.0.0 February 2020 First public release

Introduction[edit | edit source]

This Technical Note (TN) shows how to integrate Visual Studio Code (VSC) and Lauterbach PowerView TRACE32 (PVT32). The integration aims to:

  • Debugging the program in VSC by using PVT32 to run it on the target
  • To jump from PVT32 to VSC (in editing mode) to edit the source file where the bug was found.

This article also shows how to configure VSC in order to cross-build a Makefile-based application. This configuration supports cross-toolchain error messages to jump on erroneous lines with a simple click.

Testbed[edit | edit source]

To test the procedure, the same testbed described here was used. Therefore, the application used to validate the procedure is freertos_hello_world.

Integrating VSC e PVRT32[edit | edit source]

Debugging in VSC[edit | edit source]

After opening VSC from the root directory of the freertos_hello_world project, install the Native Debug extension.

Then, create a launch.json file by selecting Debug->Add Configuration->GDB. The file should look like this:

 1 {
 2     // Use IntelliSense to learn about possible attributes.
 3     // Hover to view descriptions of existing attributes.
 4     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 5     "version": "0.2.0",
 6     "configurations": [
 7         {
 8             "name": "Debug (PowerView TRACE32)",
 9             "type": "gdb",
10             "request": "launch",
11             //"target": "${workspaceRoot}/Debug/freertos_hello_world.elf",
12             "target": "r:/home/llandre/devel/formulasae/ecu/boralite/workspace-2019.1/freertos_hello_world/Debug/freertos_hello_world.elf",
13             "gdbpath": "e:/Xilinx/SDK/2019.1/gnu/aarch32/nt/gcc-arm-none-eabi/bin/arm-none-eabi-gdb.exe",
14             "cwd": "${workspaceRoot}",
15             "valuesFormatting": "parseText",
16             "autorun": [
17                 "target remote localhost:30000",
18                 "symbol-file ${workspaceRoot}/Debug/freertos_hello_world.elf",
19             ]
20         }
21     ]
22 }