`:
> **Note**: this command only needs to type in only one time,unless the computer has restarted.
@@ -79,7 +79,7 @@ Now configure the USB serial device to be able to connect to the WSL with `usbip
it means that `usbipd` tool has been installed successfully on both side if all commands above can work well.
-The user might need to install/update pip in the virtual environment like:
+You might need to install/update pip in the virtual environment like:
# Visual Studio Code
@@ -91,6 +91,6 @@ To develop in WSL, install the [Remote - WSL](ttps://marketplace.visualstudio.co
# **Configure the ESP-IDF extension as explained in the [Install](./tutorial/install.md) tutorial or in [Setup](./SETUP.md) documentation.**
-> **Note**: Running the setup from WSL could override the Windows host machine configuration settings since it is using the User Settings by default. Consider saving settings to a workspace or workspace folder with the **ESP-IDF: Select where to Save Configuration Settings** command as described in the [working with multiple projects document](./MULTI_PROJECTS.md).
+> **Note**: Running the setup from WSL could override the Windows host machine configuration settings since it is using your Settings by default. Consider saving settings to a workspace or workspace folder with the **ESP-IDF: Select where to Save Configuration Settings** command as described in the [working with multiple projects document](./MULTI_PROJECTS.md).
Create an ESP-IDF Project and use ESP-IDF extension features. You can follow the [WSL Tutorial](./tutorial/wsl.md#practice) for an example.
diff --git a/docs/tutorial/app_tracing.md b/docs/tutorial/app_tracing.md
index 28dc65d2a..a44327c9c 100644
--- a/docs/tutorial/app_tracing.md
+++ b/docs/tutorial/app_tracing.md
@@ -6,7 +6,7 @@ Developers can use this library to send application specific state of execution
Let's open a ESP-IDF project. For this tutorial we will use the [system/app_trace_to_host](https://github.com/espressif/esp-idf/tree/master/examples/system/app_trace_to_host) example.
-1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If the user doesn't see the option, please review the setup in [Install tutorial](./install.md).
+1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If you don't see the option, please review the setup in [Install tutorial](./install.md).
2. A window will be open with a list a projects, go the **system** section and choose the `app_trace_to_host`. You will see a **Create Project Using Example app_trace_to_host** button in the top and a description of the project below. Click the button and the project will be opened in a new window.
@@ -18,11 +18,11 @@ For this example, the project has been already configured for application tracin
3. Configure, build and flash your project as explained in the [Basic use tutorial](./basic_use.md).
-4. Click the `ESP-IDF Explorer` in the [activity bar](https://code.visualstudio.com/docs/getstarted/userinterface). On the `IDF APP TRACER` section, click the `Start App Trace`. This will execute the extension's openOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the `APP TRACE ARCHIVES` named with `Trace Log #1`. Each time you execute `Start App Trace` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
+4. Click the `ESP-IDF Explorer` in the [activity bar](https://code.visualstudio.com/docs/getstarted/userinterface). On the `IDF APP TRACER` section, click the `Start App Trace`. This will execute the extension's OpenOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the `APP TRACE ARCHIVES` named with `Trace Log #1`. Each time you execute `Start App Trace` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
-> **NOTE:** The openOCD server output is shown in menu `View` -> Output -> OpenOCD.
+> **NOTE:** The OpenOCD server output is shown in menu `View` -> Output -> ESP-IDF.
-> **NOTE:** Make sure that openOCD configuration files are properly configured as described in [Debugging tutorial](./debugging.md).
+> **NOTE:** Make sure that OpenOCD configuration files are properly configured as described in [Debugging tutorial](./debugging.md).
diff --git a/docs/tutorial/basic_use.md b/docs/tutorial/basic_use.md
index 2b9416d40..c00d3fb8d 100644
--- a/docs/tutorial/basic_use.md
+++ b/docs/tutorial/basic_use.md
@@ -9,18 +9,18 @@ You have several options to create a project:
> **NOTE:** To configure any additional supported framework, please review [Configuring Additional Frameworks](./additional_frameworks.md)
-1. Let's use the ESP-IDF get-started's blink example for this tutorial. Click menu View -> Command Palette... and type **ESP-IDF: Show Examples Projects** and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If the user doesn't see the option, please review the setup in [Install tutorial](./install.md).
+1. Let's use the ESP-IDF get-started's blink example for this tutorial. Click menu View -> Command Palette... and type **ESP-IDF: Show Examples Projects** and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If you doesn't see the option, please review the setup in [Install tutorial](./install.md).
2. A window will be open with a list a projects, go the **get-started** section and choose the `blink`. You will see a **Create project using example blink** button in the top and a description of the project below. Click **Create project using example blink** button.
-3. Now select a container directory where to copy the example project. For example, if the user choose `/Users/myUser/someFolder` the resulting folder will be `/Users/myUser/someFolder/blink`. This new project directory will be created and opened in Visual Studio Code.
+3. Now select a container directory where to copy the example project. For example, if you choose `/Users/myUser/someFolder` the resulting folder will be `/Users/myUser/someFolder/blink`. This new project directory will be created and opened in Visual Studio Code.
-4. First the user should select an Espressif target (esp32, esp32s2, etc.) with the **ESP-IDF: Set Espressif Device Target** command. Default is `esp32` and the one used in this tutorial.
+4. First you should select an Espressif target (esp32, esp32s2, etc.) with the **ESP-IDF: Set Espressif Device Target** command. Default is `esp32` and the one used in this tutorial.
-5. Next configure your project using menuconfig. Use the **ESP-IDF: SDK Configuration Editor** command (CTRL E G keyboard shortcut ) where the user can modify the ESP-IDF project settings. After all changes are made, click save and close this window.
+5. Next configure your project using menuconfig. Use the **ESP-IDF: SDK Configuration Editor** command (CTRL E G keyboard shortcut ) where you can modify the ESP-IDF project settings. After all changes are made, click save and close this window.
> **NOTE:** The **SDK Configuration Editor** is built from the project's `build/config/kconfig_menus.json` which is generated by the build system from ESP-IDF and user defined components `Kconfig` files on the first run of `SDK Configuration Editor`. This process takes a bit of time so we keep the process running in the background to speed things up. If you are making changes to any Kconfig file or you want to re-run the SDK Configuration editor from scratch, you need to dispose the current process with the `ESP-IDF: Dispose Current SDK Configuration Editor Server Process` and run the `ESP-IDF: SDK Configuration Editor` again.
@@ -30,9 +30,9 @@ You have several options to create a project:
6. Configure the `.vscode/c_cpp_properties.json` as explained in [C/C++ Configuration](../C_CPP_CONFIGURATION.md).
-7. Now to build the project, use the **ESP-IDF: Build your Project** command (CTRL E B keyboard shortcut). The user will see a new terminal being launched with the build output and a notification bar with Building Project message until it is done then a Build done message when finished. You could modify the behavior of the build task with `idf.cmakeCompilerArgs` for Cmake configure step and `idf.ninjaArgs` for Ninja step. For example, using `[-j N]` where N is the number of jobs run in parallel.
+7. Now to build the project, use the **ESP-IDF: Build your Project** command (CTRL E B keyboard shortcut). you will see a new terminal being launched with the build output and a notification bar with Building Project message until it is done then a Build done message when finished. You could modify the behavior of the build task with `idf.cmakeCompilerArgs` for Cmake configure step and `idf.ninjaArgs` for Ninja step. For example, using `[-j N]` where N is the number of jobs run in parallel.
-> **NOTE:** There is a `idf.notificationMode` configuration setting if the user does not wants to see the output automatically. Please review [ESP-IDF Settings](../SETTINGS.md)) to see how to modify this configuration setting.
+> **NOTE:** There is a `idf.notificationMode` configuration setting if you does not wants to see the output automatically. Please review [ESP-IDF Settings](../SETTINGS.md)) to see how to modify this configuration setting.
@@ -44,14 +44,14 @@ You have several options to create a project:
-8. Before flashing the project, the user needs to specify the serial port of the device with the **ESP-IDF: Select Port to Use** command (CTRL E P keyboard shortcut). You can choose between UART/JTAG flashing mode and then a list of serial ports will be shown for the user to select.
+8. Before flashing the project, you needs to specify the serial port of the device with the **ESP-IDF: Select Port to Use** command (CTRL E P keyboard shortcut). You can choose between UART/JTAG flashing mode and then a list of serial ports will be shown for you to select.
> **NOTE:** Please take a look at [ESP-PROG Board the Instructions](https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html#step-by-step-instruction) or [Configuring ESP32 Target](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/jtag-debugging/index.html#configuring-esp32-target) your Espressif device and JTAG interface to your computer.
-9. Now to flash the project, use the **ESP-IDF: Flash your Project** command (CTRL E F keyboard shortcut). Choose `UART` or `JTAG` flash mode ([Configure JTAG Flashing](#About-JTAG-flashing)) and then flashing will start in the previously selected serial port. The user can also use the **ESP-IDF: Flash (UART) your Project** or **ESP-IDF: Flash (with JTAG)** directly.
+9. Now to flash the project, use the **ESP-IDF: Flash your Project** command (CTRL E F keyboard shortcut). Choose `UART` or `JTAG` flash mode ([Configure JTAG Flashing](#About-JTAG-flashing)) and then flashing will start in the previously selected serial port. you can also use the **ESP-IDF: Flash (UART) your Project** or **ESP-IDF: Flash (with JTAG)** directly.
> **NOTE:** When using the **ESP-IDF: Select Flash Method and Flash** command, your choice will be saved in the `idf.flashType` configuration setting.
-The user will see a new terminal being launched with the flash output and a notification bar with `Flashing Project` message until it is done then a Flash done message when finished.
+you will see a new terminal being launched with the flash output and a notification bar with `Flashing Project` message until it is done then a Flash done message when finished.
> **NOTE:** There is an `idf.flashBaudRate` configuration settings to modify the flashing baud rate. Please review [ESP-IDF Settings](../SETTINGS.md) to see how to modify this configuration setting.
@@ -59,9 +59,9 @@ The user will see a new terminal being launched with the flash output and a noti
-10. Now to start monitoring your device, use the **ESP-IDF: Monitor Device** command (CTRL E M keyboard shortcut). The user will see a new terminal being launched with the `idf.py monitor` output.
+10. Now to start monitoring your device, use the **ESP-IDF: Monitor Device** command (CTRL E M keyboard shortcut). you will see a new terminal being launched with the `idf.py monitor` output.
-> **NOTE** The ESP-IDF Monitor baud rate value is taken from `idf.monitorBaudRate` with fallback on your project's SDKConfig `CONFIG_ESPTOOLPY_MONITOR_BAUD` (idf.py monitor' baud rate). This value can also be override by setting the environment variable `IDF_MONITOR_BAUD` or `MONITORBAUD` in your system environment variables or this extension's `idf.customExtraVars` configuration setting. Please review [ESP-IDF Settings](../SETTINGS.md)) to see how to modify `idf.customExtraVars`.
+> **NOTE** The ESP-IDF Monitor baud rate value can be override from `idf.monitorBaudRate` with fallback on your project's SDKConfig `CONFIG_ESPTOOLPY_MONITOR_BAUD` (idf.py monitor' baud rate). This value can also be override by setting the environment variable `IDF_MONITOR_BAUD` or `MONITORBAUD` in your system environment variables or this extension's `idf.customExtraVars` configuration setting. Please review [ESP-IDF Settings](../SETTINGS.md)) to see how to modify `idf.customExtraVars`.
@@ -77,7 +77,7 @@ See other [ESP-IDF Extension Features](../FEATURES.md).
## About JTAG Flashing
-JTAG flash mode requires openOCD v0.10.0-esp32-20201125 or later. To replace OpenOCD, just get one of the latest [OpenOCD releases](https://github.com/espressif/openocd-esp32/releases) and replace in `idf.customExtraPaths` the OpenOCD binary path like:
+JTAG flash mode requires OpenOCD v0.10.0-esp32-20201125 or later. To replace OpenOCD, just get one of the latest [OpenOCD releases](https://github.com/espressif/openocd-esp32/releases) and replace in `idf.customExtraPaths` the OpenOCD binary path like:
```
c:\\esp\\tools\\.espressif\\tools\\openocd-esp32\\v0.10.0-esp32-20200709\\openocd-esp32\\bin
diff --git a/docs/tutorial/cmakelists_editor.md b/docs/tutorial/cmakelists_editor.md
index 5189f4642..7ee4d4909 100644
--- a/docs/tutorial/cmakelists_editor.md
+++ b/docs/tutorial/cmakelists_editor.md
@@ -27,7 +27,7 @@ We can observe when we re-open the file in a regular text-editor changes are ref
3. Now let's create a new ESP-IDF component in this project to modify its `CMakeLists.txt`. Click menu `View` -> `Command Palette`, type **ESP-IDF: Create New ESP-IDF Component** and enter the new component name.
-4. A new component will be created in `/blink/components/`. Opening in the regular text editor, the user will see an `idf_component_register` method with:
+4. A new component will be created in `/blink/components/`. Opening in the regular text editor, you will see an `idf_component_register` method with:
```
idf_component_register(SRCS "my_component.c"
@@ -48,7 +48,7 @@ Right click on `/blink/components//CMakeLists.txt`
7. As described in [ESP-IDF Component CMakeLists.txt Files](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html#component-cmakelists-files), `REQUIRES` is used to list the component dependencies. Type `mbedtls` and click the `+` button (can also press enter on typing).
-8. Click on `Save` button and close the CMakeLists.txt editor. If you open `/blink/components//CMakeLists.txt` on a regular text editor, the user will see:
+8. Click on `Save` button and close the CMakeLists.txt editor. If you open `/blink/components//CMakeLists.txt` on a regular text editor, you will see:
```
idf_component_register(SRCS "my_component.c"
diff --git a/docs/tutorial/code_coverage.md b/docs/tutorial/code_coverage.md
index 9289a776c..f3ee3b808 100644
--- a/docs/tutorial/code_coverage.md
+++ b/docs/tutorial/code_coverage.md
@@ -10,7 +10,7 @@ Please take a look at [Coverage](../COVERAGE.md) for more information about code
Let's use the ESP-IDF [GCOV Example](https://github.com/espressif/esp-idf/tree/master/examples/system/gcov) for this tutorial.
-1. Click menu View -> Command Palette... and type **ESP-IDF: Show Examples Projects** and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If the user doesn't see the option, please review the setup in [Install tutorial](./install.md).
+1. Click menu View -> Command Palette... and type **ESP-IDF: Show Examples Projects** and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If you don't see the option, please review the setup in [Install tutorial](./install.md).
2. A window will be open with a list a projects, go the **system** section and choose the `gcov`. You will see a **Create Project Using Example gcov** button in the top and a description of the project below. Click **Create Project Using Example GCOV** button.
@@ -18,11 +18,11 @@ Let's use the ESP-IDF [GCOV Example](https://github.com/espressif/esp-idf/tree/m
-3. Now select a container directory where to copy the example project. For example, if the user choose `/Users/myUser/someFolder` the resulting folder will be `/Users/myUser/someFolder/gcov`. This new project directory will be created and opened in Visual Studio Code.
+3. Now select a container directory where to copy the example project. For example, if you choose `/Users/myUser/someFolder` the resulting folder will be `/Users/myUser/someFolder/gcov`. This new project directory will be created and opened in Visual Studio Code.
-4. First the user should select an Espressif target (esp32, esp32s2, etc.) with the **ESP-IDF: Set Espressif Device Target** command. Default is `esp32` and the one used in this tutorial.
+4. First you should select an Espressif target (esp32, esp32s2, etc.) with the **ESP-IDF: Set Espressif Device Target** command. Default is `esp32` and the one used in this tutorial.
-5. Next configure your sdkconfig project with the **ESP-IDF: Configure Project SDKConfig for Coverage** command or by yourself using the **ESP-IDF: SDK Configuration Editor** command (CTRL E G keyboard shortcut ) where the user can modify the ESP-IDF project settings. After all changes are made, click save and close this window.
+5. Next configure your sdkconfig project with the **ESP-IDF: Configure Project SDKConfig for Coverage** command or by yourself using the **ESP-IDF: SDK Configuration Editor** command (CTRL E G keyboard shortcut ) where you can modify the ESP-IDF project settings. After all changes are made, click save and close this window.
@@ -40,13 +40,13 @@ The example will enable the following options by default:
> **NOTE:** There is also a **ESP-IDF: Build, Flash and Start a Monitor on your Device** command (CTRL E D keyboard shortcut).
-7. Next step is to launch OpenOCD and send some commands. To start openOCD from the extension, execute the **ESP-IDF: OpenOCD Manager** command or from the `OpenOCD Server (Running | Stopped)` button in the Visual Studio Code status bar. OpenOCD server output is shown in menu `View` -> `Output` -> `OpenOCD`.
+7. Next step is to launch OpenOCD and send some commands. To start openOCD from the extension, execute the **ESP-IDF: OpenOCD Manager** command or from the `OpenOCD Server (Running | Stopped)` button in the Visual Studio Code status bar. OpenOCD server output is shown in menu `View` -> `Output` -> `ESP-IDF`.
8. Launch a new terminal with menu Terminal -> New Terminal and execute `telnet ` which by default is `telnet localhost 4444`. Latest macOS users can use `nc ` if `telnet` is not in the system.
-> **NOTE:** The user can modify `openocd.tcl.host` and `openocd.tcl.port` configuration settings to modify these values. Please review [ESP-IDF Settings](../SETTINGS.md) to see how to modify these configuration settings.
+> **NOTE:** you can modify `openocd.tcl.host` and `openocd.tcl.port` configuration settings to modify these values. Please review [ESP-IDF Settings](../SETTINGS.md) to see how to modify these configuration settings.
-9. First send the openOCD command `esp gcov dump` for hard-coded dump which will dump two hard-coded dumps based on this example. After that send the `esp gcov` command for instant run-time dump.
+9. First send the OpenOCD command `esp gcov dump` for hard-coded dump which will dump two hard-coded dumps based on this example. After that send the `esp gcov` command for instant run-time dump.
@@ -69,7 +69,7 @@ Please review [Settings](../SETTINGS.md) to see how to modify these configuratio
11. When finished, use the **ESP-IDF: Remove Editor Coverage** command to remove the code coverage.
-12. The user can generate a html report using the **ESP-IDF: Get HTML Coverage Report for Project** command.
+12. You can generate a html report using the **ESP-IDF: Get HTML Coverage Report for Project** command.
diff --git a/docs/tutorial/debugging.md b/docs/tutorial/debugging.md
index 58163f226..62af1f37a 100644
--- a/docs/tutorial/debugging.md
+++ b/docs/tutorial/debugging.md
@@ -2,10 +2,10 @@
> **NOTE:** Make sure to configure your drivers as mentioned in ESP-IDF [Configure JTAG Interface](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/jtag-debugging/configure-ft2232h-jtag.html) documentation.
-This tutorial shows the user how to debug ESP-IDF projects using the Visual Studio Code extension for ESP-IDF. If you haven't configured the extension as explained in [Install tutorial](./install.md) please do it first.
+This tutorial shows you how to debug ESP-IDF projects using the Visual Studio Code extension for ESP-IDF. If you haven't configured the extension as explained in [Install tutorial](./install.md) please do it first.
1. Configure, build and flash your project as explained in [Basic use tutorial](./basic_use.md).
-2. Set the proper values for openOCD Configuration files in the `idf.openOCDConfigs` configuration setting. You can choose a specific board listed in openOCD using **ESP-IDF: Select OpenOCD Board Configuration** or **ESP-IDF: Set Espressif Device Target**.
+2. Set the proper values for OpenOCD Configuration files in the `idf.openOCDConfigs` configuration setting. You can choose a specific board listed in OpenOCD using **ESP-IDF: Select OpenOCD Board Configuration** or **ESP-IDF: Set Espressif Device Target**.
> **NOTE:** Please take a look at [Configuring of OpenOCD for specific target](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/jtag-debugging/tips-and-quirks.html#configuration-of-openocd-for-specific-target) for more information about these configuration files.
@@ -15,9 +15,9 @@ Several steps will be automatically done for you but explained for clarity. You
4. OpenOCD server is launched in the background and the output is shown in menu `View` -> Output -> ESP-IDF. By default it will be launched using localhost, port `4444` for Telnet communication, port `6666` for TCL communication and port `3333` for gdb.
-> **NOTE:** The user can start or stop the OpenOCD from Visual Studio Code using the **ESP-IDF: OpenOCD Manager** command or from the `OpenOCD Server (Running | Stopped)` button in the visual studio code status bar.
+> **NOTE:** You can start or stop the OpenOCD from Visual Studio Code using the **ESP-IDF: OpenOCD Manager** command or from the `OpenOCD Server (Running | Stopped)` button in the visual studio code status bar.
-> **NOTE:** The user can modify `openocd.tcl.host` and `openocd.tcl.port` configuration settings to modify these values. You can also set `idf.openOcdDebugLevel` to lower or increase (0-4) the messages from OpenOCD in the OpenOCD output. Please review [ESP-IDF Settings](../SETTINGS.md) to see how to modify these configuration settings.
+> **NOTE:** You can modify `openocd.tcl.host` and `openocd.tcl.port` configuration settings to modify these values. You can also set `idf.openOcdDebugLevel` to lower or increase (0-4) the messages from OpenOCD in the OpenOCD output. Please review [ESP-IDF Settings](../SETTINGS.md) to see how to modify these configuration settings.
5. The [Eclipse CDT GDB Adapter](https://github.com/eclipse-cdt-cloud/cdt-gdb-adapter) is launched in the background and the output is shown in the Debug Console. This adapter is a proxy between Visual Studio Code, configured toolchain GDB and OpenOCD server. Please review [Debugging](../DEBUGGING.md) for more information how to customize the debugging behavior by modifying launch.json arguments.
@@ -31,7 +31,7 @@ Several steps will be automatically done for you but explained for clarity. You
7. When the target is halted, the editor will show the line of code where the program halted and the list of threads in the `Call Stack` sub-window `(a)` on the `Run` icon in the Activity Bar on the side of Visual Studio Code. The first line of call stack under main `(b)` contains the last called function `app_main()`, which in turned was called from `main_task()` as shown in the previous image. Each line of the stack also contains the file name and line number `(c)` where the function was called. By clicking on each of the stack entries, you will see the file opened.
-By expanding threads you can navigate throughout the application. Some threads contains much longer call stack where the user can see, besides function calls, numbers like `0x4000bff0` representing address of binary code not provided in source form.
+By expanding threads you can navigate throughout the application. Some threads contains much longer call stack where you can see, besides function calls, numbers like `0x4000bff0` representing address of binary code not provided in source form.
@@ -54,7 +54,7 @@ When debugging, we would like to be able to stop the application at critical lin
The Visual Studio Code shows a **Debug toolbar** on the top of the editor with several actions as explained in [Visual Studio Code Debug Actions](https://code.visualstudio.com/docs/editor/debugging#_debug-actions).
-9. If you press F5 (Continue/Pause) the processor will run and halt at the next breakpoint. If you press F5 again, it will stop at the next breakpoint and so on. The user will be able to see that LED is changing the state after each click to "Continue" program execution.
+9. If you press F5 (Continue/Pause) the processor will run and halt at the next breakpoint. If you press F5 again, it will stop at the next breakpoint and so on. you will be able to see that LED is changing the state after each click to "Continue" program execution.
# Halting the Target Manually
@@ -147,6 +147,6 @@ You can start a monitor session that can capture fatal error events with `ESP-ID
- **Core Dump** is configured when `Core Dump's Data Destination` is set to either `UART` or `FLASH` using the `ESP-IDF: SDK Configuration Editor` extension command or `idf.py menuconfig` in a terminal.
- **GDB Stub** is configured when `Panic Handler Behaviour` is set to `Invoke GDBStub` using the`ESP-IDF: SDK Configuration Editor` extension command or `idf.py menuconfig` in a terminal.
-The user can modify the debug session as shown in the [Debugging](../DEBUGGING.md) documentation by customizing launch.json arguments such as custom initial gdb commands.
+you can modify the debug session as shown in the [Debugging](../DEBUGGING.md) documentation by customizing launch.json arguments such as custom initial gdb commands.
See other [ESP-IDF extension features](../FEATURES.md).
diff --git a/docs/tutorial/efuse.md b/docs/tutorial/efuse.md
index 17f332ef8..b837ab242 100644
--- a/docs/tutorial/efuse.md
+++ b/docs/tutorial/efuse.md
@@ -18,7 +18,7 @@ Espressif chips has a number of eFuses which can store system and user parameter
-4. If you click on any category, the user will see the category Efuses and Values.
+4. If you click on any category, you will see the category Efuses and Values.
diff --git a/docs/tutorial/existing_idf_project.md b/docs/tutorial/existing_idf_project.md
index 0850cb354..1c23bfb14 100644
--- a/docs/tutorial/existing_idf_project.md
+++ b/docs/tutorial/existing_idf_project.md
@@ -32,4 +32,4 @@ As shown in [Working with multiple projects](../MULTI_PROJECTS.md), there are ma
2. You can already use the existing setup to build, flash and monitor the existing project. To debug, you need the `esp-idf` launch.json which can be added by running the `ESP-IDF: Add .vscode Configuration Folder` command.
-3. If you want to open the project within the ESP-IDF Docker container, use the `ESP-IDF: Add Docker Container Configuration` command to add the `.devcontainer` directory which allows the user to use the `Remote - Containers: Open Folder in Remote Container` to open the existing project into a container.
+3. If you want to open the project within the ESP-IDF Docker container, use the `ESP-IDF: Add Docker Container Configuration` command to add the `.devcontainer` directory which allows you to use the `Remote - Containers: Open Folder in Remote Container` to open the existing project into a container.
diff --git a/docs/tutorial/heap_tracing.md b/docs/tutorial/heap_tracing.md
index c4c8870fe..83a1183ee 100644
--- a/docs/tutorial/heap_tracing.md
+++ b/docs/tutorial/heap_tracing.md
@@ -4,7 +4,7 @@ Heap Tracing allows tracing of code which allocates/frees memory. More informati
Let's open a ESP-IDF project. For this tutorial we will use the `system/sysview_tracing_heap_log` example.
-1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If the user doesn't see the option, please review the setup in [Install tutorial](./install.md).
+1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If you doesn't see the option, please review the setup in [Install tutorial](./install.md).
2. A window will be open with a list a projects, go the **system** section and choose the `sysview_tracing_heap_log`. You will see a **Create Project Using Example sysview_tracing_heap_log** button in the top and a description of the project below. Click the button and the project will be opened in a new window.
@@ -16,9 +16,9 @@ For this example, the project has been already configured for application tracin
3. Configure, build and flash your project as explained in the [Basic use tutorial](./basic_use.md).
-4. Click the `ESP-IDF Explorer` in the [Activity bar](https://code.visualstudio.com/docs/getstarted/userinterface). On the `ESP-IDF APP TRACER` section, click the `Start Heap Trace`. This will execute the extension's openOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the `APP TRACE ARCHIVES` named with `Heap Trace Log #1`. Each time you execute `Start Heap Trace` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
+4. Click the `ESP-IDF Explorer` in the [Activity bar](https://code.visualstudio.com/docs/getstarted/userinterface). On the `ESP-IDF APP TRACER` section, click the `Start Heap Trace`. This will execute the extension's OpenOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the `APP TRACE ARCHIVES` named with `Heap Trace Log #1`. Each time you execute `Start Heap Trace` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
-> **NOTE:** The OpenOCD server output is shown in menu `View` -> Output -> OpenOCD.
+> **NOTE:** The OpenOCD server output is shown in menu `View` -> Output -> ESP-IDF.
> **NOTE:** Make sure that OspenOCD configuration files are properly configured as described in [Debugging tutorial](./debugging.md).
diff --git a/docs/tutorial/hints_viewer.md b/docs/tutorial/hints_viewer.md
index c61a4c617..d3e840167 100644
--- a/docs/tutorial/hints_viewer.md
+++ b/docs/tutorial/hints_viewer.md
@@ -9,7 +9,7 @@ This feature enhances your development experience by providing helpful hints for
When you hover over errors in the text editor, if the error matches one listed in our hints.yml file, a hint is displayed.
-
+
### Bottom Panel for Hints
@@ -17,11 +17,11 @@ When you hover over errors in the text editor, if the error matches one listed i
1. **Automatic Updates:** The ESP-IDF bottom panel automatically updates to display hints based on the errors in your currently opened file.
-
+
2. **Manual Search:** You can manually search for hints by copy pasting errors.
-
+
diff --git a/docs/tutorial/install.md b/docs/tutorial/install.md
index 74c79a4af..aa084dc4b 100644
--- a/docs/tutorial/install.md
+++ b/docs/tutorial/install.md
@@ -31,13 +31,13 @@
-11. The user will see a page showing the setup progress status showing ESP-IDF download progress, ESP-IDF Tools download and install progress as well as the creation of a python virtual environment.
+11. You will see a page showing the setup progress status showing ESP-IDF download progress, ESP-IDF Tools download and install progress as well as the creation of a python virtual environment.
-12. (OPTIONAL) If the user have chosen the **Advanced** option, after ESP-IDF is downloaded and extracted, select to either download ESP-IDF Tools or manually provide each ESP-IDF tool absolute path and required environment variables.
+12. (OPTIONAL) If you have chosen the **Advanced** option, after ESP-IDF is downloaded and extracted, select to either download ESP-IDF Tools or manually provide each ESP-IDF tool absolute path and required environment variables.
> **NOTE:** Consider that `IDF_PATH` requires each ESP-IDF tool to be of the version described in `IDF_PATH`/tools/tools.json.
> If it is desired to use a different ESP-IDF tool version, check [JSON Manual Configuration](../SETUP.md#JSON-Manual-Configuration)
@@ -45,20 +45,20 @@
-13. (OPTIONAL) If the user has chosen the **Advanced** mode and selected to manually provide each ESP-IDF tool absolute path, please enter the executable container directory for each binary as shown below:
+13. (OPTIONAL) If you has chosen the **Advanced** mode and selected to manually provide each ESP-IDF tool absolute path, please enter the executable container directory for each binary as shown below:
> **NOTE:** Check [JSON Manual Configuration](../SETUP.md#JSON-Manual-Configuration) for more information.
-14. If everything is installed correctly, the user will see a message that all settings have been configured. You can start using the extension.
+14. If everything is installed correctly, you will see a message that all settings have been configured. You can start using the extension.
-> **NOTE**: > The advance mode allows the user to choose to use existing ESP-IDF tools by manually entering each ESP-IDF tool absolute path. Again, if chose an ESP-IDF version < 5.0, make sure each ESP-IDF tool path doesn't have any spaces, since they were no suported in previous versions..
+> **NOTE**: > The advance mode allows you to choose to use existing ESP-IDF tools by manually entering each ESP-IDF tool absolute path. Again, if chose an ESP-IDF version < 5.0, make sure each ESP-IDF tool path doesn't have any spaces, since they were no suported in previous versions..
15. Now that the extension setup is finally done, check the [Basic use](./basic_use.md) to learn how to use the SDK Configuration editor, build, flash and monitor your Espressif device.
@@ -67,7 +67,7 @@
> **NOTE:** the setup wizard will install ESP-IDF Python packages and ESP-IDF debug adapter (`EXTENSION_PATH`/esp_debug_adapter/requirements.txt) python packages. Make sure that if using an existing python virtual environment that installing these packages doesn't affect your virtual environment. The `EXTENSION_PATH` is:
- Windows: `%USERPROFILE%\.vscode\extensions\espressif.esp-idf-extension-VERSION`
-- Linux & MacOSX: `$HOME/.vscode/extensions/espressif.esp-idf-extension-VERSION`
+- MacOS/Linux: `$HOME/.vscode/extensions/espressif.esp-idf-extension-VERSION`
# Installing Nightly Build
diff --git a/docs/tutorial/nvs_partition_editor.md b/docs/tutorial/nvs_partition_editor.md
index f0605861b..51b280dfd 100644
--- a/docs/tutorial/nvs_partition_editor.md
+++ b/docs/tutorial/nvs_partition_editor.md
@@ -1,6 +1,6 @@
# NVS Partition Editor
-The **ESP-IDF: Open NVS Partition Editor** allows the user to create a NVS partition binary file based on key-value pairs in CSV file. The resulting binary file is compatible with NVS architecture defined in [ESP-IDF Non Volatile Storage](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html).
+The **ESP-IDF: Open NVS Partition Editor** allows you to create a NVS partition binary file based on key-value pairs in CSV file. The resulting binary file is compatible with NVS architecture defined in [ESP-IDF Non Volatile Storage](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html).
The expected CSV format is:
@@ -27,7 +27,7 @@ key2,file,string,/path/to/file
4. Save the CSV data (First time will create the csv file).
-5. (OPTIONAL) Enable encryption of the binary. If encrypt is enable, can disable the generate key option to use your own key if desired, in which case the user needs to set the key absolute path.
+5. (OPTIONAL) Enable encryption of the binary. If encrypt is enable, can disable the generate key option to use your own key if desired, in which case you needs to set the key absolute path.
6. Generate the partition binary.
diff --git a/docs/tutorial/partition_editor.md b/docs/tutorial/partition_editor.md
index 8faa1a242..f0b043f54 100644
--- a/docs/tutorial/partition_editor.md
+++ b/docs/tutorial/partition_editor.md
@@ -2,7 +2,7 @@
Let's open a ESP-IDF project. For this tutorial we will use the `system/console` example.
-1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If the user doesn't see the option, please review the setup in [Install tutorial](./install.md).
+1. Click menu View -> Command Palette... and search for the **ESP-IDF: Show Examples Projects** command and choose `Use Current ESP-IDF (/path/to/esp-idf)`. If you doesn't see the option, please review the setup in [Install tutorial](./install.md).
2. A window will be open with a list a projects, go the **system** section and choose the `console`. You will see a **Create Project Using Example Console** button in the top and a description of the project below. Click the button and choose the containing directory. The project will be opened in a new window.
@@ -29,12 +29,12 @@ Let's open a ESP-IDF project. For this tutorial we will use the `system/console`
# Name, Type, SubType, Offset, Size, Flag
```
-6. Once partition table editor is open, the user can edit the partition table as desired. For more information please refer to [this article](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html).
+6. Once partition table editor is open, you can edit the partition table as desired. For more information please refer to [this article](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html).
-7. Once the user is satisfied press `Save` to save the changes, _this will override the content of csv file_.
+7. Once you is satisfied press `Save` to save the changes, _this will override the content of csv file_.
8. Now you can click the `Select Flash Method, Build, Flash` right top buttons in order to finish flashing the partition table to the chip.
diff --git a/docs/tutorial/project_configuration.md b/docs/tutorial/project_configuration.md
index 3b9641593..499c82a5c 100644
--- a/docs/tutorial/project_configuration.md
+++ b/docs/tutorial/project_configuration.md
@@ -1,6 +1,6 @@
# Project Configuration Editor
-To allow the user to have multiple configurations for the same project, the user can define several settings to produce different build results. For example, take a look at the [Multiple configuration tutorial](./tutorial/multiple_config.md) which uses the ESP-IDF CMake build system [multi_config](https://github.com/espressif/esp-idf/tree/master/examples/build_system/cmake/multi_config) example.
+To allow you to have multiple configurations for the same project, you can define several settings to produce different build results. For example, take a look at the [Multiple configuration tutorial](./tutorial/multiple_config.md) which uses the ESP-IDF CMake build system [multi_config](https://github.com/espressif/esp-idf/tree/master/examples/build_system/cmake/multi_config) example.
Use the `ESP-IDF: Open Project Configuration` to manage the project configuration profiles to record the following settings for each configuration:
@@ -26,7 +26,7 @@ Use the `ESP-IDF: Open Project Configuration` to manage the project configuratio
After defining a profile and the settings for each profile use the `ESP-IDF: Select Project Configuration` command to choose the configuration to override extension configuration settings.
-There are many use cases for having multiple configurations profiles. It allows the user to store settings together and easily switch between one and the other. Let's explore one of this use cases here, having a development and production build profiles.
+There are many use cases for having multiple configurations profiles. It allows you to store settings together and easily switch between one and the other. Let's explore one of this use cases here, having a development and production build profiles.
# Development and Release Profiles for ESP-IDF Project
diff --git a/docs/tutorial/rainmaker.md b/docs/tutorial/rainmaker.md
index a968ccd2b..a59d7a2de 100644
--- a/docs/tutorial/rainmaker.md
+++ b/docs/tutorial/rainmaker.md
@@ -10,9 +10,9 @@ You need to have a ESP32-S2 board and ESP Rainmaker Account, if you don't have t
-2. The user will be prompted for the authentication method to connect with Rainmaker, either using the Rainmaker account user and password or with an OAuth app like Google, Github or Apple.
+2. You will be prompted for the authentication method to connect with Rainmaker, either using the Rainmaker account user and password or with an OAuth app like Google, Github or Apple.
-> For OAuth to work properly, the user will be asked to provide permission to Visual Studio Code and the broswer to open Visual Studio Code back once the OAuth flow is done.
+> For OAuth to work properly, you will be asked to provide permission to Visual Studio Code and the broswer to open Visual Studio Code back once the OAuth flow is done.
diff --git a/docs/tutorial/using-docker-container.md b/docs/tutorial/using-docker-container.md
index e45b12be7..c44c3427b 100644
--- a/docs/tutorial/using-docker-container.md
+++ b/docs/tutorial/using-docker-container.md
@@ -17,7 +17,7 @@ Other tools are defined in Dockefile and will be part of the executed container.
## Docker Desktop
-Docker Desktop is an application for MacOS and Windows machines for the building and sharing of containerized applications. For more details, the user can refer to [here](https://docs.docker.com/get-started/), but the role of docker here is to import the `ESP-IDF Docker Image` and manage it, such as start,restart,close etc.
+Docker Desktop is an application for MacOS and Windows machines for the building and sharing of containerized applications. For more details, you can refer to [here](https://docs.docker.com/get-started/), but the role of docker here is to import the `ESP-IDF Docker Image` and manage it, such as start,restart,close etc.
> **NOTE:** the default installing path of docker is C disk, so please move to other disks with `mklink` commands if the space size of C disk is not enough.
@@ -138,7 +138,7 @@ as seen from snapshot above, `Blink` and `Hello_world` example projects have bee
some readers may see that there is a `.devcontainer` folder in the example_project folder, which is not included by default; this is generated by using the ESP-IDF extension of Visual Studio Code to create and configure the ESP-IDF docker image for container development.
-If the user readers also need to generate their own `.devcontainer` folder content, as follows:
+If you also need to generate your own `.devcontainer` folder content, do as follows:
1. open example project with vscode and then press `F1`
1. In the pop-up dialog box, search for the `ESP-IDF: Add Docker Container Configuration` command
@@ -253,7 +253,7 @@ the interface is the same as [Internal USB-serial](#internal-usb-serial), that i
### Additional steps for debugging
-Make sure to run `ESP-IDF: Add OpenOCD rules file (For Linux users)` command and `ESP-IDF: Install ESP-IDF Python Packages` command to add openOCD rules and install debug adapter python packages in the docker container before running openOCD and starting a debug session with the ESP-IDF Debug Adapter.
+Make sure to run `ESP-IDF: Add OpenOCD rules file (For Linux users)` command to add OpenOCD rules in the docker container before running OpenOCD and starting a debug session.
## Debugging
@@ -263,6 +263,5 @@ After following [USB-JTAG](#usb-jtag), press `F5` to start to debug:
# Precautions
-1. When the container is created for the first time, it will prompt that the `ESP-IDF extension` cannot be activated because it depends on the Microsoft `C++ tools` extension. You only need to reopen the container again. This is because the ESP-IDF extension is dependent on the C++ Tools extension being installed first.
-2. If you want to debug on Windows, you need to unplug the USB cable and re-plug in it again, otherwise the corresponding USB port cannot be found in the Windows device manager.
-3. Docker Desktop For Windows needs to be opened and cannot be closed during container development.
+1. If you want to debug on Windows, you need to unplug the USB cable and re-plug in it again, otherwise the corresponding USB port cannot be found in the Windows device manager.
+2. Docker Desktop For Windows needs to be opened and cannot be closed during container development.
diff --git a/docs/tutorial/wsl.md b/docs/tutorial/wsl.md
index cfa227444..77cfbadea 100644
--- a/docs/tutorial/wsl.md
+++ b/docs/tutorial/wsl.md
@@ -190,7 +190,7 @@ the interface is the same as [Internal USB-serial](#internal-usb-serial), that i
### Additional steps for debugging
-Make sure to run `ESP-IDF: Add OpenOCD rules file (For Linux users)` command and `ESP-IDF: Install ESP-IDF Python Packages` command to add openOCD rules and install debug adapter python packages in the WSL before running openOCD and starting a debug session with the ESP-IDF Debug Adapter.
+Make sure to run `ESP-IDF: Add OpenOCD rules file (For Linux users)` command to add OpenOCD rules in the WSL before running OpenOCD and starting a debug session.
## Debugging
diff --git a/docs_espressif/_static/jtag-debugging-overview.jpg b/docs_espressif/_static/jtag-debugging-overview.jpg
new file mode 100644
index 000000000..45cb09872
Binary files /dev/null and b/docs_espressif/_static/jtag-debugging-overview.jpg differ
diff --git a/docs_espressif/conf_common.py b/docs_espressif/conf_common.py
index eed683541..26449e52c 100644
--- a/docs_espressif/conf_common.py
+++ b/docs_espressif/conf_common.py
@@ -6,6 +6,7 @@
extensions += ['sphinx_copybutton',
'sphinxcontrib.wavedrom',
+ 'sphinx.ext.autosectionlabel'
]
# link roles config
diff --git a/docs_espressif/en/additionalfeatures.rst b/docs_espressif/en/additionalfeatures.rst
index e16834ae0..cf15d2ea1 100644
--- a/docs_espressif/en/additionalfeatures.rst
+++ b/docs_espressif/en/additionalfeatures.rst
@@ -1,9 +1,26 @@
+.. _additional features:
+
Additional IDE Features
===============================
.. toctree::
:maxdepth: 1
- ESP-IDF Application Size Analysis
+ Application Size Analysis
+ Application Tracing
+ CMakeLists Editor
+ Code coverage
+ DFU
+ Docker container
ESP-IDF Terminal
+ EFuse Explorer
+ Heap Tracing
+ Hints viewer
Install ESP-IDF Components
-
\ No newline at end of file
+ NVS Partition Table Editor
+ Partition Table Editor
+ Project Configuration
+ QEMU
+ Rainmaker
+ Unit Testing
+ Working with multiple ESP-IDF projects in the same window
+ WSL
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/app-tracing.rst b/docs_espressif/en/additionalfeatures/app-tracing.rst
new file mode 100644
index 000000000..ae88835e7
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/app-tracing.rst
@@ -0,0 +1,36 @@
+Application Tracing
+=========================
+
+This feature allows to transfer arbitrary data between host and ESP32 via JTAG interface with small overhead on program execution.
+
+Developers can use this library to send application specific state of execution to the host and receive commands or other type of info in the opposite direction at runtime.
+
+Let's open a ESP-IDF project. For this tutorial we will use the `system/app_trace_to_host `_ example.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Show Examples Projects**, select the command and choose ``Use Current ESP-IDF (/path/to/esp-idf)``.
+
+If you don't see the option, please review the setup in :ref:`Install ESP-IDF and Tools `.
+
+- A window will be open with a list a projects, go the **system** section and choose the ``app_trace_to_host``. You will see a **Create Project Using Example app_trace_to_host** button in the top and a description of the project below. Click the button and the project will be opened in a new window.
+
+.. image:: ../../../media/tutorials/app_trace/app_tracing.png
+
+For this example, the project has been already configured for application tracing purposes. On other projects you need to enable ``CONFIG_APPTRACE_DEST_TRAX`` and ``CONFIG_APPTRACE_ENABLE`` with the **ESP-IDF: SDK Configuration Editor** command.
+
+- Configure, build and flash your project as explained in the :ref:`Build the project `.
+
+- Click the ``ESP-IDF Explorer`` in the `Visual Studio Code Activity bar `_ (1). On the ``IDF APP TRACER`` section, click the ``Start App Trace`` (2). This will execute the extension's OpenOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the ``APP TRACE ARCHIVES`` named with ``Trace Log #1`` (3). Each time you execute ``Start App Trace`` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
+
+.. note::
+ * The OpenOCD server output is shown in menu **View** > **Output** > **ESP-IDF**.
+ * Make sure that OpenOCD configuration files are properly configured with **ESP-IDF: Select OpenOCD Board Configuration** command.
+
+.. image:: ../../../media/tutorials/app_trace/start_tracing.png
+
+- Click on ``Trace Log #1`` to open a window with the trace report. Click ``Show Report`` button to see the trace output.
+
+.. image:: ../../../media/tutorials/app_trace/trace_report.png
+
+For more information please take a look at the `Application Level Tracing library Documentation `_.
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/application-size-analysis.rst b/docs_espressif/en/additionalfeatures/application-size-analysis.rst
index 042df4cb8..158f3a8ff 100644
--- a/docs_espressif/en/additionalfeatures/application-size-analysis.rst
+++ b/docs_espressif/en/additionalfeatures/application-size-analysis.rst
@@ -1,2 +1,20 @@
ESP-IDF Application Size Analysis
===================================
+
+The ESP-IDF Application Size Analysis tool provides a detailed breakdown of your application’s memory usage, helping developers optimize storage allocation. For a visual size analysis:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Size Analysis of the Binaries** and select the command to visually review the application size information.
+
+.. image:: ../../../media/tutorials/basic_use/size.png
+
+Follow the below instructions to view applciation size analysis from CLI:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Build your Project** and select the command to specify the build your project.
+
+- The application size analysis task will be executed in a terminal showing the size analysis results. You can enable or disable this task being executed with **idf.enableSizeTaskAfterBuildTask** in your settings.json.
+
+.. image:: ../../../media/tutorials/basic_use/size_terminal.png
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/cmakelists-editor.rst b/docs_espressif/en/additionalfeatures/cmakelists-editor.rst
new file mode 100644
index 000000000..ed5c24def
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/cmakelists-editor.rst
@@ -0,0 +1,66 @@
+CMakeLists.txt Editor
+==============================
+
+.. warning::
+ * This will override any existing code in the file with the one generated in the editor. If you have any code not included in the schema (or single line comments) use a regular text editor instead.
+
+When you right click on any CMakeLists.txt file this extension provides a custom CMakeLists.txt Editor to fill an ESP-IDF Project and Component Registration as specified in:
+
+- `ESP-IDF Project CMakeLists.txt `_
+- `ESP-IDF Component CMakeLists.txt Files `_
+
+You need to choose which kind of CMakeLists.txt file (project or component) to edit. There is 2 types of input, one is a simple string and another is an array of strings, such as Component Sources (SRCS).
+
+.. note::
+ * All inputs are described in the `CMakeLists.txt schema `_
+ * This editor doesn't support all CMake functions and syntaxes. This editor should only be used for simple CMakeLists.txt options such as component registration (using idf_component_register) and basic project elements. If you need more customization or advanced CMakeLists.txt, consider reviewing `ESP-IDF Build System `_. Also review **CMakeLists.txt editor schema** for a list of supported code.
+
+
+For this tutorial we will use the get-started's blink example.
+
+1. Right click the ``/blink/CMakeLists.txt``, click on **ESP-IDF: CMakeLists.txt Editor** and select ``Project CMakeLists.txt``.
+
+.. image:: ../../../media/tutorials/cmakelists_editor/cmakelists_editor.png
+
+2. We can add new elements by selecting them from the ``New Element`` dropdown and clicking the ``Add`` button. For simplicity we will just change the project name and save changes with the ``Save`` button.
+
+We can observe when we re-open the file in a regular text-editor changes are reflected.
+
+3. Now let's create a new ESP-IDF component in this project to modify its ``CMakeLists.txt``. Click menu **View** > **Command Palette** and type **ESP-IDF: Create New ESP-IDF Component** and enter the new component name.
+
+4. A new component will be created in ``/blink/components/``. Opening in the regular text editor, you will see an ``idf_component_register`` method with:
+
+.. code-block:: C
+
+ idf_component_register(SRCS "my_component.c"
+ INCLUDE_DIRS "include")
+
+Right click on ``/blink/components//CMakeLists.txt``, click on **ESP-IDF: CMakeLists.txt Editor** and select ``Component CMakeLists.txt``.
+
+.. image:: ../../../media/tutorials/cmakelists_editor/components_editor.png
+
+5. Observe that some fields are of array types such as **Component Sources (SRCS)** since we can add several paths while other are just string input fields (as described in cmakeListsSchema.json).
+
+.. note::
+ While using this extension, source files are added and deleted automatically from the same directory where CMakeLists.txt is located without user intervention.
+
+6. Add a new element ``Public Component Requirements for the Component (REQUIRES)`` and click the ``Add`` button. A new array field will appear.
+
+7. As described in `ESP-IDF Component CMakeLists.txt Files `_, ``REQUIRES`` is used to list the component dependencies. Type ``mbedtls`` and click the ``+`` button (can also press enter on typing).
+
+8. Click on ``Save`` button and close the CMakeLists.txt editor. If you open ``/blink/components//CMakeLists.txt`` on a regular text editor, you will see:
+
+.. code-block:: C
+
+ idf_component_register(SRCS "my_component.c"
+ INCLUDE_DIRS "include"
+ REQUIRES "mbedtls")
+
+Reference links
+-----------------------
+
+To review all fields used in the CMakeLists.txt editor go to:
+
+1. `ESP-IDF Project CMakeLists.txt `_
+
+2. `ESP-IDF Component CMakeLists.txt Files `_
diff --git a/docs_espressif/en/additionalfeatures/coverage.rst b/docs_espressif/en/additionalfeatures/coverage.rst
new file mode 100644
index 000000000..098b755fb
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/coverage.rst
@@ -0,0 +1,79 @@
+ESP-IDF Coverage
+===============================
+
+Source code coverage is data indicating the count and frequency of every program execution path that has been taken within a program runtime. `GCOV `_ is a GCC tool that, when used in concert with the compiler, can generate log files indicating the execution count of each line of a source code.
+
+Your ESP-IDF project should be configured to generate ``gcda/gcno`` coverage files using ``gcov``. Please read `GCOV Code Coverage `_ to learn more about code coverage with GCOV in ESP-IDF projects.
+
+You can use the **ESP-IDF: Configure Project SDKConfig for Coverage** to set required configuration in the SDK Configuration Editor.
+
+Code coverage example
+-------------------------------
+
+Let's use the ESP-IDF `GCOV Example `_ for this tutorial.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Show Examples Projects** and choose ``Use Current ESP-IDF (/path/to/esp-idf)``.
+
+If you don't see the option, please review the current ESP-IDF setup in :ref:`Installation `.
+
+- A window will be open with a list a projects, go the **system** section and choose the ``gcov``. You will see a **Create Project Using Example gcov** button in the top and a description of the project below. Click **Create Project Using Example GCOV** button.
+
+.. image:: ../../../media/tutorials/coverage/gcov_example.png
+
+- Now select a container directory where to copy the example project. For example, if you choose ``/Users/myUser/someFolder`` the resulting folder will be ``/Users/myUser/someFolder/gcov``. This new project directory will be created and opened in Visual Studio Code.
+
+- First you should select an Espressif target (esp32, esp32s2, etc.) with:
+
+ - Navigate to **View** > **Command Palette**.
+ - Type **ESP-IDF: Set Espressif Device Target** command. Default is ``esp32`` and the one used in this tutorial.
+
+- Next configure your sdkconfig project with the **ESP-IDF: Configure Project SDKConfig for Coverage** command or by yourself using the **ESP-IDF: SDK Configuration Editor** command where you can modify the ESP-IDF project settings. After all changes are made, click save and close this window.
+
+.. image:: ../../../media/tutorials/basic_use/gui_menuconfig.png
+
+- The example will enable the following options by default:
+
+ - Enable the Application Tracing Module under ``Component Config`` > ``Application Level Tracing`` > ``Data Destination`` by choosing ``Trace Memory``.
+ - Enable GCOV to host interface under ``Component Config`` > ``Application Level Tracing`` > ``GCOV to Host Enable``.
+ - Enable OpenOCD Debug Stubs under ``Component Config`` > ``ESP32-specific`` > ``OpenOCD Debug Stubs``.
+
+- Now build the project, flash your device and start the ESP-IDF Monitor you can use the **ESP-IDF: Build your Project**, **ESP-IDF: Flash your Project** and **ESP-IDF: Monitor Device** commands.
+
+.. note::
+ There is also a **ESP-IDF: Build, Flash and Start a Monitor on your Device** command which does all three former commands in one.
+
+- Next step is to launch OpenOCD and send some commands. To start openOCD from the extension, execute the **ESP-IDF: OpenOCD Manager** command or from the ``OpenOCD Server (Running | Stopped)`` button in the Visual Studio Code status bar. OpenOCD server output is shown in menu **View** > **Output** > **ESP-IDF**.
+
+- Launch a new terminal with menu **Terminal** > New Terminal and execute ``telnet `` which by default is ``telnet localhost 4444``. Latest MacOS users can use ``nc `` if ``telnet`` is not in the system.
+
+.. note::
+ you can modify **openocd.tcl.host** and **openocd.tcl.port** configuration settings to modify these values.
+
+- Send the OpenOCD command ``esp gcov dump`` for hard-coded dump which will dump two hard-coded dumps based on this example. After that send the ``esp gcov`` command for instant run-time dump.
+
+.. image:: ../../../media/tutorials/coverage/oocd_cmds.png
+
+- After dumping data one or more times, open the desired file in your editor and execute the **ESP-IDF: Add Editor Coverage** command to highlight the editor with code coverage.
+
+- You can customize highlight color using these extension settings.json configuration settings:
+
+ - Covered lines use **idf.coveredLightTheme** for light themes and **idf.coveredDarkTheme** for dark themes.
+ - Partially covered lines use **idf.partialLightTheme** for light themes and **idf.partialDarkTheme** for dark themes.
+ - Non-covered lines use **idf.uncoveredLightTheme** for light themes and **idf.uncoveredDarkTheme** for dark themes.
+
+Visual Studio code support ``"red"``, ``rgb(255,0,120)`` or ``rgba(120,0,0,0.1)``.
+
+.. image:: ../../../media/tutorials/coverage/editor_coverage.png
+
+- When finished, use the **ESP-IDF: Remove Editor Coverage** command to remove the code coverage.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Get HTML Coverage Report for Project** select the command to generate a HTML report for code coverage.
+
+.. image:: ../../../media/tutorials/coverage/html_report.png
+
+.. note::
+ * Check the :ref:`Troubleshooting ` section if you have any issues.
diff --git a/docs_espressif/en/additionalfeatures/dfu.rst b/docs_espressif/en/additionalfeatures/dfu.rst
new file mode 100644
index 000000000..324bf8a9c
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/dfu.rst
@@ -0,0 +1,37 @@
+Device Firmware Upgrade via USB.
+=====================================
+
+Requirements:
+----------------------
+
+- ESP32-S2 or an ESP32-S3 chip
+- You will need to do some electrical connection work. `Here is a guide for the S2 board `_
+- The chip needs to be in bootloader mode for it to be detected as a DFU device. This can be achieved by pressing the “reset” button, while holding the “boot” button pressed
+- For Windows only: You have to register on Windows the device with the WinUSB driver.
+
+.. note::
+ The drivers can be installed by the `Zadig tool `_. Please make sure that the device is in download mode before you run the tool and that it detects the ESP32-S2 device before you install the drivers. The Zadig tool might detect several USB interfaces of ESP32-S2. Please install the WinUSB driver only for the interface where there is no driver installed (probably it is Interface 2) and do not re-install the driver for the other interface.
+
+Flashing:
+~~~~~~~~~~~~
+
+1. Select a device target which is DFU compatible (ESP32-S2/ ESP32-S3)
+
+.. image:: ../../../media/tutorials/dfu/select_device.png
+
+2. Select DFU as flashing method
+
+.. image:: ../../../media/tutorials/dfu/flash_method.png
+
+3. Build the project
+
+.. image:: ../../../media/tutorials/dfu/build_project.png
+
+4. Flash
+
+.. image:: ../../../media/tutorials/dfu/flash.png
+
+Useful Links
+~~~~~~~~~~~~~~~~~~~~~
+
+`Espressif DFU api guide `_
diff --git a/docs_espressif/en/additionalfeatures/docker-container.rst b/docs_espressif/en/additionalfeatures/docker-container.rst
new file mode 100644
index 000000000..8d2f6a02c
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/docker-container.rst
@@ -0,0 +1,300 @@
+Using Docker Container
+===================================
+
+In this tutorial we leverage the `Espressif docker image `_ and few steps to enable `idf.py flash` and `idf.py monitor` to work in the container the serial ports should be configured to be passed to WSL from host Windows machine.
+
+.. warning::
+ * For MacOS users, unfortunately USB Passthrough is not yet supported in MacOS. If you are trying to connect to a Espressif device serial port from a docker container in MacOS, you could try using the `Remote Serial Port `_. The RFC port can be manually defined in the **idf.port** configuration setting for the **ESP-IDF: Flash your Project** command to work.
+
+In this tutorial will show you how to develop your projects based on ``Visual Studio Code`` + ``ESP-IDF extension`` + ``ESP-IDF Docker Image`` to execute all ESP-IDF extension features.
+
+Required Tools
+----------------------------------
+
+Install the following tools before starting the project:
+
+1. Windows WSL (steps to install below).
+2. `Visual Studio Code `_
+3. `usbipd-win `_
+4. `Docker Desktop For Windows `_
+
+Other tools are defined in the project Dockefile and will be part of the executed container.
+
+Docker Desktop
+------------------------
+
+Docker Desktop is an application for MacOS and Windows machines for the building and sharing of containerized applications. For more details, you can refer to `Docker get started documentation `_, but the role of docker here is to import the ``ESP-IDF Docker Image`` and manage it, such as start,restart,close etc.
+
+.. note::
+ the default installing path of docker is C disk, so please move to other disks with ``mklink`` commands if the space size of C disk is not enough.
+
+Installing Ubuntu on Windows for Docker
+-----------------------------------------
+
+If you don't have WSL installed run:
+
+.. code-block::
+
+ wsl --install
+
+Update the WSL kernel with
+
+.. code-block::
+
+ wsl --update
+
+Check the WSL available distributions list with the ``Powershell`` command prompt, as below
+
+.. code-block::
+
+ wsl -l -o
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-l-o.png
+
+so to install a ubuntu distribution in WSL on Windows, please type in the following command:
+
+.. code-block::
+
+ wsl --install --distribution Ubuntu
+
+usbipd-win in Docker
+----------------------
+
+To access the ``USB``, ``serial`` and ``JTAG`` devices which are from the local Windows, ``usbipd-win`` must be installed, else it is impossible to download,monitor and debug on IDF docker image side. the way to install it, it is also same as Windows applications, so it will not be described in detail here.
+
+we still need to do a bit configurations after installing the four tools above:
+
+Check WSL Ubuntu on Windows for Docker
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. check the current WSL version is 2
+
+.. code-block::
+
+ wsl -l -v
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-l-v.png
+
+2. please upgrade to version 2, if not
+
+.. code-block::
+
+ wsl --set-version Ubuntu 2
+
+3. set the Ubuntu distribution as default:
+
+.. code-block::
+
+ wsl -s Ubuntu
+
+at last, to check if the commands have taken effect with ``wsl --status`` command.
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-status.png
+
+Docker Desktop for Windows
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As the Ubuntu distribution has been updated to version 2, adjustments on the Docker side are required, and Ubuntu should also be chosen as the default WSL integration.
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-integration.png
+
+1. Install usbipd in Powershell command prompt:
+
+.. code-block::
+
+ winget install usbipd
+
+2. Now configure the USB serial device to be able to connect to the WSL with ``usbipd``:
+
+3. Open PowerShell command prompt with administrator rights and then type in the command
+
+.. code-block::
+
+ usbipd list
+
+for a list of USB serial devices.
+
+4. To access the specified device from Windows on WSL locally, the device must be bound with **usbipd**. Open PowerShell command prompt with administrator rights and then type in the command:
+
+.. code-block::
+
+ usbipd bind --busid
+
+.. note::
+ this command needs to be used only one time,unless the computer has restarted. **1-1** is the device's bus id ```` I would like to bind.
+
+5. After binding, please attach the specified device to WSL with this command in the Powershell command prompt.
+
+.. code-block::
+
+ usbipd attach --wsl --busid
+
+6. At last, let us check if it works well on both side and type this command on WSL side.
+
+.. code-block::
+
+ dmesg | tail
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl_demsg_tail.png
+
+As we can see above, **1-1** device has been attached to ``ttyACM0``, that means WSL can access the **1-1** USB device now.
+
+Install Remote Containers extension in Visual Studio Code
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Install the **Remote - Containers**, **Remote Development** and **ESP-IDF** extensions, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/remote_container.png
+
+.. image:: ../../../media/tutorials/using_docker_container/remote_development.png
+
+.. image:: ../../../media/tutorials/using_docker_container/esp-idf.png
+
+Practice
+------------------------------------
+
+After all previous steps have taken effect, the WSL or docker container should be ready to use. Here is an example to show you how to utilize these tools.
+
+Example Project with Docker Container
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Using ``Blink`` and ``Hello_world`` projects as examples, If you have more example projects, you can put them in the same folder and mount them together in the IDF Docker image; otherwise, it will take your much more space size on your disk as you need to create one container for each example project, that is not a good solution.
+
+.. image:: ../../../media/tutorials/using_docker_container/example_projects.png
+
+as seen from snapshot above, ``Blink`` and ``Hello_world`` example projects have been put in the same folder and we only need to open this folder with vscode:
+
+.. image:: ../../../media/tutorials/using_docker_container/example_project_vscode.gif
+
+Observe that there is a ``.devcontainer`` folder in the example_project folder, which is not included by default; this is generated by using the ESP-IDF extension of Visual Studio Code to create and configure the ESP-IDF docker image for container development.
+
+If you also need to generate their own ``.devcontainer`` folder content, as follows:
+
+1. Open example project with vscode and then press menu **View** > **Command Palette**.
+2. In the pop-up dialog box, search for the **ESP-IDF: Add Docker Container Configuration** command.
+3. The ``.devcontainer`` folder will be generated for the currently opened project.
+
+.. image:: ../../../media/tutorials/using_docker_container/dev_container.gif
+
+For more information about ``devcontainer.json``, please refer to the comments.
+
+.. code-block:: JSON
+
+ {
+ /* A name for the dev container displayed in the UI */
+ "name": "ESP-IDF",
+ /* container name when creating container */
+ "image": "espressif/idf:latest",
+ /* mount the local folder to /workspaces folder of docker image */
+ "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/project-name,type=bind",
+ /* the path of workspace folder, that means this folder will be opened after container is running
+ */
+ "workspaceFolder": "/workspaces/project-name",
+ /* mount the vscode extensions to the target path, and then they don't need to install again when rebuilding the container
+ */
+ "mounts": [
+ "source=extensionCache,target=/root/.vscode-server/extensions,type=volume"
+ ],
+ /* follow the commands of Dockerfile to create the container
+ */
+ "build": {
+ "dockerfile": "Dockerfile"
+ },
+ /* Machine specific settings that should be copied into the container
+ */
+ "settings": {
+ "terminal.integrated.defaultProfile.linux": "bash",
+ "idf.espIdfPath": "/opt/esp/idf",
+ "idf.customExtraPaths": "",
+ "idf.pythonBinPath": "/opt/esp/python_env/idf5.3_py3.10_env/bin/python",
+ "idf.toolsPath": "/opt/esp",
+ "idf.gitPath": "/usr/bin/git"
+ },
+ /* An array of extensions that should be installed into the container. */
+ "extensions": ["espressif.esp-idf-extension"],
+ /* start the container with privileged mode, else the devices cannot be accessed on the docker image.
+ */
+ "runArgs": ["--privileged"]
+ }
+
+At this point, all related configurations have been completed.
+
+Create a Container
+~~~~~~~~~~~~~~~~~~~~~
+
+1. Create a container and then start your development by clicking the ``><`` green button at the bottom left of Visual Studio Code and select **Open Folder in Container** to start creating a container.
+
+.. note::
+ * It will be slightly slower, because to download the Docker image of ESP-IDF, you only need to download it once.
+
+2. Next open the ``Blink`` example project; if you need to switch to another project, just change it from ``"workspaceFolder": "/workspaces/blink"`` to ``"workspaceFolder": "/workspaces/The name of the sample project you want to open"``, and then re-select **Open Folder in Container**, as follows:
+
+.. image:: ../../../media/tutorials/using_docker_container/create_container.gif
+
+At this moment, you can start to use the ``Blink`` example project for building, flashing, monitoring, debugging, etc.
+
+3. Here taking the esp32-c3 as an example, users only need to change the target device from ``esp32`` to ``esp32-c3``, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/device_target_esp32_c3.png
+
+4. Next, start to build the example project, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_build.gif
+
+5. After building, we can use the following ways to download the firmware.
+
+External USB-Serial for Docker container
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Based on the description above, users can follow the usbipd instructions section mentioned. here ``Silicon Labs CP210x USB to UART Bridge`` is taken as an example, it has been attached to docker image:
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl_demsg_tail_usb_serial.png
+
+- As you can see, this device has attached to ``ttyUSB0``, so ``idf.port`` also need to change accordingly.
+
+.. image:: ../../../media/tutorials/using_docker_container/ttyUSB0.png
+
+- But, the container doesn't know the configuration has changed yet at this moment.
+
+.. image:: ../../../media/tutorials/using_docker_container/unkown_ttyUSB0.png
+
+- So users need to reopen the container, that is **Reopen Folder Locally** and then the new configuration wil be reloaded as well.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_reopen.gif
+
+- At last, click the ``Flash`` button and start to download the firmware.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_uart.gif
+
+Internal USB-serial for Docker container
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Just as the `External USB-Serial for Docker container`_, the only difference is the number attached. where the external usb-serial is ``ttyUSBx``, while the internal usb-serial is ``ttyACMx``.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_uart_internal.gif
+
+USB-JTAG for Docker container
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Same as `External USB-Serial for Docker container`_ and `Internal USB-serial for Docker container`_, but it needs to configure the following extra parameters:
+
+.. image:: ../../../media/tutorials/using_docker_container/extra_parameters.png
+
+- The interface is the same as `Internal USB-serial for Docker container`_, that is ``ttyACMx``:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_jtag.gif
+
+Debugging in Docker Container
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Make sure to run **ESP-IDF: Add OpenOCD rules file (For Linux users)** command to add OpenOCD rules in the docker container before running OpenOCD and starting a debug session.
+
+- After following `USB-JTAG for Docker container`_, press ``F5`` to start to debug:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_debug.gif
+
+**Precautions**
+
+1. If you want to debug on Windows, you need to unplug the USB cable and re-plug in it again, otherwise the corresponding USB port cannot be found in the Windows device manager.
+2. Docker Desktop For Windows needs to be opened and cannot be closed during container development.
+
diff --git a/docs_espressif/en/additionalfeatures/efuse.rst b/docs_espressif/en/additionalfeatures/efuse.rst
new file mode 100644
index 000000000..2c0d36b16
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/efuse.rst
@@ -0,0 +1,24 @@
+EFuse Explorer
+========================
+
+This feature requires ESP-IDF ``>=v4.3``.
+
+Espressif chips has a number of eFuses which can store system and user parameters. Each eFuse is a one-bit field which can be programmed to 1 after which it cannot be reverted back to 0. This feature is based on ESP-IDF `espfuse.py `_ script to read and write efuses.
+
+1. Select the Serial Port:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Select Port to Use** and select the command to specify the serial port of your device.
+
+2. Click the ``ESP-IDF Explorer`` in the `Visual Studio Code Activity bar `_. On the ``EFUSE EXPLORER`` section, click the ``Connect your Board First``.
+
+.. image:: ../../../media/tutorials/efuse/efuse_connect.png
+
+3. A list of EFuses categories will now be shown in a tree structure.
+
+.. image:: ../../../media/tutorials/efuse/efuse_list.png
+
+4. If you click on any category, you will see the category Efuses and Values.
+
+.. image:: ../../../media/tutorials/efuse/efuse_expanded.png
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/esp-terminal.rst b/docs_espressif/en/additionalfeatures/esp-terminal.rst
index 7f711fb56..f631510fd 100644
--- a/docs_espressif/en/additionalfeatures/esp-terminal.rst
+++ b/docs_espressif/en/additionalfeatures/esp-terminal.rst
@@ -1,2 +1,10 @@
ESP-IDF Terminal
===============================
+
+Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Open ESP-IDF Terminal** and select the command.
+- This will launch a system terminal with ESP-IDF, ESP-IDF Tools and ESP-IDF Python Virtual Environment loaded as environment variables.
+- Just typing ``idf.py`` or ``python -m esptool`` should work to execute scripts from ESP-IDF and additional frameworks.
+
+.. image:: ../../../media/tutorials/features/idf-terminal.png
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/heap-tracing.rst b/docs_espressif/en/additionalfeatures/heap-tracing.rst
new file mode 100644
index 000000000..cf4444441
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/heap-tracing.rst
@@ -0,0 +1,40 @@
+Heap Tracing
+========================
+
+Heap Tracing allows tracing of code which allocates/frees memory. More information in `Heap tracing documentation `_. Please also review `System behaviour analysis `_ for systemView tracing configuration.
+
+Let's open a ESP-IDF project. For this tutorial we will use the ``system/sysview_tracing_heap_log`` example.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Show Examples Projects**, select the command and choose ``Use Current ESP-IDF (/path/to/esp-idf)``.
+
+If you don't see the option, please review the setup in :ref:`Install ESP-IDF and Tools `.
+
+- A window will be open with a list a projects, go the **system** section and choose the ``sysview_tracing_heap_log``. You will see a **Create Project Using Example sysview_tracing_heap_log** button in the top and a description of the project below. Click the button and the project will be opened in a new window.
+
+.. image:: ../../../media/tutorials/heap_trace/sysview_tracing_heap_log.png
+
+For this example, the project has been already configured for application tracing purposes.
+
+.. note::
+ * For more information please take a look at the `Application Level Tracing library documentation `_.
+
+- Configure, build and flash your project as explained in the :ref:`Build the project `.
+
+.. note::
+ * The OpenOCD server output is shown in menu **View** > **Output** > **ESP-IDF**.
+ * Make sure that OpenOCD configuration files are properly configured with **ESP-IDF: Select OpenOCD Board Configuration** command.
+
+- Click the ``ESP-IDF Explorer`` in the `Visual Studio Code Activity bar `_ (1). On the ``ESP-IDF APP TRACER`` section, click the ``Start Heap Trace`` (2). This will execute the extension's OpenOCD server and send the corresponding tracing commands to generate a tracing log. You can see the generated tracing log in the ``APP TRACE ARCHIVES`` named with ``Heap Trace Log #1`` (3). Each time you execute ``Start Heap Trace`` a new tracing will be generated and shown in the archives list. You can also start tracing by running the **ESP-IDF: App Trace** command.
+
+.. image:: ../../../media/tutorials/heap_trace/start_heap_tracing.png
+
+- Click on ``Heap Trace Log #1`` and choose the ``Heap Tracing`` option for ``ESP-IDF Tracing`` report window. Click ``Show Report`` button to reload the visualization.
+
+.. image:: ../../../media/tutorials/heap_trace/heap_trace_report.png
+
+- Click on ``Heap Trace Log #1`` and choose the ``SystemView Tracing`` option for the ``ESP-IDF System View Report`` window.
+
+.. image:: ../../../media/tutorials/heap_trace/sysview_report.png
+
diff --git a/docs_espressif/en/additionalfeatures/hints-viewer.rst b/docs_espressif/en/additionalfeatures/hints-viewer.rst
new file mode 100644
index 000000000..8a508067f
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/hints-viewer.rst
@@ -0,0 +1,24 @@
+Hints Viewer
+=================
+
+This feature enhances your development experience by providing helpful hints for errors detected in your code.
+
+``idf.py`` will try to suggest hints on how to resolve errors. It works with a database of hints stored in ``$IDF_PATH/tools/idf_py_actions/hints.yml`` and the hints will be printed if a match is found for the given error.
+
+Hover Over Errors for Hints
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When you hover over errors in the text editor, if the error matches one listed in our hints.yml file, a hint is displayed.
+
+.. image:: ../../../media/tutorials/hints/hover.gif
+
+Bottom Panel for Hints
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. **Automatic Updates:** The ESP-IDF bottom panel automatically updates to display hints based on the errors in your currently opened file.
+
+.. image:: ../../../media/tutorials/hints/bottom_panel.png
+
+2. **Manual Search:** You can manually search for hints by copy pasting errors.
+
+.. image:: ../../../media/tutorials/hints/manual_search.gif
diff --git a/docs_espressif/en/additionalfeatures/install-esp-components.rst b/docs_espressif/en/additionalfeatures/install-esp-components.rst
index d431b97ec..3e6d87616 100644
--- a/docs_espressif/en/additionalfeatures/install-esp-components.rst
+++ b/docs_espressif/en/additionalfeatures/install-esp-components.rst
@@ -1,2 +1,24 @@
Install ESP-IDF Components
===============================
+
+The **ESP-IDF: ESP Component Registry** will launch a UI showing the `ESP Component Registry `_.
+
+.. image:: ../../../media/tutorials/features/component-registry.png
+
+You can browse many different ESP components and install them on your current ESP-IDF project with the ``Install`` button.
+
+.. image:: ../../../media/tutorials/features/install-component.png
+
+You can also create a new project from ESP component example using the ``Create project from this template`` button.
+
+.. image:: ../../../media/tutorials/features/create-project-from-component-example.png
+
+Find out more about the `ESP Component Registry official documentation `_.
+
+Install Arduino-ESP32 as Component
+-------------------------------------
+
+The **ESP-IDF: Add Arduino-ESP32 as ESP-IDF Component** command will add `Arduino-ESP32 `_ as a ESP-IDF component in your current directory (``${CURRENT_DIRECTORY}/components/arduino``). You can also use the **ESP-IDF: Create Project from Extension Template** command with ``arduino-as-component`` template to create a new project directory that includes Arduino-esp32 as an ESP-IDF component.
+
+.. note::
+ Not all versions of ESP-IDF are supported. Make sure to check `Arduino-ESP32 `_ to see if your ESP-IDF version is compatible.
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/multiple-projects.rst b/docs_espressif/en/additionalfeatures/multiple-projects.rst
new file mode 100644
index 000000000..1bccd5590
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/multiple-projects.rst
@@ -0,0 +1,154 @@
+.. _multiple projects:
+
+Working with Multiple Projects
+==================================
+
+For big projects, a user will typically have one or more projects to build, flash or monitor. The ESP-IDF Extension follows the `Visual Studio Code Workspace File Schema `_ to identify all projects folders inside the current workspace (which would be the root folder). Please take a look at `Creating User and Workspace Settings `_.
+
+Configuration settings are overriden as:
+
+1. Workspace folder configuration settings in ``${workspaceFolder}/.vscode/settings.json``
+2. Workspace configuration settings defined in the workspace's ``.code-workspace`` file as shown below.
+3. User settings defined in
+
+- **Windows** ``%APPDATA%\Code\User\settings.json``
+- **MacOS** ``$HOME/Library/Application Support/Code/User/settings.json``
+- **Linux** ``$HOME/.config/Code/User/settings.json``
+
+This extension uses the **idf.saveScope** configuration setting to determine where to save configuration settings in features such as the Setup Wizard. You can modify this using the **ESP-IDF: Select where to Save Configuration Settings** command.
+
+You can select the current project by clicking the **ESP-IDF Current Project** Item in the Visual Studio Code Status bar or by pressing F1 and typing **ESP-IDF: Pick a Workspace Folder** which will determine the folder where to obtain the ESP-IDF Settings such as current device USB port, ESP-IDF path, etc.
+
+Projects folders (Known in vscode as workspace folders) and workspace level settings are defined in some ``.code-workspace`` file such as:
+
+.. code-block:: JSON
+
+ {
+ "folders": [
+ {
+ "path": "./project1"
+ },
+ {
+ "path": "./project2"
+ }
+ ],
+ "settings": {
+ "idf.port": "/dev/ttyUSB1",
+ "idf.espIdfPath": "${env:HOME}/esp/esp-idf"
+ }
+ }
+
+Settings in the root folder's ``.code-workspace`` can be used when your **ESP-IDF Current Project** directory doesn't contain a ``.vscode/settings.json`` file.
+
+If you want to open a project with multiple subprojects in Visual Studio Code, click Menu **File** > **Open Workspace** which will open a window to select the ``.code-workspace`` file describing your workspace.
+You can either manually create this ``.code-workspace`` file and define all sub folders (projects) or when you click Menu **File** > **Save Workspace as...** which doesn't automatically add any folder inside the current directory.
+You can add a folder to the workspace when you click Menu **File** > **Add Folder to Workspace...**.
+
+.. note::
+ You still need to manually select the corresponding debug configuration in the Debug tab of your current workspace folder. There is a project directory suffix on each debug configuration.
+
+Example
+------------
+
+Consider the following multiple projects directory tree example:
+
+.. code-block::
+
+ ---> /my-projects-root
+ ------> /my-projects-root/project1
+ ------> /my-projects-root/project2
+ ------------> /my-projects-root/project2/.vscode/settings.json
+
+
+and ``my-ws.code-workspace``:
+
+.. code-block:: JSON
+
+ {
+ "folders": [
+ {
+ "path": "/my-projects-root/project1"
+ },
+ {
+ "path": "/my-projects-root/project2"
+ }
+ ],
+ "settings": {
+ "idf.port": "/dev/ttyUSB1",
+ "idf.espIdfPath": "${env:HOME}/esp/esp-idf"
+ }
+ }
+
+1. If you open Visual Studio Code, click Menu **File** > **Open Workspace** and open ``my-ws.code-workspace`` you will see just the folders defined in this workspace (``/my-projects-root/project1`` and ``/my-projects-root/project2``).
+ - For ``project1``, Visual Studio Code will use the settings from ``my-ws.code-workspace`` first then other required settings from the User Settings.
+ - For ``project2``, Visual Studio Code will use those settings from ``/my-projects-root/project2/.vscode/settings.json`` first, then all required (and not found) settings from ``my-ws.code-workspace`` and finally in the Visual Studio Code User settings.
+2. If you just open the ``/my-projects-root`` or ``/my-projects-root/project1`` directory Visual Studio Code will use the User Settings.
+ - If you just open the ``/my-projects-root/project2`` directory Visual Studio Code will use the ``/my-projects-root/project2/.vscode/settings.json`` then other required settings from the User Settings.
+
+.. note::
+ If you open ``/my-projects-root``, any of the sub projects will not be recognized as Workspace Folders, you need to add them to ``my-ws.code-workspace`` (manually or using **File** > **Add Folder to Workspace...**) and open this workspace as specified before.
+
+Use multiple build configuration in the same workspace folder
+-------------------------------------------------------------------
+
+Use the `ESP-IDF CMake Multiple Configuration Example `_ to follow this tutorial.
+
+Use the **ESP-IDF: Open Project Configuration** and create two configurations profiles: ``prod1`` and ``prod2`` and ``sdkconfig.prod_common;sdkconfig.prod1`` and ``sdkconfig.prod_common;sdkconfig.prod2`` on the sdkconfig defaults field as shown below:
+
+.. image:: ../../../media/tutorials/project_conf/enterConfigName.png
+
+.. image:: ../../../media/tutorials/project_conf/prod1.png
+
+.. image:: ../../../media/tutorials/project_conf/prod2.png
+
+After creating each profile and the configuration settings for each profile, click the ``Save`` button and use the **ESP-IDF: Select Project Configuration** command to choose the configuration to override extension configuration settings.
+
+.. image:: ../../../media/tutorials/project_conf/selectConfig.png
+
+After a configuration profile is selected, the selected profile will be shown in the status bar as shown before.
+
+.. image:: ../../../media/tutorials/project_conf/configInStatusBar.png
+
+Now use the **ESP-IDF: Build your Project** to build the project for ``prod1`` and ``prod2``. You can observe binaries generated for each profiles in the path defined in each profile as before. You can use **ESP-IDF: Select Project Configuration** command to switch between configurations.
+
+Use the **ESP-IDF: Open Project Configuration** command to modify, add or delete the configuration profiles. If you want to stop using these profile, just delete all configuration profiles.
+
+Multiple ESP-IDF Versions
+--------------------------------
+
+You can use multiple ESP-IDF versions, one for each ESP-IDF project by explicitly defining your configuration settings in your current project directory ``.vscode/settings.json``.
+
+1. Set the ``idf.saveScope`` to WorkspaceFolder with the **ESP-IDF: Select where to Save Configuration Settings** command or directly in the ``.vscode/settings.json`` of desired project opened in Visual Studio Code.
+
+2. Configure the extension as described in :ref:`Install ESP-IDF and Tools ` documentation.
+
+3. Make sure to delete any previous build directory since a different ESP-IDF version would not work if there is any cache of previous build.
+
+4. Repeat from 1) on any project you would like to use a different version from the global user settings.
+
+Using Multiple Build Configuration Manually
+------------------------------------------------
+
+As shown in the `ESP-IDF CMake Multiple Configuration example `_ you can use multiple build directories and multiple sdkconfig defaults files to produce different production output.
+
+In this extension you can define the build directory with the ``idf.buildPath`` (``idf.buildPathWin`` fo Windows) configuration setting and the list of sdkconfig default files with ``idf.sdkconfigDefaults`` configuration. The value of these settings will be using by the extension build command.
+
+Say you want to make product 1:
+
+1. you have sdkconfig files ``sdkconfig.prod_common`` and ``sdkconfig.prod1`` and you want the resulting firmware to be generated in ``/build_prod1`` where ``build_prod1`` is the name of the custom build folder.
+2. Add these settings in ``/.vscode/settings.json``:
+
+.. code-block:: JSON
+
+ {
+ // ...
+ "idf.buildPath": "${workspaceFolder}/build_prod1",
+ "idf.sdkconfigDefaults": ["sdkconfig.prod_common", "sdkconfig.prod1"]
+ // ...
+ }
+
+3. Build your project using the **ESP-IDF: Build your Project** command.
+
+4. Your resulting files will be generated in ``/build_prod1`` and the sdkconfig being used by the SDK Configuration Editor will be ``/build_prod1/sdkconfig``.
+
+5. Change values in 2) for different products and configurations.
diff --git a/docs_espressif/en/additionalfeatures/nvs-partition-editor.rst b/docs_espressif/en/additionalfeatures/nvs-partition-editor.rst
new file mode 100644
index 000000000..8ed49cd8a
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/nvs-partition-editor.rst
@@ -0,0 +1,40 @@
+NVS Partition Editor
+=========================
+
+The **ESP-IDF: Open NVS Partition Editor** allows you to create a NVS partition binary file based on key-value pairs in CSV file.
+
+The resulting binary file is compatible with NVS architecture defined in `ESP-IDF Non Volatile Storage `_.
+
+The expected CSV format is:
+
+.. code-block::
+
+ key,type,encoding,value <-- column header (must be the first line)
+ namespace_name,namespace,, <-- First entry must be of type "namespace"
+ key1,data,u8,1
+ key2,file,string,/path/to/file
+
+1. Click menu **View** > **Command Palette...**
+2. Type **ESP-IDF: Open NVS Partition Editor** and select the command (to create a new file) or right click an existing partition table CSV file.
+
+3. If creating a new file, choose the name of the file. It will be created in the current editor directory.
+
+.. note::
+ Make sure first 2 lines of existing CSV file are as shown in expected CSV format above.
+
+4. Make desired changes to CSV file.
+
+.. note::
+ Make sure that the size of partition is enough for inserted data.
+
+.. image:: ../../../media/tutorials/nvs/nvs_partition_editor.png
+
+5. Save the CSV data (First time will create the CSV file).
+
+6. (OPTIONAL) Enable encryption of the binary. If encrypt is enable, can disable the generate key option to use your own key if desired, in which case you need to set the key absolute path.
+
+7. Generate the partition binary.
+
+This feature is based on ESP-IDF `NVS Partition Generator Utility `_.
+
+Make sure extension is configured as shown in :ref:`Install ESP-IDF and Tools ` documentation for this feature to work properly.
diff --git a/docs_espressif/en/additionalfeatures/partition-table-editor.rst b/docs_espressif/en/additionalfeatures/partition-table-editor.rst
new file mode 100644
index 000000000..4fed82ea6
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/partition-table-editor.rst
@@ -0,0 +1,26 @@
+Partition Table Editor
+=========================
+
+- Click menu **View** > **Command Palette...**
+- Type **ESP-IDF: SDK Configuration Editor** and select the command.
+
+.. image:: ../../../media/tutorials/partition_table/sdkconfig.png
+
+- Search for ``partition_table_custom`` and select ``Custom Partition Table CSV`` from Partition Table and set the filename. It will search this file in your current project directory.
+
+.. image:: ../../../media/tutorials/partition_table/partition_table_custom.png
+
+- If the partition table file doesn't exists, when you execute the command the file will be created. But if the partition table file already exists, make sure that the first two lines of the partion table CSV file are:
+
+.. code-block::
+
+ # ESP-IDF Partition Table
+ # Name, Type, SubType, Offset, Size, Flag
+
+- Once partition table editor is open, you can edit the partition table as desired. For more information please refer to `ESP-IDF Partition Tables `_ documentation.
+
+.. image:: ../../../media/tutorials/partition_table/partition_editor.png
+
+- Once you are satisfied press ``Save`` to save the changes, ``this will override the content of CSV file``.
+
+- Now you can click the ``Select Flash Method``, ``Build``, ``Flash`` right top buttons in order to build and flash the partition table to the chip.
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/project-configuration.rst b/docs_espressif/en/additionalfeatures/project-configuration.rst
new file mode 100644
index 000000000..7d9349e6b
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/project-configuration.rst
@@ -0,0 +1,104 @@
+Project Configuration Editor
+====================================
+
+To allow you to have multiple configurations for the same project, you can define several settings to produce different build results. For example, take a look at the `Multiple configuration tutorial `_ which uses the ESP-IDF CMake build system `multi_config `_ example.
+
+1. Click menu **View** > **Command Palette...**
+2. Type **ESP-IDF: Open Project Configuration** and select the command.
+3. This will launch a Project configuration wizard to manage the project configuration profiles to record the following settings for each configuration:
+
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| Setting ID | Description |
++===================================+===========================================================================================+
+| **idf.cmakeCompilerArgs** | Arguments for CMake compilation task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.ninjaArgs** | Arguments for Ninja build task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.buildPath** | Custom build directory name for extension commands. (Default: \${workspaceFolder}/build) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.sdkconfigFilePath** | Absolute path for sdkconfig file |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.sdkconfigDefaults** | List of sdkconfig default values for initial build configuration |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.customExtraVars** | Variables to be added to system environment variables |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.adapterTargetName** | ESP-IDF Target Chip (Example: esp32) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.flashBaudRate** | Flash Baud rate |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.monitorBaudRate** | Monitor Baud Rate (Empty by default to use SDKConfig CONFIG_ESP_CONSOLE_UART_BAUDRATE) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.openOcdDebugLevel** | Set openOCD Debug Level (0-4) Default: 2 |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.openOcdConfigs** | Configuration Files for OpenOCD. Relative to OPENOCD_SCRIPTS folder |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.openOcdLaunchArgs** | Launch Arguments for OpenOCD before idf.openOcdDebugLevel and idf.openOcdConfigs |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.preBuildTask** | Command string to execute before build task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.postBuildTask** | Command string to execute after build task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.preFlashTask** | Command string to execute before flash task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.postFlashTask** | Command string to execute after flash task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+
+4. After defining a profile and the settings for each profile use:
+
+- Click menu **View** > **Command Palette...**
+- Type **ESP-IDF: Select Project Configuration** command to choose the configuration to override extension configuration settings.
+
+There are many use cases for having multiple configurations profiles. It allows you to store settings together and easily switch between one and the other. Let's explore one of this use cases here, having a development and production build profiles.
+
+Development and Release Profiles for ESP-IDF Project
+-------------------------------------------------------
+
+A typical `ESP-IDF Project Structure `_ is like this:
+
+.. code-block::
+
+ - /path/to/esp-project/
+ - CMakeLists.txt
+ - sdkconfig
+ - components/ - component1/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - component2/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - include/ - component2.h
+ - main/ - CMakeLists.txt
+ - src1.c
+ - src2.c
+
+ - build/
+
+In the ESP-IDF CMake build system, the project configuration settings are saved using the SDK Configuration Editor which store these values in a ``/path/to/esp-project/sdkconfig`` file. The default case is to create an ``/path/to/esp-project/sdkconfig`` file in the ESP-IDF project root directory and a ``/path/to/esp-project/build`` directory as the build directory path.
+
+When the current ESP-IDF project is under version control system, the ``/path/to/esp-project/sdkconfig`` can change on any user build which can alter the project expected behavior. For such a reason is better to move those project specific settings to an ``sdkconfig.defaults`` file (or list of files) which is not modified by the build system. ``/path/to/esp-project/sdkconfig`` can be added to the ``.gitignore`` list. This ``sdkconfig.defaults`` can be generated by the **ESP-IDF: Save Default SDKCONFIG file (save-defconfig)** (ESP-IDF v5.0 or higher) command.
+
+.. note::
+ The ``sdkconfig.defaults`` file is used by the build system to override defaults project settings when creating the ``sdkconfig`` file as described in the ESP-IDF documentation `custom sdkconfig defaults `_.
+
+With this extension settings, the default build path (/path/to/esp-project/build), sdkconfig file path and sdkconfig.defaults can be modified from their default location, the one described in the project structure before. With the **ESP-IDF: Project Configuration Editor** you can define multiple locations of the build directory with ``Build Directory Path``, ``SDKConfig File Path`` for the SDKConfig file and ``SDKConfig Defaults`` list of SDKConfig files to create the SDKConfig file in the specified ``SDKConfig File Path`` path.
+
+For this example we will create two profiles, **development** and **production**, to create 2 different build directories and 2 different sdkconfig files.
+
+1. Click menu **View** > **Command Palette...**
+2. Type **ESP-IDF: Save Default SDKCONFIG file (save-defconfig)** select the command to generate a `sdkconfig.defaults` file. This command is added in ESP-IDF v5.0. You can also create this sdkconfig.defaults manually.
+3. Click menu **View** > **Command Palette...**
+4. Type **ESP-IDF: Open Project Configuration** select the command and create a new profile with name ``production``. Set ``SDKConfig Defaults`` the previous ``sdkconfig.defaults`` file. If you want to separate the build directory of this new **production** profile from the default ``/path/to/esp-project/build`` directory, specify a build directory path using the ``Build Directory Path`` field to something like ``/path/to/esp-project/build_production`` and the ``SDKConfig file path`` field to something like ``/path/to/esp-project/build_production/sdkconfig``.
+
+5. Create a new profile with name ``development``. You can set the build directory path using the ``Build Directory Path`` field to something like ``/path/to/esp-project/build_dev`` and the ``SDKConfig File Path`` field to something like ``/path/to/esp-project/build_dev/sdkconfig`` to avoid mixing **development** with **production** files.
+
+6. After creating each profile and the configuration settings for each profile, click the ``Save`` button and use the extension **ESP-IDF: Select Project Configuration** command to choose desired profile.
+
+7. When you choose the **production** profile and use the **ESP-IDF: Build your Project** the ``/path/to/esp-project/build_production/sdkconfig`` would be created and the binaries are going to be created in ``/path/to/esp-project/build_production``.
+
+8. If you choose the **development** profile, the ``/path/to/esp-project/build_dev/sdkconfig`` would be created and the binaries are going to be created in ``/path/to/esp-project/build_dev``.
+
+9. These profiles and each profile settings are going to be saved in the ``/path/to/esp-project/esp_idf_project_configuration.json``.
+
+The previous production profile could be split into multiple production profiles, as it is done in the `ESP-IDF CMake Multiple configuration example `_ and the `Multiple configuration tutorial `_ by separating ``sdkconfig.defaults`` into common SDKConfig settings in a ``sdkconfig.prod_common`` file and product specific settings in ``sdkconfig.prod1`` file and ``sdkconfig.prod2`` file respectively. Multiple SDKConfig defaults files can be specified in the project configuration editor profile ``sdkconfig defaults`` field as ``sdkconfig.prod_common;sdkconfig.prod1`` where the values are loaded in order as explained in `here `_.
+
+This is just an example of the possibility of this project configuration editor. You can define multiple settings for different kinds of development scenarios such as testing, profiling, etc.
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/qemu.rst b/docs_espressif/en/additionalfeatures/qemu.rst
new file mode 100644
index 000000000..86f188ba5
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/qemu.rst
@@ -0,0 +1,25 @@
+.. _qemu:
+
+ESP-IDF QEMU Integration with Visual Studio Code
+===================================================
+
+When you create a project using this extension commands, there is Dockerfile which can be used with the `Microsoft Remote Containers Extension `_. You can open any project inside a container with the **Remote Containers: Open Folder in Container..** command. Besides including an already configured setup for ESP-IDF and tools (this is based on the ESP-IDF docker image), a fork of `Espressif QEMU fork `_ for Espressif devices is included, which can be used for emulated development.
+
+.. note::
+ * The **ESP-IDF: Add Docker Container Configuration** command can be used to add these files to the current project directory.
+
+Development steps:
+
+1. Prepare a project folder in a container based on the dockerfile in the templates ``.devcontainer`` directory in this repository. For this you can:
+ - Create a project using **ESP-IDF: New Project**, **ESP-IDF: Show Examples Projects** or **ESP-IDF: Create Project from Extension Template** command which will include the ``.devcontainer`` directory.
+ - Use the **ESP-IDF: Add Docker Container Configuration** command to add the ``.devcontainer`` files to the currently opened project directory.
+2. Use the **Remote Containers: Open Folder in Container..** command to open the folder within the container.
+3. The **Remote Containers** will build the container from the Dockerfile (if it has not been created before) and install this extension on the container.
+4. The extension should be self configured, otherwise run the setup wizard.
+5. Write your code and build the project with the **ESP-IDF: Build your Project** command.
+6. Use the **ESP-IDF: Launch QEMU Server** command or the **[QEMU Server]** link in the activity bar to launch QEMU with the binaries from the build directory.
+7. You can use the **ESP-IDF: Monitor QEMU Device** command to launch a terminal running IDF Monitor on QEMU. This extension uses the **idf.qemuTcpPort** configuration setting for the serial monitor in QEMU.
+8. If you want to launch a QEMU debug session, use the **ESP-IDF: Launch QEMU Debug Session** commmand, which will stop any existing QEMU server and launch a new QEMU server for debugging.
+
+.. note::
+ Using QEMU is not limited to a docker container, basically the extension assumes that ``qemu-system-xtensa`` is available in the environment variable PATH for the **ESP-IDF: Launch QEMU Server** command and that a QEMU server is running for **ESP-IDF: Monitor QEMU Device** and **ESP-IDF: Launch QEMU Debug Session**.
diff --git a/docs_espressif/en/additionalfeatures/rainmaker.rst b/docs_espressif/en/additionalfeatures/rainmaker.rst
new file mode 100644
index 000000000..faac1a5d6
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/rainmaker.rst
@@ -0,0 +1,21 @@
+ESP Rainmaker
+====================
+
+This tutorial will show you how to use `ESP Rainmaker `_ integration in this extension.
+
+You need to have a Espressif device and a ESP Rainmaker Account, if you don't have these please `refer here `_.
+
+Click the ``ESP-IDF Explorer`` in the `Activity bar `_. On the ``Rainmaker`` section, click the ``Connect Rainmaker``.
+
+.. image:: ../../../media/tutorials/rainmaker/connect.png
+
+You will be prompted for the authentication method to connect with Rainmaker, either using the Rainmaker account user and password or with an OAuth app like Google, Github or Apple.
+
+.. note::
+ * For OAuth to work properly, you will be asked to provide permission to Visual Studio Code and the broswer to open Visual Studio Code back once the OAuth flow is done.
+
+.. image:: ../../../media/tutorials/rainmaker/auth_method.png
+
+You will see a list of nodes associated to the account here. Next to the account name there is an ``Add new node`` and ``Unlink Rainmaker account`` icons. Next to the device there is a ``Remove this node`` icon. Below you can see the type of rainmaker device (for example Switch) with a set of parameters that you can modify such as ``Name`` and ``Power`` with the ``Update param for this device`` icon.
+
+.. image:: ../../../media/tutorials/rainmaker/nodes_info.png
\ No newline at end of file
diff --git a/docs_espressif/en/additionalfeatures/unit-testing.rst b/docs_espressif/en/additionalfeatures/unit-testing.rst
new file mode 100644
index 000000000..c4c844d1b
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/unit-testing.rst
@@ -0,0 +1,68 @@
+.. _unit testing:
+
+ESP-IDF Unit testing with Unity
+===================================
+
+When you are developing an application using ESP-IDF and you are considering adding unit testing for your components functions, this extension can help to discover and execute tests on your device based on Unity as described in `Unit Testing in ESP32 `_ documentation.
+
+The extension explores tests in your current project workspace folders that follow the convension in the former documentation, this is, all tests files that follow ``**/test/test_*.c`` glob pattern in your current workspace folders. The tests cases are parsed with the ``TEST_CASE\\(\"(.*)\",\\s*\"(.*)\"\\)`` regular expression matching the following test file format:
+
+.. code-block:: C
+
+ TEST_CASE("test name", "[module name]")
+ {
+ // Add test here
+ }
+
+
+Configure the ESP-IDF Project to enable unit tests in the extension
+-------------------------------------------------------------------------
+
+Let's say you have a ESP-IDF project with the following structure:
+
+.. code-block::
+
+ unit_test
+ - components - Components of the application project
+ - testable
+ - include
+ - test - Test directory of the component
+ * component.mk / CMakeLists.txt - Component makefile of tests
+ * test_mean.c - Test source file
+ * component.mk / CMakeLists.txt - Component makefile
+ * mean.c - Component source file
+
+
+Inside the ``testable`` component, unit tests are added into ``test`` directory. ``test`` directory contains source files of the tests and the component makefile (component.mk / CMakeLists.txt).
+
+If you want to add tests for a ``testable`` component, just need to define a ``test`` subdirectory and add ``test_name.c`` files with the different test cases to run.
+
+This is the structure from the `ESP-IDF unit_test example `_ which can serve as reference.
+
+Running the tests
+--------------------------------------------
+
+When you click on the Testing Tab in the `Visual Studio Code Activity bar `_, the extension will try to find all test files and test cases and save the list of test components to add later in step 3.
+
+.. note::
+ User needs to install ESP-IDF PyTest python requirements by selecting menu **View** > **Command Palette** and type **ESP-IDF Unit Test: Install ESP-IDF PyTest requirements**. Select the command and see the pytest package installation output.
+
+When it press the run button on a test, it will configure the current project before the tests as follows:
+
+1. Check that PyTest requirements from ESP-IDF are satisfied.
+
+.. note::
+ Unit tests in this extension requires `ESP-IDF PyTest requirements `_ to be installed in your Python virtual environment.
+
+2. Install ESP-IDF PyTest requirements if they are not found in the python current virtual environment specified in **idf.pythonBinPath** configuration setting in settings.json.
+
+3. Copy the unity-app from the extension template and add the test components to the main CMakeLists.txt ``TEST_COMPONENTS`` cmake variable. The extension unity-app is a basic ESP-IDF application with a unity menu that will be built and flashed on the current **idf.port** serial device with all test cases that were found during exploration step.
+
+.. note::
+ You can also create, build and flash the unity test application using the **ESP-IDF Unit Test: Install ESP-IDF PyTest requirements** extension command, which will copy build and flash to your device the generated unit testing application.
+
+4. Runs `pytest-embedded `_ a plugin that extends PyTest to run on esp-idf devices and output the results as XML file in the unity-app directory. This is executed as an extension task and the output shown in the terminal (similar to Build and Flash tasks).
+
+5. The XML results file is parsed and test results are updated in the Testing tab with test duration.
+
+6. You can refresh the tests and build the unity-app again with the ``Refresh Tests`` button from the Testing tab.
diff --git a/docs_espressif/en/additionalfeatures/wsl.rst b/docs_espressif/en/additionalfeatures/wsl.rst
new file mode 100644
index 000000000..3235f45f8
--- /dev/null
+++ b/docs_espressif/en/additionalfeatures/wsl.rst
@@ -0,0 +1,222 @@
+Using WSL in Windows
+===================================
+
+- In this tutorial will show you how to develop your projects based on ``Visual Studio Code`` + ``ESP-IDF Extension`` + ``Remote - WSL`` to implement all features of this extension in WSL.
+
+- Install the following tools before starting the project:
+
+1. Windows WSL (steps to install below).
+2. `Visual Studio Code `_
+3. `usbipd-win `_
+
+Installing Ubuntu on Windows (WSL)
+-----------------------------------
+
+- If you don't have WSL installed run:
+
+.. code-block::
+
+ wsl --install
+
+- Update the WSL kernel with
+
+.. code-block::
+
+ wsl --update
+
+- Check the WSL available distributions list with the ``Powershell`` command prompt, as below:
+
+.. code-block::
+
+ wsl -l -o
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-l-o.png
+
+- So to install a ubuntu distribution in WSL on Windows, please type in the following command:
+
+.. code-block::
+
+ wsl --install --distribution Ubuntu
+
+usbipd-win in WSL
+---------------------
+
+- To access the ``USB``, ``serial`` and ``JTAG`` devices which are from the local Windows, ``usbipd-win`` must be installed, else it is impossible to download,monitor and debug on IDF docker image side. the way to install it, it is also same as Windows applications, so it will not be described in detail here.
+
+- You still need to do a bit configurations after installing the four tools above:
+
+Check Ubuntu on Windows (WSL)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. Check the current WSL version is 2
+
+.. code-block::
+
+ wsl -l -v
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-l-v.png
+
+2. Please upgrade to version 2, if not
+
+.. code-block::
+
+ wsl --set-version Ubuntu 2
+
+3. Set the Ubuntu distribution as default:
+
+.. code-block::
+
+ wsl -s Ubuntu
+
+4. At last, to check if the commands have taken effect with ``wsl --status`` command.
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl-status.png
+
+Adding the Required Linux Packages in WSL
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Install `ESP-IDF requirements for Linux `_.
+
+.. code-block::
+
+ sudo apt-get install git wget flex bison gperf python3-pip python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
+
+1. Install usbipd in Powershell command prompt:
+
+.. code-block::
+
+ winget install usbipd
+
+2. Now configure the USB serial device to be able to connect to the WSL with ``usbipd``:
+
+3. Open PowerShell command prompt with administrator rights and then type in the command
+
+.. code-block::
+
+ usbipd list
+
+for a list of USB serial devices.
+
+4. To access the specified device from Windows on WSL locally, the device must be bound with **usbipd**. Open PowerShell command prompt with administrator rights and then type in the command:
+
+.. code-block::
+
+ usbipd bind --busid
+
+.. note::
+ this command needs to be used only one time,unless the computer has restarted. **1-1** is the device's bus id ```` I would like to bind.
+
+5. After binding, please attach the specified device to WSL with this command in the Powershell command prompt.
+
+.. code-block::
+
+ usbipd attach --wsl --busid
+
+6. At last, let us check if it works well on both side and type this command on WSL side.
+
+.. code-block::
+
+ dmesg | tail
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl_demsg_tail.png
+
+- As we can see above, **1-1** device has been attached to ``ttyACM0``, that means WSL can access the **1-1** USB device now.
+
+Install Remote WSL extension in Visual Studio Code
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Install the **Remote - WSL**, **Remote Development** and **ESP-IDF** extensions, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/remote_wsl.png
+
+.. image:: ../../../media/tutorials/using_docker_container/remote_development.png
+
+.. image:: ../../../media/tutorials/using_docker_container/esp-idf.png
+
+Open Project in WSL
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Start your development by clicking the ``><`` green button at the left bottom of Visual Studio Code and select **Open Folder in WSL** to start configuring the WSL and open the ``Blink`` example project.
+
+- Configure the ESP-IDF extension inside the WSL as described in the :ref:`Install ESP-IDF and Tools ` documentation.
+
+.. note::
+ * Running the setup from WSL could override the Windows host machine configuration settings since it is using the User Settings by default. Consider saving settings to a workspace or workspace folder.
+
+- At this moment, you can start to use the ``Blink`` example project for building, flashing, monitoring, debugging, etc.
+
+Building the Project
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Here taking the esp32-c3 as an example, users only need to change the target device from ``esp32`` to ``esp32-c3``, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/device_target_esp32_c3.png
+
+- Next, start to build the example project, as below:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_build.gif
+
+Flashing to your Device
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After building, we can use the following ways to download the firmware.
+
+External USB-Serial
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Based on the description above, users can follow the usbipd instructions section mentioned. here ``Silicon Labs CP210x USB to UART Bridge`` is taken as an example, it has been attached to docker image:
+
+.. image:: ../../../media/tutorials/using_docker_container/wsl_demsg_tail_usb_serial.png
+
+- As you can see, this device has attached to ``ttyUSB0``, so ``idf.port`` also need to change accordingly.
+
+.. image:: ../../../media/tutorials/using_docker_container/ttyUSB0.png
+
+- But, the container doesn't know the configuration has changed yet at this moment.
+
+.. image:: ../../../media/tutorials/using_docker_container/unkown_ttyUSB0.png
+
+- So users need to reopen the container, that is **Reopen Folder Locally** and then the new configuration wil be reloaded as well.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_reopen.gif
+
+- At last, click the ``Flash`` button and start to download the firmware.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_uart.gif
+
+Internal USB-serial
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Just as the `External USB-Serial`_, the only difference is the number attached. where the external usb-serial is ``ttyUSBx``, while the internal usb-serial is ``ttyACMx``.
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_uart_internal.gif
+
+USB-JTAG
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Same as `External USB-Serial`_ and `Internal USB-serial`_, but it needs to configure the following extra parameters:
+
+.. image:: ../../../media/tutorials/using_docker_container/extra_parameters.png
+
+the interface is the same as [Internal USB-serial](#internal-usb-serial), that is ``ttyACMx``:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_flash_jtag.gif
+
+Additional steps for debugging
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure to run **ESP-IDF: Add OpenOCD rules file (For Linux users)** command to add OpenOCD rules in the docker container before running OpenOCD and starting a debug session.
+
+Debugging
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After following `USB-JTAG`_, press ``F5`` to start to debug:
+
+.. image:: ../../../media/tutorials/using_docker_container/container_debug.gif
+
+Precautions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. If you want to debug on Windows, you need to unplug the USB cable and re-plug in it again, otherwise the corresponding USB port cannot be found in the Windows device manager.
+2. Docker Desktop For Windows needs to be opened and cannot be closed during container development.
+
diff --git a/docs_espressif/en/buildproject.rst b/docs_espressif/en/buildproject.rst
index 990b8ef7d..78f7662da 100644
--- a/docs_espressif/en/buildproject.rst
+++ b/docs_espressif/en/buildproject.rst
@@ -1,2 +1,25 @@
Build the Project
===============================
+
+1. Build the project:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Build your Project** and select the command to build the project.
+
+2. A new terminal being launched with the build output and a notification bar with Building Project message until it is done then a Build done message when finished.
+
+.. image:: ../../media/tutorials/basic_use/build.png
+
+.. note::
+ There is a **idf.notificationMode** configuration setting if you do not want to see the output automatically. Please review `ESP-IDF Settings ` to see how to modify this configuration setting.
+
+You could modify the behavior of the build task with **idf.cmakeCompilerArgs** for Cmake configure step and **idf.ninjaArgs** for Ninja step. For example, using ``idf.ninjaArgs: [-j N]`` where N is the number of jobs run in parallel.
+
+3. After building the application, the size analysis task will be executed in a terminal, showing the binaries size analysis results. You can enable or disable this task being executed with **idf.enableSizeTaskAfterBuildTask** in your settings.json.
+
+.. image:: ../../media/tutorials/basic_use/size_terminal.png
+
+ESP-IDF build output will try to suggest hints to solve errors that can be shown using the :ref:`Hints viewer `.
+
+Next step is to :ref:`Flash onto the device `.
\ No newline at end of file
diff --git a/docs_espressif/en/commands.rst b/docs_espressif/en/commands.rst
new file mode 100644
index 000000000..97d807771
--- /dev/null
+++ b/docs_espressif/en/commands.rst
@@ -0,0 +1,136 @@
+List of available commands
+===============================
+
+All commands start with ``ESP-IDF:``.
+
+.. list-table::
+ :header-rows: 1
+
+ * - Command Description
+ - Description
+ * - Add Arduino ESP32 as ESP-IDF Component
+ - Add `Arduino-ESP32 `_ as a ESP-IDF component in your current directory (**${CURRENT_DIRECTORY}/components/arduino**).
+ * - Add Docker Container Configuration
+ - Add the **.devcontainer** files to the currently opened project directory, necessary to use a ESP-IDF project in a Docker container with Visual Studio Code `Remote - Containers `_ extension
+ * - Add Editor coverage
+ - Parse your project `GCOV Code coverage `_ files to add color lines representing code coverage on currently opened source code file
+ * - Add OpenOCD rules file (For Linux users)
+ - Add OpenOCD permissions to /etc/udev/rules.d to allow OpenOCD execution.
+ * - Add vscode configuration folder
+ - Add **.vscode** files to the currently opened project directory. These include launch.json (for debugging), settings.json and c_cpp_properties.json for syntax highlight.
+ * - Build, Flash and start a monitor on your device
+ - Build the project, write binaries program to device and start a monitor terminal with a single command. Similar to ``idf.py build flash monitor``
+ * - Build your project
+ - Build your project using ``CMake`` and ``Ninja-build`` as explained in `ESP-IDF Build System Using Cmake Directly `_. You could modify the behavior of the build task with **idf.cmakeCompilerArgs** for Cmake configure step and **idf.ninjaArgs** for Ninja step. For example, using **[-j N]** where N is the number of jobs run in parallel.
+ * - Clear eFuse Summary
+ - Clear the eFuse Summary tree from ESP Explorer EFUSEEXPLORER
+ * - Clear ESP-IDF Search Results
+ - Clear results from ESP Explorer Documentation Search Results
+ * - Clear Saved ESP-IDF Setups
+ - Clear existing esp-idf setups saved by the extension.
+ * - Configure ESP-IDF extension
+ - Open a window with a setup wizard to install ESP-IDF, IDF Tools and python virtual environment.
+ * - Configure Project SDKConfig for Coverage
+ - Set required values in your project SDKConfig to enable Code Coverage
+ * - Create project from Extension Template
+ - Create ESP-IDF using one of the extension template projects.
+ * - Create New ESP-IDF Component
+ - Create a new component in the current directory based on ESP-IDF component template
+ * - Dispose Current SDK Configuration Editor Server Process
+ - If you already executed the SDK Configuration editor, a cache process will remain in the background for faster re opening. This command will dispose of such cache process.
+ * - Doctor Command
+ - Run a diagnostic of the extension setup settings and extension logs to provide a troubleshooting report.
+ * - Troubleshoot Form
+ - Launch UI for user to send a troubleshoot report with steps to reproduce, run a diagnostic of the extension setup settings and extension logs to send to telemetry backend.
+ * - Encrypt and Flash your Project
+ - Execute flashing the project program to device while adding **--encrypt** for partitions to be encrypted.
+ * - Erase Flash Memory from Device
+ - Execute esptool.py erase_flash command to erase flash chip (set to 0xFF bytes)
+ * - Execute Custom Task
+ - User can define a command line command or script in **idf.customTask** which can be executed with this command.
+ * - Flash your project
+ - Write binary data to the ESP's flash chip from your current ESP-IDF project. This command will use either UART, DFU or JTAG based on **idf.flashType**
+ * - Flash (DFU) your project
+ - Write binary data to the ESP's flash chip from your current ESP-IDF project using DFU. Only for ESP32-S2 and ESP32-S3.
+ * - Flash (UART) your project
+ - Write binary data to the ESP's flash chip from your current ESP-IDF project using esptool.py
+ * - Flash (with JTag)
+ - Write binary data to the ESP's flash chip from your current ESP-IDF project using OpenOCD JTAG
+ * - Full Clean Project
+ - Delete the current ESP-IDF project build directory.
+ * - Get eFuse Summary
+ - Get list of eFuse and values from currently serial port chip.
+ * - Get HTML Coverage Report for project
+ - Parse your project `GCOV Code coverage `_ files to generate a HTML coverage report.
+ * - Import ESP-IDF Project
+ - Import an existing ESP-IDF project and add .vscode and .devcontainer files to a new location and also able to rename the project.
+ * - Install ESP-ADF
+ - Clone ESP-ADF inside the selected directory and set **idf.espAdfPath** (**idf.espAdfPathWin** in Windows) configuration setting.
+ * - Install ESP-IDF Python Packages (DEPRECATION NOTICE)
+ - Install extension python packages. Deprecated will be removed soon.
+ * - Install ESP-MDF
+ - Clone ESP-MDF inside the selected directory and set **idf.espMdfPath** (**idf.espMdfPathWin** in Windows) configuration setting.
+ * - Install ESP-Matter
+ - Clone ESP-Matter and set **idf.espMatterPath**. The **ESP-IDF: Set ESP-MATTER Device Path (ESP_MATTER_DEVICE_PATH)** is used to define the device path for ESP-Matter. ESP-Matter is not supported in Windows.
+ * - Install ESP-Rainmaker
+ - Clone ESP-Rainmaker and set **idf.espRainmakerPath** (**idf.espRainmakerPathWin** in Windows) configuration setting.
+ * - Install ESP-HomeKit-SDK
+ - Clone ESP-HomeKit-SDK inside the selected directory and set **idf.espHomeKitSdkPath** (**idf.espHomeKitSdkPathWin** in Windows) configuration setting.
+ * - Launch IDF Monitor for CoreDump / GDB-Stub Mode
+ - Launch ESP-IDF Monitor with websocket capabilities. If you has configured the panic handler to gdbstub or core dump, the monitor will launch a post mortem debug session of the chip.
+ * - Launch QEMU Server
+ - As described in :ref:`QEMU documentation ` this command will execute ESP32 QEMU from the project Dockerfile with the current project binaries.
+ * - Launch QEMU Debug Session
+ - As described in :ref:`QEMU documentation ` this command will start a debug session to ESP32 QEMU from the project Dockerfile with the current project binaries.
+ * - Monitor device
+ - This command will execute idf.py monitor to start serial communication with Espressif device. Please take a look at the `IDF Monitor Documentation `_.
+ * - Monitor QEMU Device
+ - As described in :ref:`QEMU documentation ` this command will start a terminal to monitor the ESP32 QEMU from the project Dockerfile with the current project binaries.
+ * - New Project
+ - Launch UI with a ESP-IDF project creation wizard using examples templates from ESP-IDF and ESP-ADF.
+ * - NVS Partition Editor
+ - Launch UI to create a CSV file for `ESP_IDF Non Volatile Storage `_
+ * - Open ESP-IDF Terminal
+ - Open a terminal with IDF_PATH and python virtual environment activated.
+ * - Partition Table Editor
+ - Launch UI to manage custom partition table as described in `ESP_IDF Partition Table `_
+ * - Pick a workspace folder
+ - When using a Visual Studio Code workspace with multiple workspace folders, this command allows you to select which workspace folder to use for this extension commands. More information in :ref:`working with multiple projects `.
+ * - Remove editor coverage
+ - Remove editor colored lines from **Add Editor coverage** command
+ * - Run idf.py reconfigure task
+ - This command will execute **idf.py reconfigure** (CMake configure task). Useful when you need to generate compile_commands.json for the C/C++ language support.
+ * - Run ESP-IDF-SBOM vulnerability check
+ - Creates Software bill of materials (SBOM) files in the Software Package Data Exchange (SPDX) format for applications generated by the Espressif IoT Development Framework (ESP-IDF).
+ * - Save Default SDKCONFIG file (save-defconfig)
+ - Generate sdkconfig.defaults files using the project current sdkconfig file.
+ * - SDK Configuration editor
+ - Launch a UI to configure your ESP-IDF project settings. This is equivalent to **idf.py menuconfig**.
+ * - Search in documentation...
+ - Select some text from your source code file and search in ESP-IDF documentation with results right in the vscode ESP-IDF Explorer tab.
+ * - Search Error Hint
+ - Type some text to find a matching error from ESP-IDF hints dictionary.
+ * - Select Flash Method
+ - Select which flash method to use for **Flash your project** command. It can be ``DFU``, ``JTAG`` or ``UART``.
+ * - Select port to use
+ - Select which serial port to use for ESP-IDF tasks like flashing or monitor your device.
+ * - Select OpenOCD Board Configuration
+ - Select the OpenOCD configuration files that match your Espressif device target. For example if you are using DevKitC or ESP-Wrover-Kit. This is necessary for flashing with JTAG or debugging your device.
+ * - Select where to save configuration settings
+ - In Visual Studio Code settings can be saved in 3 places: User Settings (global settings), workspace ( .code-workspace file) or workspace folder (.vscode/settings.json).
+ * - Select output and notification mode
+ - This extension shows many notifications and output in the Output window **ESP-IDF**. This command allows you to set if to show notifications, show output, both or none of them.
+ * - Set Espressif device target
+ - This will set the target for the current project (IDF_TARGET). Similar to **idf.py set-target**. For example if you want to use ESP32 or ESP32-C3 you need to execute this command.
+ * - Set ESP-MATTER Device Path (ESP_MATTER_DEVICE_PATH)
+ - The **ESP-IDF: Set ESP-MATTER Device Path (ESP_MATTER_DEVICE_PATH)** is used to define the device path for ESP-Matter. ESP-Matter is not supported in Windows.
+ * - Show Examples Projects
+ - Launch UI to show examples from selected framework and allow you to create a project from them. This command will show frameworks already configured in the extension so if you want to see ESP-Rainmaker examples you need to run the **Install ESP-Rainmaker** first (or set the equivalent setting idf.espRainmakerPath) and then execute this command to see the examples.
+ * - Show Ninja Build Summary
+ - Execute the Chromium ninja-build-summary.py
+ * - Size analysis of the binaries
+ - Launch UI with the ESP-IDF project binaries size information.
+ * - Unit Test: Build and flash unit test app for testing
+ - Copy the unit test app in the current project, build the current project and flash the unit test application to the connected device. More information in :ref:`Unit Testing Documentation `.
+ * - Unit Test: Install ESP-IDF PyTest requirements
+ - Install the ESP-IDF Pytest requirements packages to be able to execute ESP-IDF Unit tests. More information in :ref:`Unit Testing Documentation `.
\ No newline at end of file
diff --git a/docs_espressif/en/configureproject.rst b/docs_espressif/en/configureproject.rst
index 96ec63c2c..191cd16f7 100644
--- a/docs_espressif/en/configureproject.rst
+++ b/docs_espressif/en/configureproject.rst
@@ -1,2 +1,57 @@
Configure Your Project
===============================
+
+Select an Espressif target (esp32, esp32s2, etc.) by selecting menu **View** > **Command Palette** and typing **ESP-IDF: Set Espressif Device Target** command.
+
+Select menu **View** > **Command Palette** and type the **ESP-IDF: Select OpenOCD Board Configuration** to choose the openOCD configuration files for the extension openOCD server.
+
+.. note::
+ * Please review `Configuration of OpenOCD for Specific Target `_ to understand which board or configuration to use for your specific hardware.
+
+Next configure your project. Select menu **View** > **Command Palette** and type **ESP-IDF: SDK Configuration Editor** command ESP-IDF project settings.
+
+.. image:: ../../media/tutorials/basic_use/gui_menuconfig.png
+
+After all changes are made, click save and close this window.
+
+Next step is to :ref:`Build the project `.
+
+C and C++ Code navigation and syntax highlight
+-----------------------------------------------------
+
+.. note::
+ * C and C++ code navigation doesn't need to be configured if you create the project as described in :ref:`Configure your project ` as these commands will create the ``{PROJECT_DIRECTORY_PATH}/.vscode/c_cpp_properties.json`` file.
+
+For code navigation and C/C++ syntax highlight you could use either the `Microsoft C/C++ Extension `_, `LLVM CLangd extension `_ or any other extension you desire.
+
+Usually C/C++ language extensions rely on a file called ``compile_commands.json`` which is located on your project build directory. You can generate this file using the **ESP-IDF: Run idf.py reconfigure task**.
+
+For LLVM CLangd extension, only the compile_commands.json is needed. For Microsoft C/C++ extension, a configuration file is located in ``{PROJECT_DIRECTORY_PATH}/.vscode/c_cpp_properties.json`` and can be generated by creating a project using **ESP-IDF: New Project**, **ESP-IDF: Show Examples Projects** command or using the **ESP-IDF: Add .vscode Configuration Folder** command on an existing ESP-IDF projects.
+
+The file looks like this:
+
+.. code-block:: JSON
+
+ {
+ "configurations": [
+ {
+ "name": "ESP-IDF",
+ "compilerPath": "/path/to/toolchain-gcc",
+ "compileCommands": "${workspaceFolder}/build/compile_commands.json",
+ "includePath": [
+ "${config:idf.espIdfPath}/components/**",
+ "${config:idf.espIdfPathWin}/components/**",
+ "${workspaceFolder}/**"
+ ],
+ "browse": {
+ "path": [
+ "${config:idf.espIdfPath}/components",
+ "${config:idf.espIdfPathWin}/components",
+ "${workspaceFolder}"
+ ]
+ }
+ }
+ ]
+ }
+
+If ``compile_commands.json`` is not defined, the Microsoft C/C++ extension will browse the provided ESP-IDF path to provide code navigation resolution.
diff --git a/docs_espressif/en/connectdevice.rst b/docs_espressif/en/connectdevice.rst
index 6ad8c94ff..f3f221623 100644
--- a/docs_espressif/en/connectdevice.rst
+++ b/docs_espressif/en/connectdevice.rst
@@ -1,2 +1,10 @@
+.. _connectdevice:
+
Connect Your Device
===============================
+
+In Visual Studio Code, select menu **View** > **Command Palette** and type **ESP-IDF: Select Port to Use:** and choose the serial port that your device is connected.
+
+Please review `Establish serial communication `_ if you are not sure about the serial port name.
+
+Next step is to :ref:`Configure your project `.
diff --git a/docs_espressif/en/debugproject.rst b/docs_espressif/en/debugproject.rst
index 189205481..ee65a5794 100644
--- a/docs_espressif/en/debugproject.rst
+++ b/docs_espressif/en/debugproject.rst
@@ -1,2 +1,201 @@
Debug Your Project
===============================
+
+Table of Content (ToC)
+--------------------------------
+
+1. :ref:`Start a debug session`
+
+2. :ref:`What happens in the background?`
+
+3. :ref:`Navigating Through the Code, Call Stack and Threads`
+
+4. :ref:`Setting and Clearing Breakpoints`
+
+5. :ref:`Halting the Target Manually`
+
+6. :ref:`Stepping Through the Code`
+
+7. :ref:`Watching and Setting Program Variables`
+
+8. :ref:`Setting Conditional Breakpoint`
+
+9. :ref:`Disassembly view`
+
+10. :ref:`Watchpoints (Data Breakpoints)`
+
+11. :ref:`Send commands to GDB`
+
+12. :ref:`ESP-IDF: Peripheral View`
+
+13. :ref:`Post-mortem debug use cases`
+
+
+Start a debug session
+--------------------------------
+
+Before debbugging the project, you needs to specify the serial port of the device:
+
+1. Select the Serial Port:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Select Port to Use** and select the command to specify the serial port of your device.
+
+2. Make sure that openOCD configuration files are correct by:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Select OpenOCD Board Configuration** and select the command to to choose the OpenOCD configuration files for the extension OpenOCD server.
+
+.. note::
+ * Please review `Configuration of OpenOCD for Specific Target `_ to understand which board or configuration to use for your specific hardware.
+ * Make sure to configure your drivers as mentioned in ESP-IDF `Configure JTAG Interface `_ documentation.
+
+To start debugging select menu **Run** and **Start Debugging** or just press F5.
+
+.. image:: ../../media/tutorials/debug/init_halted.png
+
+You can see the output from GDB in the debug console and the OpenOCD output in the menu **View** > **Output** > Select **ESP-IDF** from dropdown output.
+
+This cover the basic functionality of the ESP-IDF extension. Take a look at the :ref:`Additional IDE Features` documentation for more.
+
+What happens in the background?
+-------------------------------------
+
+.. figure:: ../_static/jtag-debugging-overview.jpg
+ :align: center
+ :alt: JTAG debugging - overview diagram
+ :figclass: align-center
+
+ JTAG debugging - overview diagram
+
+1. First OpenOCD server is launched in the background and the output is shown in menu **View** > **Output** > Select **ESP-IDF** from the dropdown.
+
+By default it will be launched using localhost, port ``4444`` for Telnet communication, port ``6666`` for TCL communication and port ``3333`` for GDB. you can modify **openocd.tcl.host** and **openocd.tcl.port** configuration settings to modify these values. You can also set **idf.openOcdDebugLevel** to lower or increase (0-4) the messages from OpenOCD in the ESP-IDF output.
+
+2. Next The `Eclipse CDT GDB Adapter `_ is launched in the background and the output is shown in the ``Debug Console``. This debug adapter will start the connection to the device by launch the GDB debug session.
+
+This adapter is a middle man between Visual Studio Code, configured toolchain GDB and OpenOCD server. You can see how `Espressif chips debugging works `_ and how Visual Studio Code use `Debug adapters `_ to communicate with many debug tools.
+
+Navigating Through the Code, Call Stack and Threads
+-------------------------------------------------------
+
+When the target is halted, the editor will show the line of code where the program halted and the list of threads in the ``Call Stack`` sub-window ``(a)`` on the ``Run`` icon in the Activity Bar on the side of Visual Studio Code. The first line of call stack under main ``(b)`` contains the last called function ``app_main()``, which in turned was called from ``main_task()`` as shown in the previous image. Each line of the stack also contains the file name and line number ``(c)`` where the function was called. By clicking on each of the stack entries, you will see the file opened.
+
+By expanding threads you can navigate throughout the application. Some threads contains much longer call stack where you can see, besides function calls, numbers like ``0x4000bff0`` representing address of binary code not provided in source form.
+
+.. image:: ../../media/tutorials/debug/thread5.png
+
+Go back to the ``app_main()`` in Thread #1 to familiar code of blink.c file that will be examined in more details in the following examples. Debugger makes it easy to navigate through the code of entire application. This comes handy when stepping through the code and working with breakpoints and will be discussed below.
+
+
+Setting and Clearing Breakpoints
+-------------------------------------------------------
+
+When debugging, we would like to be able to stop the application at critical lines of code and then examine the state of specific variables, memory and registers / peripherals. To do so we are using breakpoints. They provide a convenient way to quickly get to and halt the application at specific line.
+
+Let's establish two breakpoints when the state of LED changes. Based on the code listing above, this happens at lines 57 and 80. To set a breakpoint, go to the desired line and press F9 or click on the circle shown next to the line number (editor margin). The list of breakpoints is shown in the ``Breakpoints`` sub-window on the ``Run`` icon in the Activity Bar on the side of Visual Studio Code.
+
+.. image:: ../../media/tutorials/debug/breakpoint.png
+
+.. note::
+ Consider that ESP32 has a maximum of 2 hardware breakpoints. Please look at `ESP-IDF Debugging tips: Breakpoints `_ for more information.
+
+The Visual Studio Code shows a **Debug toolbar** on the top of the editor with several actions as explained in `Visual Studio Code Debug Actions `_.
+
+If you press F5 (Continue/Pause) the processor will run and halt at the next breakpoint. If you press F5 again, it will stop at the next breakpoint and so on. you will be able to see that LED is changing the state after each click to "Continue" program execution.
+
+Read more about breakpoints under `breakpoints and watchpoints available `_ and `what else should i know about breakpoints? `_.
+
+Halting the Target Manually
+-------------------------------------------------------
+
+When debugging, you may resume application and enter code waiting for some event or staying in infinite loop without any break points defined. In such case, to go back to debugging mode, you can break program execution manually by pressing "Continue/Pause" button. To check it, delete all breakpoints and click "Continue". Then click “Pause”. Application will be halted at some random point and LED will stop blinking.
+
+It is also possible to step through the code using “Step Into (F11)” and “Step Over (F10)” commands. The difference is that “Step Into (F11)” is entering inside subroutines calls, while “Step Over (F10)” steps over the call, treating it as a single source line.
+
+Before being able to demonstrate this functionality, using information discussed in previous paragraph, make sure that you have only one breakpoint defined at line 57 of ``blink.c``.
+
+Resume program by entering pressing F5 and let it halt. Now press “Step Over (F10)”, one by one couple of times, to see how debugger is stepping one program line at a time.
+
+.. image:: ../../media/tutorials/debug/step_over.png
+
+Stepping Through the Code
+-------------------------------------------------------
+
+If you press “Step Into (F11)” instead, then debugger will step inside subroutine call.
+
+.. image:: ../../media/tutorials/debug/step_into.png
+
+In this particular case debugger stepped inside ``vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS)`` and effectively moved to `tasks.c` code.
+
+.. note::
+ * See `Why stepping with “next” does not bypass subroutine calls? `_ for potential limitations using the ``next`` command.
+
+If you press “Step Out (Shift + F11)” instead, then debugger will step outside the subroutine call.
+
+.. image:: ../../media/tutorials/debug/step_out.png
+
+Watching and Setting Program Variables
+-------------------------------------------------------
+
+A common debugging tasks is checking the value of a program variable as the program runs. To be able to demonstrate this functionality, update file ``blink.c`` by adding a declaration of a global variable int i above definition of function ``blink_task``. Then add ``i++`` inside ``while(1)`` of this function to get ``i`` incremented on each blink.
+
+Stop debugging by pressing "Stop (Shift + F5)". Build and flash the code to the ESP and restart the debugger by pressing F5. Once the application is halted, set a breakpoint in the line where ``i++`` is.
+
+Next in the ``Watch`` sub-window on the ``Run`` icon in the Activity Bar on the side of Visual Studio Code, click the ``+`` and enter ``i`` to start watching its value.
+
+Continue the program execution by pressing F5. Each time the program is halted, you will see ``i`` being incremented.
+
+.. image:: ../../media/tutorials/debug/watch_set_program_vars.png
+
+Setting Conditional Breakpoint
+-------------------------------------------------------
+
+You can also set a breakpoint to halt the program execution if a certain condition is satisfied. See `Visual Studio Code conditional breakpoints `_.
+
+To set a new conditional breakpoint, go to the desired line and right click on the circle shown next to the line number (editor margin) and select ``Add Conditional Breakpoint`` action. You can also modify a breakpoint to add a condition in the list of breakpoints in the ``Breakpoints`` sub-window on the ``Run`` icon in the Activity Bar on the side of Visual Studio Code. Click the ``pencil`` icon on the breakpoint and set the breakpoint condition.
+
+For this example, go to line 79 and right click on the circle shown next to the line number (editor margin) and select ``Add Conditional Breakpoint`` action and set ``i=2``. When you start the debug, it will stop on line 79 when ``i`` has value of 2.
+
+.. image:: ../../media/tutorials/debug/conditional_breakpoint.png
+
+Disassembly view
+-------------------------------------------------------
+
+You can check the assembly code from the debugging session by doing a right click in any line in of source code file and pressing ``Open Disassembly View``. This will open the **Disassemble View** showing the assembly code with C code where you can set breakpoints too.
+
+.. image:: ../../media/tutorials/debug/disassembly_view.png
+
+Watchpoints (Data Breakpoints)
+-------------------------------------------------------
+
+See `ESP-IDF breakpoints and watchpoints available `_ for more information.
+
+Send commands to GDB
+-------------------------------------------------------
+
+You can send any GDB commands in the Debug console with ``> COMMAND``. For example ``> i threads``.
+
+You can also see binary data variables content clicking ``View Binary Data`` next to variable name.
+
+.. image:: ../../media/tutorials/debug/gdb_commands.png
+
+More about `Command Line Debugging `_.
+
+ESP-IDF: Peripheral View
+-------------------------------------------------------
+
+Our extension implements a ``ESP-IDF: Peripheral View`` tree view in the ``Run and Debug`` view which will use the SVD file defined in the **IDF Svd File Path (idf.svdFilePath)** configuration setting to populate a set of peripherals registers values for the active debug session target. You could download Espressif SVD files from `Espressif SVD `_ repository.
+
+.. image:: ../../media/tutorials/debug/peripheral_viewer.png
+
+
+Post-mortem debug use cases
+-------------------------------------------------------
+
+You can start a monitor session that can capture fatal error events with **ESP-IDF: Launch IDF Monitor for CoreDump / GDB-Stub Mode** command and, if configured in your project's sdkconfig, trigger the start of a debug session for GDB remote protocol server (GDBStub) or `ESP-IDF Core Dump `_ when an error is found. Read more in the `panic handler documentation `_.
+
+- **Core Dump** is configured when **Core Dump's Data Destination** is set to either ``UART`` or ``FLASH`` using the **ESP-IDF: SDK Configuration Editor** extension command or ``idf.py menuconfig`` in a terminal.
+- **GDB Stub** is configured when **Panic Handler Behaviour** is set to ``Invoke GDBStub`` using the **ESP-IDF: SDK Configuration Editor** extension command or ``idf.py menuconfig`` in a terminal.
\ No newline at end of file
diff --git a/docs_espressif/en/faqs.rst b/docs_espressif/en/faqs.rst
index d865c446d..e16bee82a 100644
--- a/docs_espressif/en/faqs.rst
+++ b/docs_espressif/en/faqs.rst
@@ -1,2 +1,68 @@
FAQs
===============================
+
+**I have an issue or error with the Visual Studio Code extension, what can I do?**
+
+Take a look at the :ref:`Troubleshooting documentation ` so you can see the error in the extension. You might be able to fix the issue yourself or give enough information for others to help you with the problem.
+
+Search the `ESP-IDF extension repository `_ for Visual Studio Code first and then this forum, your issue might already be solved.
+
+**What about questions of ESP-IDF ?**
+
+Check out `ESP-FAQ `_ or the `ESP-IDF forum `_ itself.
+
+**I try to build my project but there is an error and I don't know what is happening. What to do?**
+
+First of all, have you configure the IDE plugin/extension properly ? Make sure to review the documentation to :ref:`Install ESP-IDF and Tools `.
+
+There was error in the setup or in your project code itself. Gather the :ref:`Troubleshooting documentation ` and look for errors in these files.
+
+Chances are that your issue have been posted before in the `ESP-IDF github repository `_ or `ESP-IDF forum `_. If not, you can open a new GitHub issue or open a topic in the forum.
+
+**How does a ESP-IDF project looks like?**
+
+Please take a look at the `build system documentation `_ to understand how to use each file.
+
+.. code-block::
+
+ - myProject/
+ - CMakeLists.txt
+ - sdkconfig
+ - components/ - component1/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - component2/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - include/ - component2.h
+ - main/ - CMakeLists.txt
+ - src1.c
+ - src2.c
+
+
+**I tried flashing my project but I have an error similar to "Error: unable to open ftdi device with vid ". What to do?**
+
+Take a look at `Configure JTAG Interface `_ to make sure that your drivers are defined correctly.
+
+On Windows, you could try using `IDF-ENV `_ just running the following command in a Powershell terminal:
+
+.. code-block::
+
+ Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --espressif --ftdi --silabs
+
+Drivers are also part of the `IDF-Installer `_.
+
+**What is another way to maintain ESP-IDF environment?**
+
+Using the `IDF-ENV `_ you can manage several ESP-IDF versions and launchers, install drivers, manage antivirus exclusions and more.
+
+**While trying to debug my project I have encountered an issue. What should I do?**
+
+First review the `ESP-IDF JTAG Debugging documentation `_ to understand how debugging works and the expected configuration of your device.
+The debugger is connected to OpenOCD. Please take a look at `OpenOCD Troubleshooting FAQ `_ for any OpenOCD errors you might have encountered.
+
+Check your IDE integration log files and post an issue in the respective GitHub repository if the issue is not related to OpenOCD itself. Take a look at the :ref:`Troubleshooting documentation ` so you can see the error in the extension.
+
+**I have an issue flashing my Espressif device, What should i do?**
+
+Best start would be to follow the Espressif's `Esptool Troubleshooting documentation `_.
\ No newline at end of file
diff --git a/docs_espressif/en/flashdevice.rst b/docs_espressif/en/flashdevice.rst
index 9a969bd68..ea2604c87 100644
--- a/docs_espressif/en/flashdevice.rst
+++ b/docs_espressif/en/flashdevice.rst
@@ -1,2 +1,58 @@
+.. _flash the device:
+
Flash onto the Device
===============================
+
+1. Select the Serial Port:
+
+- Navigate to **View** > Command Palette.
+
+- Type **ESP-IDF: Select Port to Use** and select the command to specify the serial port of your device.
+
+2. Start flashing the device:
+
+- Go to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Flash your Project** and select the command to start flashing your device.
+
+- Choose ``UART``, ``JTAG`` or ``DFU`` flash mode.
+
+3. The flashing task will beign on the previously selected serial port, launching a new terminal displaying the flash task output. While flashing is in progress, a notification bar will display ``ESP-IDF: Flashing project`` Once the process is complete, the message will change to ``Flash Done ⚡️``.
+
+.. note::
+ ``UART`` is the most common option for most Espressif devices.
+
+.. note::
+ * If you are using ``JTAG`` make sure to have OpenOCD properly configured using menu **View** > **Command Palette** and type **ESP-IDF: Select OpenOCD Board Configuration** to select the right configuration for your board.
+ * Please review `Configuration of OpenOCD for Specific Target `_ to understand which board or configuration to use for your specific hardware.
+ * Make sure to configure your drivers as mentioned in ESP-IDF `Configure JTAG Interface `_ documentation.
+
+.. image:: ../../media/tutorials/basic_use/flash.png
+
+.. note::
+ * There is an **idf.flashBaudRate** configuration settings to modify the flashing baud rate.
+
+Next step is to :ref:`Monitor the output `.
+
+Other flashing commands
+--------------------------
+
+You can also choose the flashing type ``UART``, ``JTAG`` or ``DFU`` (esp32s2 or esp32s3) based on your hardware connection.
+
+- Go to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Select Flash Method and Flash** and select the flashing type for your device.
+- Selected choice will be saved in the **idf.flashType** configuration setting.
+
+You can also use these commands to flash with an specific flash type:
+
+1. **ESP-IDF: Flash (UART) your Project** for UART flashing.
+2. **ESP-IDF: Flash (DFU) your Project** to flash using DFU (only for ESP32-S2 and ESP32-S3).
+3. **ESP-IDF: Flash (with JTag)** to flash using JTAG and OpenOCD.
+
+Links
+-------------------
+
+* `ESP-PROG guide `_ for hardware connection and configuration.
+* `Configuration of OpenOCD for Specific Target `_ to understand which board or configuration to use for your specific hardware.
+* `Establishing serial connection `_ with Espressif serial device.
\ No newline at end of file
diff --git a/docs_espressif/en/index.rst b/docs_espressif/en/index.rst
index 231bd3c09..ee09f9d8f 100644
--- a/docs_espressif/en/index.rst
+++ b/docs_espressif/en/index.rst
@@ -4,14 +4,6 @@ ESP-IDF Extension for VSCode
The ESP-IDF Extension for VSCode Code empowers developers to efficiently develop, build, flash, monitor, debug, and manage projects targeting Espressif chips using the Espressif IoT Development Framework (ESP-IDF). This extension integrates seamlessly with Visual Studio Code, providing a familiar environment for streamlined development workflows. Whether you are a beginner or an experienced developer, this documentation will guide you through the process of setting up, configuring, and utilizing the ESP-IDF Extension to leverage the full potential of Espressif chips in your IoT applications.
-Features
-----------------
-
-Supported features by the ESP-IDF Extension here!
-
-
-For more about this project please see https://github.com/espressif/vscode-esp-idf-extension
-
.. toctree::
:maxdepth: 1
@@ -19,10 +11,46 @@ For more about this project please see https://github.com/espressif/vscode-esp-i
Installation
Start a Project
Connect Your Device
- Build the Project
Configure Your Project
+ Build the Project
Flash onto the Device
Monitor the Output
Debug Your Project
Additional IDE Features
+ Troubleshooting
+ Settings
+ See all Commands
FAQs
+
+Features
+----------------
+
+1. Application Level Tracing
+2. Build your project
+3. CMakeLists Editor
+4. Code coverage
+5. Debug your device
+6. Doctor command troubleshooting
+7. EFuse viewer
+8. Flash an specific partition or get binaries from the current device partition tree
+9. Flash your Device using UART, DFU (ESP32-S2 and ESP32-S3) or JTAG (using OpenOCD)
+10. Heap Tracing
+11. Install ESP Components from ESP Component Registry and using Arduino as ESP-IDF Component
+12. Managing multiple configuration for the same project
+13. Managing multiples projects in the same window
+14. Monitor the output of your device
+15. NVS Partition Editor
+16. New project wizard
+17. Partition Editor
+18. Postmortem debug with core dump or GDBStub
+19. Select serial port
+20. Setup wizard
+21. Size analysis of binaries
+22. System View Tracing
+23. Unit testing
+24. Using QEMU to emulate debug and monitor output
+25. Using the extension in a Docker container
+26. Using the extension in WSL
+
+
+For more about this project please see https://github.com/espressif/vscode-esp-idf-extension
diff --git a/docs_espressif/en/installation.rst b/docs_espressif/en/installation.rst
index d91f644c1..bd70cd799 100644
--- a/docs_espressif/en/installation.rst
+++ b/docs_espressif/en/installation.rst
@@ -1,16 +1,61 @@
-Installation
+.. _installation:
+
+Install ESP-IDF and Tools
===============================
-ESP-IDF VSCode Extension installation process here.
-Windows
--------------------------
-Windows specific instructions here.
+After installing Visual Studio Code you need to install the ESP-IDF extension for Visual Studio Code.
+
+- Navigate to **View** > **Extensions** or keyboard shortcut :kbd:`Ctrl+Shift+X` in Windows/Linux or :kbd:`Shift+⌘+X` in MacOS.
+
+- Search for `ESP-IDF Extension `_ from the list of extensions.
+
+1. Install the ESP-IDF extension.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Configure ESP-IDF Extension** and select the command to specify to launch the setup wizard. A loading notification will be shown and later the setup wizard will appear.
+
+.. note::
+
+ * For versions of ``ESP-IDF < 5.0``, spaces are not supported inside configured paths.
+
+.. image:: ../../media/tutorials/setup/select-mode.png
+
+2. Choose **Express** and select the download server:
+
+- **Espressif**: Faster speed in China using Espressif Download servers links.
+- **Github**: Using github releases links.
+
+3. Pick an ESP-IDF version to download or use the ``Find ESP-IDF in your system`` option to search for existing ESP-IDF directory.
+
+.. image:: ../../media/tutorials/setup/select-esp-idf.png
+
+- Choose the location for ESP-IDF Tools ( ``IDF_TOOLS_PATH``) which is ``%USERPROFILE%\.espressif`` on Windows and ``$HOME\.espressif`` on MacOS/Linux by default.
+
+.. note::
+ * Make sure that ``IDF_TOOLS_PATH`` doesn't have any spaces to avoid any build issues. Also make sure that ``IDF_TOOLS_PATH`` is not the same directory as ``IDF_PATH``.
+
+.. note::
+ * For MacOS/Linux users, select the Python executable to use to create ESP-IDF python virtual environment.
+
+4. Click ``Install`` to begin download and install of ESP-IDF and ESP-IDF Tools.
+
+5. A page will appear with the setup progress status showing:
+
+- ESP-IDF download progress
+- ESP-IDF Tools download and install progress
+- Creation of a python virtual environment and ESP-IDF python requirements.
+
+.. image:: ../../media/tutorials/setup/install-status.png
+
+6. If everything is installed correctly, you will see a message that all settings have been configured.
+
+.. image:: ../../media/tutorials/setup/install-complete.png
-macOS
----------------------------------
-macOS specific installation here.
+.. note::
+ For Linux users, a message is shown to add OpenOCD rules in ``/etc/udev/rules.d`` which you need to run with sudo privileges.
+7. Next step is to :ref:`Start a ESP-IDF Project `.
-Linux
----------------------------------
-Linux specific documentation here.
\ No newline at end of file
+.. warning::
+ Check the :ref:`Troubleshooting ` section if you have any issues during installation.
diff --git a/docs_espressif/en/monitoroutput.rst b/docs_espressif/en/monitoroutput.rst
index 4882d996c..c67dfeddb 100644
--- a/docs_espressif/en/monitoroutput.rst
+++ b/docs_espressif/en/monitoroutput.rst
@@ -1,2 +1,23 @@
Monitor the Output
===============================
+
+To view the serial monitor output from your device, please follow the instructions below:
+
+1. Select the Serial Port:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Select Port to Use** and select the command to specify the serial port of your device.
+
+2. Start Monitoring:
+
+- Go to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Monitor Device** and select the command to start monitoring your device.
+
+.. image:: ../../media/tutorials/basic_use/monitor.png
+
+Next step is to :ref:`Debug Your Project `.
+
+.. note::
+ * The monitor baud rate is defined with ``CONFIG_ESPTOOLPY_MONITOR_BAUD`` from project's SDK Configuration Editor. You can override it by setting a value in **idf.monitorBaudRate**.
\ No newline at end of file
diff --git a/docs_espressif/en/prerequisites.rst b/docs_espressif/en/prerequisites.rst
index 55f3388e2..2a0f63736 100644
--- a/docs_espressif/en/prerequisites.rst
+++ b/docs_espressif/en/prerequisites.rst
@@ -2,5 +2,18 @@ Prerequisites
===============================
The minimum requirements for running the ESP-IDF Extension with the VSCode are below.
+- `Visual Studio Code `_.
+
+Windows
+-------------------------------
+
+No additional prerequisites required, the installation step will take care of the rest.
+
+MacOS/Linux
+-------------------------------
+
- `Python 3.12 `_ and above.
- `Git `_.
+- Install the following `ESP-IDF Prerequisites `_.
+
+Next proceed to :ref:`Install ESP-IDF and Tools `.
\ No newline at end of file
diff --git a/docs_espressif/en/settings.rst b/docs_espressif/en/settings.rst
new file mode 100644
index 000000000..abd31899c
--- /dev/null
+++ b/docs_espressif/en/settings.rst
@@ -0,0 +1,268 @@
+ESP-IDF Settings
+=======================
+
+This extension contributes the following settings that can be later updated in settings.json or from VS Code Settings Preference Menu by:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **Preferences: Open Settings (UI)** and select the command to open the Setting management window.
+
+.. note::
+ Please consider that ``~``, ``%VARNAME%`` and ``$VARNAME`` are not recognized when set on ANY of this extension configuration settings. You can instead set any environment variable in the path using a ``${env:VARNAME}`` such as ``${env:HOME}`` or you can refer to other configuration parameter path with ``${config:SETTINGID}`` such as ``${config:idf.espIdfPath}``.
+
+The **idf.saveScope** allows you to specify where to save settings when using commands such as **Set Espressif Device Target** and other commands. Possible values are Global (User Settings), Workspace and WorkspaceFolder. Use the **Select where to Save Configuration Settings** command to choose where to save settings when using this extension commands.
+
+.. note::
+ All settings can be applied to Global (User Settings), Workspace and WorkspaceFolder unless Scope is specified.
+
+ESP-IDF Specific Settings
+-----------------------------
+
+These are the configuration settings that ESP-IDF extension contributes to your Visual Studio Code editor settings.
+
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| Setting ID | Description |
++===================================+===========================================================================================+
+| **idf.buildPath** | Custom build directory name for extension commands. (Default: \${workspaceFolder}/build) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.buildPathWin** | Custom build directory name for extension commands. (Default: \${workspaceFolder}\\build) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.sdkconfigFilePath** | Absolute path for sdkconfig file |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.sdkconfigDefaults** | List of sdkconfig default values for initial build configuration |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.cmakeCompilerArgs** | Arguments for CMake compilation task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.customExtraPaths** | Paths to be appended to \$PATH |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.customExtraVars** | Variables to be added to system environment variables |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.gitPath** | Path to git executable |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.gitPathWin** | Path to git executable in Windows |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.enableCCache** | Enable CCache on build task (make sure CCache is in PATH) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.enableIdfComponentManager** | Enable IDF Component manager in build command |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.espIdfPath** | Path to locate ESP-IDF framework (IDF_PATH) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.espIdfPathWin** | Path to locate ESP-IDF framework in Windows (IDF_PATH) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.ninjaArgs** | Arguments for Ninja build task |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.pythonBinPath** | Python absolute binary path used to execute ESP-IDF Python Scripts |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.pythonBinPathWin** | Python absolute binary path used to execute ESP-IDF Python Scripts in Windows |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.toolsPath** | Path to locate ESP-IDF Tools (IDF_TOOLS_PATH) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+| **idf.toolsPathWin** | Path to locate ESP-IDF Tools in Windows (IDF_TOOLS_PATH) |
++-----------------------------------+-------------------------------------------------------------------------------------------+
+
+
+This is how the extension uses them:
+
+1. **idf.customExtraPaths** is pre-appended to your system environment variable PATH within Visual Studio Code **(not modifying your system environment)** before executing any of our extension commands such as ``openocd`` or ``cmake`` (i.e. build your current project) else extension commands will try to use what is already in your system PATH.
+ > **NOTE:** In **ESP-IDF: Configure ESP-IDF Extension** you can download ESP-IDF Tools or skip IDF Tools download and manually enter all required ESP-IDF Tools as explain in [SETUP](./SETUP.md) which will be saved in **idf.customExtraPaths**.
+2. **idf.customExtraVars** stores any custom environment variable such as OPENOCD_SCRIPTS, which is the openOCD scripts directory used in OpenOCD server startup. These variables are loaded to this extension commands process environment variables, choosing the extension variable if available, else extension commands will try to use what is already in your system PATH. **This doesn't modify your system environment outside Visual Studio Code.**
+3. **idf.espIdfPath** (or **idf.espIdfPathWin** in Windows) is used to store ESP-IDF directory path within our extension. We override Visual Studio Code process IDF_PATH if this value is available. **This doesn't modify your system environment outside Visual Studio Code.**
+4. **idf.pythonBinPath** (or **idf.espIdfPathWin** in Windows) is used to executed python scripts within the extension. In **ESP-IDF: Configure ESP-IDF Extension** we first select a system-wide python executable from which to create a python virtual environment and we save the executable from this virtual environment in **idf.pythonBinPath**. All required python packages by ESP-IDF are installed in this virtual environment, if using **ESP-IDF: Configure ESP-IDF Extension**
+5. **idf.gitPath** (or **idf.gitPathWin** in Windows) is used in the extension to clone ESP-IDF master version or the additional supported frameworks such as ESP-ADF, ESP-MDF and Arduino-ESP32.
+
+> **NOTE**: From Visual Studio Code extension context, we can't modify your system PATH or any other environment variable. We use a modified process environment in all of this extension tasks and child processes which should not affect any other system process or extension. Please review the content of **idf.customExtraPaths** and **idf.customExtraVars** in case you have issues with other extensions.
+
+Board/Chip Specific Settings
+-------------------------------------------------------------------------
+
+These settings are specific to the ESP32 Chip/Board
+
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| Setting | Description |
++====================================================+========================================================================================+
+| **idf.adapterTargetName** | ESP-IDF Target Chip (Example: esp32) |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.customAdapterTargetName** | Custom Target Name for ESP-IDF Debug Adapter |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.flashBaudRate** | Flash Baud rate |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.monitorBaudRate** | Monitor Baud Rate (Empty by default to use SDKConfig CONFIG_ESP_CONSOLE_UART_BAUDRATE) |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.openOcdConfigs** | Configuration Files for OpenOCD. Relative to OPENOCD_SCRIPTS folder |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.openOcdLaunchArgs** | Launch Arguments for OpenOCD before idf.openOcdDebugLevel and idf.openOcdConfigs |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.openOcdDebugLevel** | Set openOCD Debug Level (0-4) Default: 2 |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.port** | Path of Selected Device port |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.portWin** | Path of Selected Device Port in Windows |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **openocd.jtag.command.force_unix_path_separator** | Forced to Use ``/`` as Path sep. for Win32 Based OS Instead of ``\\`` |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.listDfuDevices** | List of DFU Devices Connected to USB |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.selectedDfuDevicePath** | Selected DFU Device Connected to USB |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+| **idf.svdFilePath** | SVD File Absolute Path to Resolve Chip Debug Peripheral Tree view |
++----------------------------------------------------+----------------------------------------------------------------------------------------+
+
+
+This is how the extension uses them:
+
+1. **idf.adapterTargetName** is used to select the chipset (esp32, esp32s2, esp32s3, esp32c3 and custom) on which to run the extension commands.
+2. **idf.customAdapterTargetName** is used when **idf.adapterTargetName** is set to **custom**.
+3. **idf.flashBaudRate** is the baud rate value used for the **ESP-IDF: Flash your Project** command and [ESP-IDF Debug](./DEBUGGING.md).
+4. **idf.monitorBaudRate** is the ESP-IDF Monitor baud rate value and fallback from your project's skdconfig ``CONFIG_ESPTOOLPY_MONITOR_BAUD`` (idf.py monitor' baud rate). This value can also be override by setting the environment variable ``IDF_MONITOR_BAUD`` or ``MONITORBAUD`` in your system environment variables or this extension's **idf.customExtraVars** configuration setting.
+5. **idf.openOcdConfigs** is used to store an string array of OpenOCD scripts directory relative path config files to use with OpenOCD server. (Example: ``["interface/ftdi/esp32_devkitj_v1.cfg", "board/esp32-wrover.cfg"]``). More information `OpenOCD JTAG Target configuration `_.
+6. **idf.port** (or **idf.portWin** in Windows) is used as the serial port value for the extension commands.
+7. **idf.openOcdDebugLevel**: Log level for OpenOCD Server output from 0 to 4.
+8. **idf.openOcdLaunchArgs**: Launch arguments string array for OpenOCD. The resulting OpenOCD launch command looks like this: ``openocd -d${idf.openOcdDebugLevel} -f ${idf.openOcdConfigs} ${idf.openOcdLaunchArgs}``.
+
+.. note::
+ * When you use the command **ESP-IDF: Set Espressif Device Target** it will override **idf.adapterTargetName** with selected chip and **idf.openOcdConfigs** with its default OpenOCD Configuration Files.
+ * If you want to customize the **idf.openOcdConfigs** alone, you can use the **ESP-IDF: Select OpenOCD Board Configuration** or modify your settings.json directly.
+
+Code Coverage Specific Settings
+-------------------------------------------------------------------------
+
+These settings are used to configure the Code Coverage colors.
+
++--------------------------------+--------------------------------------------------------------------------+
+| Setting ID | Description |
++================================+==========================================================================+
+| **idf.coveredLightTheme** | Background color for covered lines in light theme for gcov coverage |
++--------------------------------+--------------------------------------------------------------------------+
+| **idf.coveredDarkTheme** | Background color for covered lines in dark theme for gcov coverage |
++--------------------------------+--------------------------------------------------------------------------+
+| **idf.partialLightTheme** | Background color for partially covered lines in light theme for gcov |
+| | coverage |
++--------------------------------+--------------------------------------------------------------------------+
+| **idf.partialDarkTheme** | Background color for partially covered lines in dark theme for gcov |
+| | coverage |
++--------------------------------+--------------------------------------------------------------------------+
+| **idf.uncoveredLightTheme** | Background color for uncovered lines in light theme for gcov coverage |
++--------------------------------+--------------------------------------------------------------------------+
+| **idf.uncoveredDarkTheme** | Background color for uncovered lines in dark theme for gcov coverage |
++--------------------------------+--------------------------------------------------------------------------+
+
+
+Extension Behaviour Settings
+-------------------------------------------------------------------------
+
++------------------------------------------+------------------------------------------------------------------------------------+
+| Setting ID | Description |
++==========================================+====================================================================================+
+| **idf.enableUpdateSrcsToCMakeListsFile** | Enable update source files in CMakeLists.txt (default ``true``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.flashType** | Preferred flash method. DFU, UART or JTAG |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.launchMonitorOnDebugSession** | Launch ESP-IDF Monitor along with ESP-IDF Debug session |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.notificationMode** | ESP-IDF extension notifications and output focus mode. (default ``All``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.showOnboardingOnInit** | Show ESP-IDF Configuration Window on extension activation |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.saveScope** | Where to save extension settings |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.saveBeforeBuild** | Save all the edited files before building (default ``true``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.useIDFKconfigStyle** | Enable style validation for Kconfig files |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.telemetry** | Enable telemetry |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.deleteComponentsOnFullClean** | Delete ``managed_components`` on Full Clean Project command (default ``false``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.monitorNoReset** | Enable no-reset flag to IDF Monitor (default ``false``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.monitorEnableTimestamps** | Enable timestamps in IDF Monitor (default ``false``) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.monitorCustomTimestampFormat** | Custom timestamp format in IDF Monitor |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.monitorStartDelayBeforeDebug** | Delay to start debug session after IDF monitor execution |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.enableStatusBar** | Show or hide the extension status bar items |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.enableSizeTaskAfterBuildTask** | Enable IDF Size Task to be executed after IDF Build Task |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.customTerminalExecutable** | Absolute path to shell terminal executable to use (default to VS Code Terminal) |
++------------------------------------------+------------------------------------------------------------------------------------+
+| **idf.customTerminalExecutableArgs** | Shell arguments for idf.customTerminalExecutable |
++------------------------------------------+------------------------------------------------------------------------------------+
+
+
+Custom Tasks for Build and Flash Tasks
+-------------------------------------------------------------------------
+
++----------------------+--------------------------------------------------------------+
+| Setting ID | Description |
++======================+==============================================================+
+| **idf.customTask** | Custom task to execute with **ESP-IDF: Execute Custom Task** |
++----------------------+--------------------------------------------------------------+
+| **idf.preBuildTask** | Command string to execute before build task |
++----------------------+--------------------------------------------------------------+
+| **idf.postBuildTask**| Command string to execute after build task |
++----------------------+--------------------------------------------------------------+
+| **idf.preFlashTask** | Command string to execute before flash task |
++----------------------+--------------------------------------------------------------+
+| **idf.postFlashTask**| Command string to execute after flash task |
++----------------------+--------------------------------------------------------------+
+
+
+QEMU Specific Settings
+-------------------------------------------------------------------------
+
++----------------------+----------------------------------------+
+| Setting ID | Description |
++======================+========================================+
+| **idf.qemuTcpPort** | QEMU tcp port for serial communication |
++----------------------+----------------------------------------+
+
+Log Tracing Specific Settings
+-------------------------------------------------------------------------
+
++-----------------------+------------------------------------------+
+| Setting | Description |
++=======================+==========================================+
+| **trace.poll_period** | poll_period will be set for the apptrace |
++-----------------------+------------------------------------------+
+| **trace.trace_size** | trace_size will set for the apptrace |
++-----------------------+------------------------------------------+
+| **trace.stop_tmo** | stop_tmo will be set for the apptrace |
++-----------------------+------------------------------------------+
+| **trace.wait4halt** | wait4halt will be set for the apptrace |
++-----------------------+------------------------------------------+
+| **trace.skip_size** | skip_size will be set for the apptrace |
++-----------------------+------------------------------------------+
+
+Other Frameworks Specific Settings
+-------------------------------------------------------------------------
+
+These settings allow to support additional frameworks together with ESP-IDF:
+
++-----------------------------+-----------------------------------------------------------------+
+| Setting ID | Description |
++=============================+=================================================================+
+| **idf.espAdfPath** | Path to locate ESP-ADF framework (ADF_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espAdfPathWin** | Path to locate ESP-ADF framework in Windows (ADF_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espMdfPath** | Path to locate ESP-MDF framework (MDF_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espMdfPathWin** | Path to locate ESP-MDF framework in Windows (MDF_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espMatterPath** | Path to locate ESP-Matter framework (ESP_MATTER_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espRainmakerPath** | Path to locate ESP-Rainmaker framework in Windows (RMAKER_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.espRainmakerPathWin** | Path to locate ESP-Rainmaker framework in Windows (RMAKER_PATH) |
++-----------------------------+-----------------------------------------------------------------+
+| **idf.sbomFilePath** | Path to create ESP-IDF SBOM report |
++-----------------------------+-----------------------------------------------------------------+
+
+Use of Environment Variables in ESP-IDF settings.json and tasks.json
+-------------------------------------------------------------------------
+
+Environment (env) variables and other ESP-IDF settings (config) current values strings can be used in other ESP-IDF setting as ``${env:VARNAME}`` and ``${config:ESPIDFSETTING}``, respectively.
+
+Example : If you want to use ``"~/esp/esp-idf"`` you can set the value of **idf.espIdfPath** to ``"${env:HOME}/esp/esp-idf"``.
diff --git a/docs_espressif/en/startproject.rst b/docs_espressif/en/startproject.rst
index 37d77ec9d..f2b892d9b 100644
--- a/docs_espressif/en/startproject.rst
+++ b/docs_espressif/en/startproject.rst
@@ -1,2 +1,133 @@
-Start a Project
+Start a ESP-IDF Project
===============================
+
+There are three ways one can get started with a project:
+
+1. :ref:`ESP-IDF New Project`
+2. :ref:`ESP-IDF Show Examples Projects`
+3. :ref:`ESP-IDF Existing ESP-IDF Project`
+
+The first option is recommended as it allows you to configure the project while the second and third just create the project with current workspace folder configuration.
+
+.. _ESP-IDF New Project:
+
+1. Using **ESP-IDF: New project**
+-----------------------------------
+
+In Visual Studio Code
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: New Project** and select the command to launch the New Project wizard. This will open the New Project window as shown below:
+
+.. image:: ../../media/tutorials/new_project/new_project_init.png
+
+- Choose the project name
+- Choose where to create this new project
+- Select the Espressif board you are using
+- Select the serial port of the device (A list of currently serial devices is shown in the dropdown)
+
+.. note::
+ * Please review `Establish serial communication `_ if you are not sure about the serial port name.
+
+.. note::
+ * Please review `Configuration of OpenOCD for Specific Target `_ to understand which board or configuration to use for your specific hardware.
+
+- Optionally, You could also choose to import any ESP-IDF component directory ``component-dir`` to the new project which will be copied to the new project's directory ``components`` sub directory (``/components/component-dir``)
+
+- After that click ``Choose Template`` button.
+
+- Choose ESP-IDF from the dropdown if you want to use an example as template.
+
+.. note::
+ If you want to create a blank project, choose ESP-IDF ``sample_project`` or Extension ``template-app``.
+
+.. image:: ../../media/tutorials/new_project/new_project_templates.png
+
+- Choose your desired template and click the **Create Project Using Template ** button where **** is the name of the selected template.
+
+- After the project is created, a notification window will show up to open the newly created project or not.
+
+.. image:: ../../media/tutorials/new_project/new_project_confirm.png
+ :width: 400px
+ :align: center
+
+.. _ESP-IDF Show Examples Projects:
+
+2. Using **Show Examples Projects**
+-----------------------------------
+
+In Visual Studio Code
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Show Examples Projects** and select the command to create a new project from ESP-IDF examples.
+
+- Select ``ESP-IDF`` from the dropdown. A window will appear showing a list of ESP-IDF examples.
+
+- When you select an example the readme will be shown and a **Create project using example example_name** button.
+
+- Choose a destination to create the new project. A notification will be shown to Open folder in a new window.
+
+.. image:: ../../media/tutorials/new_project/new_project_confirm.png
+ :width: 400px
+ :align: center
+
+.. _ESP-IDF Existing ESP-IDF Project:
+
+3. Opening an Existing ESP-IDF Project
+----------------------------------------
+
+ESP-IDF projects follow this directory structure:
+
+`ESP-IDF Example Project `_
+
+.. code-block::
+
+ - myProject/
+ - CMakeLists.txt
+ - sdkconfig
+ - components/ - component1/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - component2/ - CMakeLists.txt
+ - Kconfig
+ - src1.c
+ - include/ - component2.h
+ - main/ - CMakeLists.txt
+ - src1.c
+ - src2.c
+
+ - build/
+
+
+In Visual Studio Code
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Import ESP-IDF Project** and select the command to import an existing ESP-IDF project.
+
+This command will add both Visual Studio Code configuration files (settings.json, launch.json) and Docker container files (Dockerfile and .devcontainer.json).
+
+Next step is to :ref:`Connect a device `.
+
+Adding Visual Studio Code configuration files and Docker container
+----------------------------------------------------------------------
+
+Open a directory in Visual Studio Code with menu **File** > **Open Folder** which contains a **CMakeLists.txt** file in the root directory (myProject) that follows the ESP-IDF structure.
+
+1. You can add vscode configuration files (settings.json, launch.json) by:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Add .vscode Configuration Folder** command.
+
+2. If you want to open the project within the ESP-IDF Docker container:
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **ESP-IDF: Add Docker Container Configuration** and select the command to add the ``.devcontainer`` directory to your current directory.
+
+- Navigate to **View** > **Command Palette**.
+
+- Type **Remote - Containers: Open Folder in Remote Container** and select the command to open the existing project into the recently created container from previous step Dockerfile.
\ No newline at end of file
diff --git a/docs_espressif/en/troubleshooting.rst b/docs_espressif/en/troubleshooting.rst
new file mode 100644
index 000000000..dc772e5a9
--- /dev/null
+++ b/docs_espressif/en/troubleshooting.rst
@@ -0,0 +1,30 @@
+Troubleshooting
+===============================
+
+.. note::
+ * Use **idf.openOcdDebugLevel** configuration setting to 4 or more to show debug logging in OpenOCD server output.
+ * Use **logLevel** in your ``/.vscode/launch.json`` to 3 or more to show more debug adapter output.
+
+In Visual Studio Code select menu **View** > **Output** > **ESP-IDF**. This output information is useful to know what is happening in the extension.
+
+In Visual Studio Code select menu **View** > **Command Palette...** and type **ESP-IDF: Doctor Command** to generate a report of your environment configuration and it will be copied in your clipboard to paste anywhere.
+
+Check log file which can be obtained from:
+
+Windows
+ ``%USERPROFILE%\.vscode\extensions\espressif.esp-idf-extension-VERSION\esp_idf_vsc_ext.log``
+MacOS/Linux
+ ``$HOME/.vscode/extensions/espressif.esp-idf-extension-VERSION/esp_idf_vsc_ext.log``
+
+In Visual Studio Code, select menu **Help** > **Toggle Developer Tools** and copy any error in the Console tab related to this extension.
+
+Visual Studio Code allows you to configure settings at different levels: **Global (User Settings)**, **Workspace** and **Workspace Folder** so make sure your project is using the right settings. The **ESP-IDF: Doctor command** output will show the settings actually being used.
+
+Review the `OpenOCD troubleshooting FAQ `_ related to the **OpenOCD** output, for application tracing, debug or any OpenOCD related issues.
+
+If there is any Python package error, please try to reinstall the required python packages with the **ESP-IDF: Install ESP-IDF Python Packages** command. Please consider that this extension install ESP-IDF, this extension's and ESP-IDF Debug Adapter python packages when running the **ESP-IDF: Configure ESP-IDF Extension** setup wizard.
+
+.. note::
+ * When downloading ESP-IDF using git cloning in Windows if you receive errors like "unable to create symlink", enabling **Developer Mode** while cloning ESP-IDF could help resolve the issue.
+
+If you can't resolve the error, please search in the `github repository issues `_ for existing errors or open a new issue `here `_.
\ No newline at end of file
diff --git a/media/tutorials/basic_use/size_terminal.png b/media/tutorials/basic_use/size_terminal.png
new file mode 100644
index 000000000..b94d71051
Binary files /dev/null and b/media/tutorials/basic_use/size_terminal.png differ
diff --git a/media/tutorials/features/component-registry.png b/media/tutorials/features/component-registry.png
new file mode 100644
index 000000000..cc2939331
Binary files /dev/null and b/media/tutorials/features/component-registry.png differ
diff --git a/media/tutorials/features/create-project-from-component-example.png b/media/tutorials/features/create-project-from-component-example.png
new file mode 100644
index 000000000..e8bd76abc
Binary files /dev/null and b/media/tutorials/features/create-project-from-component-example.png differ
diff --git a/media/tutorials/features/idf-terminal.png b/media/tutorials/features/idf-terminal.png
new file mode 100644
index 000000000..0b1f2af6a
Binary files /dev/null and b/media/tutorials/features/idf-terminal.png differ
diff --git a/media/tutorials/features/install-component.png b/media/tutorials/features/install-component.png
new file mode 100644
index 000000000..7839aab8e
Binary files /dev/null and b/media/tutorials/features/install-component.png differ
diff --git a/package.nls.json b/package.nls.json
index 0ff78391a..fd970c107 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -96,8 +96,8 @@
"espIdf.searchError.title": "ESP-IDF: Search Error Hint",
"idf.flashType.description": "Device flash method, UART or JTag",
"idf.wssPort.description": "Web Socket Server Port for Core Dump or GDB Stub",
- "openocd.tcl.host.description": "Host for openocd tcl connection",
- "openocd.tcl.port.description": "Port for openocd tcl connection",
+ "openocd.tcl.host.description": "Host for OpenOCD tcl connection",
+ "openocd.tcl.port.description": "Port for OpenOCD tcl connection",
"param.adapterTargetName": "Target name for ESP-IDF Debug Adapter",
"param.buildPath": "Name of CMake build directory",
"param.cmakeCompilerArgs": "Arguments for CMake compilation task",
diff --git a/package.nls.pt.json b/package.nls.pt.json
index ffbcf52df..b2a29b9d3 100644
--- a/package.nls.pt.json
+++ b/package.nls.pt.json
@@ -95,8 +95,8 @@
"esp_idf.verifyAppBinBeforeDebug.description": "Verifique os binários do aplicativo antes da depuração",
"idf.flashType.description": "Método flash do dispositivo, UART ou JTag",
"idf.wssPort.description": "Porta do servidor Web Socket para Core Dump ou GDB Stub",
- "openocd.tcl.host.description": "Host para conexão openocd tcl",
- "openocd.tcl.port.description": "Porta para conexão openocd tcl",
+ "openocd.tcl.host.description": "Host para conexão OpenOCD tcl",
+ "openocd.tcl.port.description": "Porta para conexão OpenOCD tcl",
"param.adapterTargetName": "Nome de destino para adaptador de depuração ESP-IDF",
"param.buildPath": "Nome do diretório de compilação do CMake",
"param.cmakeCompilerArgs": "Argumentos para tarefa de compilação do CMake",