diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index cb307a2d2..b428b71f8 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -56,6 +56,7 @@ jobs: core.info("Review thread message body:", body); for (const pr of pull_requests) { + body += `\n [Espressif docs preview](https://preview-docs.espressif.com/projects/vscode-esp-idf-extension/en/${pr.number}-merge/index.html)`; await upsertComment(owner, repo, pr.number, "nightly-link", body); } diff --git a/.gitignore b/.gitignore index ef8980044..78996bab3 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,7 @@ test-resources/** /docs_espressif/.DS_Store /docs_espressif/en/.DS_Store /docs_espressif/en/additionalfeatures/.DS_Store -/docs_espressif/_static/.DS_Store \ No newline at end of file +/docs_espressif/_static/.DS_Store +/docs_espressif/.venv +/docs_espressif/_build +/docs_espressif/__pycache__ \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore index c87a1ee35..18025ff7d 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -11,6 +11,7 @@ .yarnrc dist/**/*.map docs +docs_espressif ci esp/** esp_idf_docs_index_lang_*.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 448af8ae4..2b8466895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,9 +43,9 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Fix SDK Configuration editor info button](https://github.com/espressif/vscode-esp-idf-extension/pull/1123) - [Update docker container documentation](https://github.com/espressif/vscode-esp-idf-extension/pull/1127) -- [Add openOCD troubleshooting link in error output](https://github.com/espressif/vscode-esp-idf-extension/pull/1137) +- [Add OpenOCD troubleshooting link in error output](https://github.com/espressif/vscode-esp-idf-extension/pull/1137) - [Fix jtag pre post flash task](https://github.com/espressif/vscode-esp-idf-extension/pull/1156) -- [Remove openOCD error messages from notifications](https://github.com/espressif/vscode-esp-idf-extension/pull/1157) +- [Remove OpenOCD error messages from notifications](https://github.com/espressif/vscode-esp-idf-extension/pull/1157) - [Remove workspace folder selection from serial port selection](https://github.com/espressif/vscode-esp-idf-extension/pull/1167) ## [1.7.0](https://github.com/espressif/vscode-esp-idf-extension/releases/tag/v1.7.0) @@ -197,7 +197,7 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Remove managed components on full clean command](https://github.com/espressif/vscode-esp-idf-extension/pull/793) - [Allow user to customize the build directory path](https://github.com/espressif/vscode-esp-idf-extension/pull/794) - [Light ESP-Matter download](https://github.com/espressif/vscode-esp-idf-extension/pull/820) Thanks @Diegorro98! -- [Add input for custom openOCD board](https://github.com/espressif/vscode-esp-idf-extension/pull/830) +- [Add input for custom OpenOCD board](https://github.com/espressif/vscode-esp-idf-extension/pull/830) - [Add variables parsing and view binary data in debugging session](https://github.com/espressif/vscode-esp-idf-extension/pull/831) ### Bug Fixes @@ -230,7 +230,7 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Add existing project tutorial](https://github.com/espressif/vscode-esp-idf-extension/pull/771) - [Add preview targets support in idf.py set-target](https://github.com/espressif/vscode-esp-idf-extension/pull/767) - [Peripheral Register view](https://github.com/espressif/vscode-esp-idf-extension/pull/755) -- [Add custom openOCD server launch arguments](https://github.com/espressif/vscode-esp-idf-extension/pull/777) +- [Add custom OpenOCD server launch arguments](https://github.com/espressif/vscode-esp-idf-extension/pull/777) ### Bug Fixes @@ -306,9 +306,9 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Fix multiple save scope calls on workspace folder setup](https://github.com/espressif/vscode-esp-idf-extension/pull/526) - [Fix documentation links](https://github.com/espressif/vscode-esp-idf-extension/pull/528) - [Fix spaces in git path](https://github.com/espressif/vscode-esp-idf-extension/pull/533) -- [Remove openOCD copy rules button](https://github.com/espressif/vscode-esp-idf-extension/pull/544) +- [Remove OpenOCD copy rules button](https://github.com/espressif/vscode-esp-idf-extension/pull/544) - [Update cppdbg launch json default configuration](https://github.com/espressif/vscode-esp-idf-extension/pull/555) Thanks @rdancer ! -- [Fix openOCD configuration files in project wizard and settings](https://github.com/espressif/vscode-esp-idf-extension/pull/569) +- [Fix OpenOCD configuration files in project wizard and settings](https://github.com/espressif/vscode-esp-idf-extension/pull/569) - [Fix idf size UI issues due to idf_size.py schema changes](https://github.com/espressif/vscode-esp-idf-extension/pull/535) - [Fix WSL detection and add WSL enable configuration setting](https://github.com/espressif/vscode-esp-idf-extension/pull/578) - [Add silent notification for error messages](https://github.com/espressif/vscode-esp-idf-extension/pull/582) @@ -319,20 +319,20 @@ All notable changes to the "Espressif IDF" extension will be documented in this ### Features and enhancements - [Add ESP-IDF QEMU integration](https://github.com/espressif/vscode-esp-idf-extension/pull/451) to monitor and debug on emulated ESP32. -- [Add openOCD rules command and button on setup wizard end for Linux users](https://github.com/espressif/vscode-esp-idf-extension/pull/470) +- [Add OpenOCD rules command and button on setup wizard end for Linux users](https://github.com/espressif/vscode-esp-idf-extension/pull/470) - [Add verify matching binary before debug](https://github.com/espressif/vscode-esp-idf-extension/pull/472) - [Heap tracing using gdbinit file](https://github.com/espressif/vscode-esp-idf-extension/pull/467) - [Partition tree from target device and flash bin to partition](https://github.com/espressif/vscode-esp-idf-extension/pull/478) - [Project creation unit testing](https://github.com/espressif/vscode-esp-idf-extension/pull/479) - [Update debug adapter to latest commit](https://github.com/espressif/vscode-esp-idf-extension/pull/481) -- [Use Espressif mirrors for ESP-IDF tools download in setup wizard](https://github.com/espressif/vscode-esp-idf-extension/pull/514) +- [Use Espressif mirrors for ESP-IDF Tools download in setup wizard](https://github.com/espressif/vscode-esp-idf-extension/pull/514) - Add CCache [enable setting](https://github.com/espressif/vscode-esp-idf-extension/pull/517) into [build task](https://github.com/espressif/vscode-esp-idf-extension/pull/523) - [Add serial port and IDF_TARGET to status bar](https://github.com/espressif/vscode-esp-idf-extension/pull/519) ### Bug Fixes - [Add git executable before venv](https://github.com/espressif/vscode-esp-idf-extension/pull/468) -- [Add openOCD debug level configuration setting and fix ESP-IDF version without git history](https://github.com/espressif/vscode-esp-idf-extension/pull/518) +- [Add OpenOCD debug level configuration setting and fix ESP-IDF version without git history](https://github.com/espressif/vscode-esp-idf-extension/pull/518) - [Add save scope reference in documentation](https://github.com/espressif/vscode-esp-idf-extension/pull/489) - [Chinese localization fixes](https://github.com/espressif/vscode-esp-idf-extension/pull/507) Thanks @larryli ! - [Fix arduino as component cloning promise await if directory exists](https://github.com/espressif/vscode-esp-idf-extension/pull/481) @@ -356,7 +356,7 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Fix app trace file path](https://github.com/espressif/vscode-esp-idf-extension/pull/431) - [Fix setup on Windows](https://github.com/espressif/vscode-esp-idf-extension/pull/444) -- [Fix reset values on SDK Configuration editor and openOCD version validator](https://github.com/espressif/vscode-esp-idf-extension/pull/459) +- [Fix reset values on SDK Configuration editor and OpenOCD version validator](https://github.com/espressif/vscode-esp-idf-extension/pull/459) - [Add extension templates in new project](https://github.com/espressif/vscode-esp-idf-extension/pull/461) - [Fix monitor closing before flashing](https://github.com/espressif/vscode-esp-idf-extension/pull/463) @@ -374,7 +374,7 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [Fix remove package.json dependencies](https://github.com/espressif/vscode-esp-idf-extension/commit/2c34b8fa6704e28aef47b22bf00bbffb0481799c) - [Enable IDF Component manager configuration setting](https://github.com/espressif/vscode-esp-idf-extension/pull/389) -- [Fix openOCD default boards configuration files](https://github.com/espressif/vscode-esp-idf-extension/pull/391) +- [Fix OpenOCD default boards configuration files](https://github.com/espressif/vscode-esp-idf-extension/pull/391) - [Fix binaries included in flashing](https://github.com/espressif/vscode-esp-idf-extension/pull/406) ## [1.0.3](https://github.com/espressif/vscode-esp-idf-extension/releases/tag/v1.0.3) @@ -449,7 +449,7 @@ All notable changes to the "Espressif IDF" extension will be documented in this - [ESP-IDF: Doctor command](https://github.com/espressif/vscode-esp-idf-extension/pull/255) to generate an extension configuration report. - [Enhance readme and documentation](https://github.com/espressif/vscode-esp-idf-extension/pull/284) -- [Select openOCD board command](https://github.com/espressif/vscode-esp-idf-extension/pull/286) based on esp-config.json from OpenOCD repository. +- [Select OpenOCD board command](https://github.com/espressif/vscode-esp-idf-extension/pull/286) based on esp-config.json from OpenOCD repository. - [Russian localization for commands](https://github.com/espressif/vscode-esp-idf-extension/pull/216) Thanks @Vasilius-001 ! ### Bug Fixes diff --git a/README.md b/README.md index 7b2fd3aeb..85466b7c5 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,9 @@ Make sure to review our [documentation](./docs/ONBOARDING.md) first to properly 2. Install ESP-IDF system requirements for your operating system: -- Requirements for [Linux](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup.html#install-prerequisites) -- Requirements for [MacOS](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/macos-setup.html#install-prerequisites) - For Windows the [C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools) might be required. +- Requirements for [MacOS](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/macos-setup.html#install-prerequisites) +- Requirements for [Linux](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup.html#install-prerequisites) 3. In Visual Studio Code, Open the **Extensions** view by clicking on the Extension icon in the Activity Bar on the side of Visual Studio Code or the **View: Extensions** command (shortcut: X or Ctrl+Shift+X. @@ -38,7 +38,7 @@ Make sure to review our [documentation](./docs/ONBOARDING.md) first to properly > **NOTE:** Please take a look at [Working with multiple projects](./docs/MULTI_PROJECTS.md) for more information. -7. In Visual Studio Code, select menu "View" and "Command Palette" and type `configure esp-idf extension`. After, choose the **ESP-IDF: Configure ESP-IDF Extension** option. You can also choose where to save settings in the setup wizard. +7. In Visual Studio Code, select menu "View" and "Command Palette" and type `Configure ESP-IDF Extension`. After, choose the **ESP-IDF: Configure ESP-IDF Extension** option. > **NOTE:** For versions of ESP-IDF < 5.0, spaces are not supported inside configured paths.

@@ -54,14 +54,14 @@ Make sure to review our [documentation](./docs/ONBOARDING.md) first to properly 10. Choose the location for ESP-IDF Tools (also known as `IDF_TOOLS_PATH`) which is `$HOME\.espressif` on MacOS/Linux and `%USERPROFILE%\.espressif` on Windows by default. -11. If your operating system is Linux or MacOS, choose the python executable to create ESP-IDF virtual environment. +11. If your operating system is MacOS/Linux, choose the python executable to create ESP-IDF virtual environment. > **NOTE:** Windows users don't need to select a python executable since it is part of the setup. > **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`. -12. 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. +12. 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. -13. If everything is installed correctly, the user will see a message that all settings have been configured. You can start using the extension. Otherwise check the [Troubleshooting](#Troubleshooting) section if you have any issues. +13. If everything is installed correctly, you will see a message that all settings have been configured. You can start using the extension. Otherwise check the [Troubleshooting](#Troubleshooting) section if you have any issues. 14. Press F1 and type **ESP-IDF: Show Examples Projects** to create a new project from ESP-IDF examples. Select ESP-IDF and choose an example to create a new project from. @@ -73,13 +73,13 @@ Make sure to review our [documentation](./docs/ONBOARDING.md) first to properly 17. Select an Espressif target (esp32, esp32s2, etc.) with the **ESP-IDF: Set Espressif Device Target** command. -18. Use the **ESP-IDF: Select OpenOCD Board Configuration** to choose the openOCD configuration files for the extension openOCD server. +18. Use the **ESP-IDF: Select OpenOCD Board Configuration** to choose the OpenOCD configuration files for the extension OpenOCD server. -19. Next configure your ESP-IDF project by pressing F1 and typing **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. +19. Next configure your ESP-IDF project by pressing F1 and typing **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. 20. When you are ready, build your project by pressing F1 and typing **ESP-IDF: Build your Project**. -21. Flash to your device by pressing F1 and typing **ESP-IDF: Select Flash Method and Flash** to select either `UART`, `DFU` or `JTAG` depending on your serial connection. +21. Flash to your device by pressing F1 and typing **ESP-IDF: Select Flash Method** to select either `UART`, `DFU` or `JTAG` depending on your serial connection. > **NOTE:** You can also use the **ESP-IDF: Flash (UART) your Project** or **ESP-IDF: Flash (with JTag)** directly. @@ -87,9 +87,9 @@ Make sure to review our [documentation](./docs/ONBOARDING.md) first to properly 23. To make sure you can debug your device, select your board configuration by pressing F1 and typing **ESP-IDF: Select OpenOCD Board Configuration**. You can test the connection by pressing F1 and typing **ESP-IDF: OpenOCD Manager**. The output is shown in the menu `View` -> `Output` and choose `ESP-IDF` from the dropdown list. - > **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. -24. If you want to start a debug session, just press `F5` (make sure you had at least build, flash and openOCD is connecting correctly so the debugger works correctly). +24. If you want to start a debug session, just press `F5` (make sure you had at least build, flash and OpenOCD is connecting correctly so the debugger works correctly). Check the [Troubleshooting](#Troubleshooting) section if you have any issues. @@ -137,7 +137,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to - Configuration + Configuration Add OpenOCD rules file (For Linux users) Add OpenOCD permissions to /etc/udev/rules.d to allow OpenOCD execution. @@ -164,7 +164,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to Select output and notification mode - This extension shows many notifications and output in the Output window ESP-IDF. This command allows the user to set if to show notifications, show output, both or none of them. + 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. @@ -185,7 +185,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to Basic Show Examples Projects - Launch UI to show examples from selected framework and allow the user to create a project from them. This command will show frameworks already configured in the extension so if + 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. @@ -241,7 +241,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to 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 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. @@ -254,7 +254,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to Project creation Show Examples Projects - Launch UI to show examples from selected framework and allow the user to create a project from them. This command will show frameworks already configured in the extension so if + 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. @@ -444,7 +444,7 @@ Click F1 to show Visual studio code actions, then type **ESP-IDF** to Launch IDF Monitor for CoreDump / GDB-Stub Mode - Launch ESP-IDF Monitor with websocket capabilities. If the user has configured the panic handler to gdbstub or core dump, the monitor will launch a post mortem debug session of the chip. + 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. @@ -589,8 +589,8 @@ We have implemented some utilities commands that can be used in tasks.json and l ``` - `espIdf.getExtensionPath`: Get the installed location absolute path. -- `espIdf.getOpenOcdScriptValue`: Return the value of OPENOCD_SCRIPTS from `idf.customExtraVars` or from system OPENOCD_SCRIPTS environment variable. -- `espIdf.getOpenOcdConfig`: Return the openOCD configuration files as string. Example `-f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp32-wrover.cfg`. +- `espIdf.getOpenOCDScriptValue`: Return the value of OpenOCD_SCRIPTS from `idf.customExtraVars` or from system OpenOCD_SCRIPTS environment variable. +- `espIdf.getOpenOCDConfig`: Return the OpenOCD configuration files as string. Example `-f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp32-wrover.cfg`. - `espIdf.getProjectName`: Return the project name from current workspace folder `build/project_description.json`. - `espIdf.getToolchainGcc`: Return the absolute path of the toolchain gcc for the ESP-IDF target given by `idf.adapterTargetName` configuration setting and `idf.customExtraPaths`. - `espIdf.getToolchainGdb`: Return the absolute path of the toolchain gdb for the ESP-IDF target given by `idf.adapterTargetName` configuration setting and `idf.customExtraPaths`. @@ -607,37 +607,37 @@ A template Tasks.json is included when creating a project using **ESP-IDF: Creat 4. `Clean` - Clean the project 5. `Flash` - Flash the device 6. `Monitor` - Start a monitor terminal -7. `OpenOCD` - Start the openOCD server +7. `OpenOCD` - Start the OpenOCD server 8. `BuildFlash` - Execute a build followed by a flash command. -Note that for OpenOCD tasks you need to define `OPENOCD_SCRIPTS` in your system environment variables with openocd scripts folder path. +Note that for OpenOCD tasks you need to define `OpenOCD_SCRIPTS` in your system environment variables with OpenOCD scripts folder path. # Troubleshooting If something is not working please check for any error on one of these: -> **NOTE:** Use `idf.openOcdDebugLevel` configuration setting to 3 or more to show debug logging in OpenOCD server output. +> **NOTE:** Use `idf.OpenOCDDebugLevel` configuration setting to 3 or more to show debug logging in OpenOCD server output. > **NOTE:** Use `logLevel` in your /.vscode/launch.json to 3 or more to show more debug adapter output. -1. In Visual Studio Code select menu **View** -> **Output** -> **ESP-IDF**. This output information is useful to know what is happening in the extension. -2. In Visual Studio Code select menu **View** then click **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. +1. In Visual Studio Code select menu **View** > **Output** > **ESP-IDF**. This output information is useful to know what is happening in the extension. +2. 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. 3. Check log file which can be obtained from: - Windows: `%USERPROFILE%\.vscode\extensions\espressif.esp-idf-extension-VERSION\esp_idf_vsc_ext.log` - Linux & MacOSX: `$HOME/.vscode/extensions/espressif.esp-idf-extension-VERSION/esp_idf_vsc_ext.log` -4. In Visual Studio Code, select menu **Help** -> `Toggle Developer Tools` and copy any error in the Console tab related to this extension. +4. In Visual Studio Code, select menu **Help** > `Toggle Developer Tools` and copy any error in the Console tab related to this extension. -5. Make sure that your extension is properly configured as described in [JSON Manual Configuration](./docs/SETUP.md#JSON-Manual-Configuration). Visual Studio Code allows the user to configure settings at different levels: **Global (User Settings)**, **Workspace** and **Workspace Folder** so make sure your project has the right settings. The `ESP-IDF: Doctor command` result might give the values from user settings instead of the workspace folder settings. +5. Make sure that your extension is properly configured as described in [JSON Manual Configuration](./docs/SETUP.md#JSON-Manual-Configuration). Visual Studio Code allows you to configure settings at different levels: **Global (User Settings)**, **Workspace** and **Workspace Folder** so make sure your project has the right settings. The `ESP-IDF: Doctor command` result might give the values from user settings instead of the workspace folder settings. -6. Review the [OpenOCD troubleshooting FAQ](https://github.com/espressif/openocd-esp32/wiki/Troubleshooting-FAQ) related to the `OpenOCD` output, for application tracing, debug or any OpenOCD related issues. +6. Review the [OpenOCD troubleshooting FAQ](https://github.com/espressif/OpenOCD-esp32/wiki/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 the user can't resolve the error, please search in the [github repository issues](http://github.com/espressif/vscode-esp-idf-extension/issues) for existing errors or open a new issue [here](https://github.com/espressif/vscode-esp-idf-extension/issues/new/choose). +If you can't resolve the error, please search in the [github repository issues](http://github.com/espressif/vscode-esp-idf-extension/issues) for existing errors or open a new issue [here](https://github.com/espressif/vscode-esp-idf-extension/issues/new/choose). # Code of Conduct diff --git a/docs/C_CPP_CONFIGURATION.md b/docs/C_CPP_CONFIGURATION.md index 80a3abec2..2b1f32cc3 100644 --- a/docs/C_CPP_CONFIGURATION.md +++ b/docs/C_CPP_CONFIGURATION.md @@ -21,19 +21,14 @@ For the default configuration, you must build your project beforehand in order t "includePath": [ "${config:idf.espIdfPath}/components/**", "${config:idf.espIdfPathWin}/components/**", - "${config:idf.espAdfPath}/components/**", - "${config:idf.espAdfPathWin}/components/**", "${workspaceFolder}/**" ], "browse": { "path": [ "${config:idf.espIdfPath}/components", "${config:idf.espIdfPathWin}/components", - "${config:idf.espAdfPath}/components/**", - "${config:idf.espAdfPathWin}/components/**", "${workspaceFolder}" - ], - "limitSymbolsToIncludedHeaders": false + ] } } ], @@ -57,19 +52,14 @@ For this configuration to work, you need to set you C/C++ Extension IntelliSense "includePath": [ "${config:idf.espIdfPath}/components/**", "${config:idf.espIdfPathWin}/components/**", - "${config:idf.espAdfPath}/components/**", - "${config:idf.espAdfPathWin}/components/**", "${workspaceFolder}/**" ], "browse": { "path": [ "${config:idf.espIdfPath}/components", "${config:idf.espIdfPathWin}/components", - "${config:idf.espAdfPath}/components/**", - "${config:idf.espAdfPathWin}/components/**", "${workspaceFolder}" - ], - "limitSymbolsToIncludedHeaders": false + ] } } ], diff --git a/docs/DEBUGGING.md b/docs/DEBUGGING.md index 89fbd5ead..6b8962bda 100644 --- a/docs/DEBUGGING.md +++ b/docs/DEBUGGING.md @@ -33,7 +33,7 @@ The default configuration is: where required of the arguments are automatically defined and resolved by the extension itself. -In case the user wants more customized control, the basic arguments in launch.json are: +In case you wants more customized control, the basic arguments in launch.json are: ```JSON { @@ -69,7 +69,7 @@ In case the user wants more customized control, the basic arguments in launch.js Some additional arguments you might use are: -- `runOpenOCD`: (Default: true). Run extension openOCD Server. +- `runOpenOCD`: (Default: true). Run extension OpenOCD Server. - `verifyAppBinBeforeDebug`: (Default: false) Verify that current ESP-IDF project binary is the same as binary in chip. - `logFile`: Absolute path to the file to log interaction with gdb. Example: `${workspaceFolder}/gdb.log`. - `verbose`: Produce verbose log output. @@ -108,7 +108,7 @@ Other arguments please review this extension's package.json `gdbtarget` debugger ## Use Microsoft C/C++ Extension to Debug -The user can also use [Microsoft C/C++ Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) to debug, the community recommend this launch.json configuration: +you can also use [Microsoft C/C++ Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) to debug, the community recommend this launch.json configuration: ```JSON { @@ -143,7 +143,7 @@ The user can also use [Microsoft C/C++ Extension](https://marketplace.visualstud # Using NativeDebug -The user can also try using the [Native Debug](https://marketplace.visualstudio.com/items?itemName=webfreak.debug) extension with this example launch.json configuration: +you can also try using the [Native Debug](https://marketplace.visualstudio.com/items?itemName=webfreak.debug) extension with this example launch.json configuration: ```JSON { @@ -170,7 +170,7 @@ The user can also try using the [Native Debug](https://marketplace.visualstudio. **DEPRECATED NOTICE**: We are deprecating the use of our ESP-IDF Debug Adapter in favor of using the Eclipse CDT GDB Adapter. It will removed from extension in the future major release. -This extension includes the [ESP-IDF Debug Adapter](https://github.com/espressif/esp-debug-adapter) which implement the debug adapter protocol (DAP) to communicate Xtensa's Toolchain and OpenOCD with Visual Studio Code allowing the user to easily debug ESP-IDF applications. Visual Studio Code will: +This extension includes the [ESP-IDF Debug Adapter](https://github.com/espressif/esp-debug-adapter) which implement the debug adapter protocol (DAP) to communicate Xtensa's Toolchain and OpenOCD with Visual Studio Code allowing you to easily debug ESP-IDF applications. Visual Studio Code will: 1. Launch the debug adapter server in port `debugPort` given in launch.json if `mode` is `auto` or 2. Connect to existing debug adapter server in port `debugPort` if `mode` is `manual`. @@ -201,7 +201,7 @@ The ESP-IDF Debug Adapter settings for launch.json are: > **NOTE**: If `gdbinitFile` is defined, these commands will be ignored. - `logLevel`: Debug Adapter logging level (0-4), 5 - for a full OOCD log. Default: 2. - `mode`: Can be either `auto`, to start the Debug Adapter and OpenOCD server within the extension or `manual`, to connect to an already running Debug Adapter and OpenOCD session. Default: auto. - > **NOTE:** If set to `manual`, OpenOCD and ESP-IDF Debug Adapter have to be manually executed by the user and the extension will just try to connect to existing servers at configured ports. + > **NOTE:** If set to `manual`, OpenOCD and ESP-IDF Debug Adapter have to be manually executed by you and the extension will just try to connect to existing servers at configured ports. - `name`: The name of the debug launch configuration. This will be shown in the Run view (Menu View -> Run). - `type`: Type of debug configuration. It **must** be `espidf`. - `verifyAppBinBeforeDebug`: (Default `false`) If enabled the extension will verify that the current workspace folder `build/${project-name}.bin` is the same of the target device application. `${project-name}` is the name of the project (i.e blink) and is obtained from the `build/project_description.json`. Set this to `true` to add application binary validation before debug session. diff --git a/docs/FEATURES.md b/docs/FEATURES.md index fe30c2a8c..1c857c6f4 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -2,7 +2,7 @@ This extension provides many features to ease development of ESP-IDF Projects. -- Quick [Configure ESP-IDF Extension](./SETUP.md) for first time user to help the user download, install and setup ESP-IDF and required tools within this Visual Studio Code extension. +- Quick [Configure ESP-IDF Extension](./SETUP.md) for first time user to help you download, install and setup ESP-IDF and required tools within this Visual Studio Code extension. - Quick prototyping by copying ESP-IDF examples with **ESP-IDF: Show ESP-IDF Examples Projects**. - Syntax highlighting for [KConfig](#Kconfig-files-editor) and ESP-IDF Kconfig style syntax validation if `idf.useIDFKconfigStyle` is enabled. - GUI [SDK Configuration Editor](#SDK-Configuration-editor) to configure your ESP-IDF project (esp-idf menuconfig). @@ -248,7 +248,7 @@ Here's the complete HTML table that combines the given information: Launch IDF Monitor for CoreDump / GDB-Stub Mode - Launch ESP-IDF Monitor with websocket capabilities. If the user has configured the panic handler to gdbstub or core dump, the monitor will launch a post mortem debug session of the chip. + 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. @@ -377,7 +377,7 @@ Here's the complete HTML table that combines the given information: Select output and notification mode - This extension shows many notifications and output in the Output window ESP-IDF. This command allows the user to set if to show notifications, show output, both or none of them. + 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. @@ -395,7 +395,7 @@ Here's the complete HTML table that combines the given information: Show Examples Projects - Launch UI to show examples from selected framework and allow the user to create a project from them. This command will show frameworks already configured in the extension so if + 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. @@ -454,7 +454,7 @@ On CMakeLists.txt file right click this extension provides a custom CMakeLists.t ## Custom Tasks -There are couple of custom tasks that the user can implement by using one of these configuration settings: +There are couple of custom tasks that you can implement by using one of these configuration settings: 1. Set `idf.customTask` to define a custom task to be executed with **ESP-IDF: Execute Custom Task** command or the activity bar icon. 2. Set `idf.preBuildTask` to define a custom task to be executed before **ESP-IDF: Build your Project** command task. @@ -484,13 +484,13 @@ In Visual Studio Code, for **ESP-IDF: Monitor Device** we use the shell executab ## OpenOCD Server -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. The output is shown in menu `View` -> `Output` -> `OpenOCD`. 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 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. The output is shown in menu `View` -> `Output` -> `OpenOCD`. By default it will be launched using localhost, port 4444 for Telnet communication, port 6666 for TCL communication and port 3333 for Gdb. Before using the OpenOCD server, you need to 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**. -> **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. -The resulting OpenOCD server launch command looks like this: `openocd -d${idf.openOcdDebugLevel} -f ${idf.openOcdConfigs} ${idf.openOcdLaunchArgs}`. The `idf.openOcdDebugLevel` is a number used to define the OpenOCD Log Level (0-4) and `idf.openOcdLaunchArgs` is a string array of any custom openOCD launch arguments the user wants to use. +The resulting OpenOCD server launch command looks like this: `openocd -d${idf.openOcdDebugLevel} -f ${idf.openOcdConfigs} ${idf.openOcdLaunchArgs}`. The `idf.openOcdDebugLevel` is a number used to define the OpenOCD Log Level (0-4) and `idf.openOcdLaunchArgs` is a string array of any custom openOCD launch arguments you wants to use. ## Partition Table Tree @@ -498,9 +498,9 @@ Click the`ESP-IDF Explorer` in the [Activity Bar](https://code.visualstudio.com/ ## SDK Configuration Editor -This extension includes a GUI Menuconfig using the `ESP-IDF: SDK Configuration Editor` command that reads your current project folder's `sdkconfig` file (if available, otherwise it would take default values) and start the [ESP-IDF JSON Configuration Server](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html?highlight=confserver#json-configuration-server) process (confserver.py in **\${IDF_PATH}**/tools) that enables the user to redefine ESP-IDF project and board configuration. +This extension includes a GUI Menuconfig using the `ESP-IDF: SDK Configuration Editor` command that reads your current project folder's `sdkconfig` file (if available, otherwise it would take default values) and start the [ESP-IDF JSON Configuration Server](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html?highlight=confserver#json-configuration-server) process (confserver.py in **\${IDF_PATH}**/tools) that enables you to redefine ESP-IDF project and board configuration. -When the user modify a parameter value, the value is send to the `confserver.py` process, which return the new value and other values modified to GUI Menuconfig and then update the values in the UI. +When you modify a parameter value, the value is send to the `confserver.py` process, which return the new value and other values modified to GUI Menuconfig and then update the values in the UI. Values are not automatically saved to the SDKConfig file until you click save changes. You can cancel any changes and load the values from the SDKConfig file by clicking cancel changes. If you click set default the current SDKConfig file is replaced by a template SDKConfig file and then loaded into the GUI Menuconfig rendered values. @@ -512,7 +512,7 @@ An IDF GUI Menuconfig log in `ESP-IDF` Output (Menu View -> Output) is created t ## Set Espressif Device Target -The **ESP-IDF: Set Espressif Device Target** allows the user to choose among Espressif different chips based on [idf.py set-target](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html?highlight=target#selecting-idf-target). +The **ESP-IDF: Set Espressif Device Target** allows you to choose among Espressif different chips based on [idf.py set-target](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html?highlight=target#selecting-idf-target). When you use this command, the following files are set: diff --git a/docs/HARDWARE_SUPPORT.md b/docs/HARDWARE_SUPPORT.md index bb0237eed..84e62b125 100644 --- a/docs/HARDWARE_SUPPORT.md +++ b/docs/HARDWARE_SUPPORT.md @@ -18,7 +18,7 @@ In addition to ESP-IDF chips, there are several boards configurations files impl # Current Frameworks Supported in the Extension -- [Arduino-ESP32](https://github.com/espressif/arduino-esp32) allows the user to add Arduino libraries as a ESP-IDF component in your current directory to use Arduino code in your ESP-IDF projects with the **Add Arduino-ESP32 as ESP-IDF Component** extension command. +- [Arduino-ESP32](https://github.com/espressif/arduino-esp32) allows you to add Arduino libraries as a ESP-IDF component in your current directory to use Arduino code in your ESP-IDF projects with the **Add Arduino-ESP32 as ESP-IDF Component** extension command. - [Espressif Audio Development Framework (ESP-ADF)](https://github.com/espressif/esp-adf) is the official audio development framework for the ESP32 and ESP32-S2 SoCs. The **Install ESP-ADF** will clone ESP-ADF to a selected directory and set `idf.espAdfPath` (`idf.espAdfPathWin` in Windows) configuration setting. diff --git a/docs/INSTALL.md b/docs/INSTALL.md index bbbb3eb48..5f3e0233c 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -44,4 +44,4 @@ To install from `.vsix` File: `${VSCODE_EXTENSION_DIR}` is the location of the extension: - 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/` diff --git a/docs/MANUAL_TESTING.md b/docs/MANUAL_TESTING.md index 1de0cc0fd..33497b57e 100644 --- a/docs/MANUAL_TESTING.md +++ b/docs/MANUAL_TESTING.md @@ -30,7 +30,7 @@ This test report outlines the verification of the functionality of the **ESP-IDF - **IDF Target:** [IDF_TARGET under test] - **Custom Extra Paths:** Containing all IDF Tools Path for current environment -Press menu **View**, click on **Command Palette** and type **ESP-IDF: Doctor Command**. You can copy the Extension Configuration Settings section here. +Press menu **View** > **Command Palette** and type **ESP-IDF: Doctor Command**. You can copy the Extension Configuration Settings section here. --- @@ -42,7 +42,7 @@ _Note: Each test case should outline the steps taken, expected results, and actu _Steps:_ -1. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Configure ESP-IDF Extension** and select it. +1. Press menu **View** > **Command Palette** and type **ESP-IDF: Configure ESP-IDF Extension** and select it. 2. A Window will load with several options. You can select where to save the setup settings. Select **Express** option. 3. Select download server : Github or Espressif (for Chinese mirrors). 4. Select ESP-IDF version to download, based on desired test. @@ -66,9 +66,9 @@ _Actual Results:_ _Steps:_ -1. Open ESP-IDF project to test. You can create one using the menu **View**, click on **Command Palette** and type **ESP-IDF: Show Examples Projects**, choose the **Use Current ESP-IDF** framework (or other framework to test). A Window will appear with a list of examples to choose from. Pick one of these examples and click on the **Create Project Using Example ** and choose where to create this new project. -2. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Set Espressif Device Target** and choose the **IDF_TARGET** for this testing report (esp32, esp32 S2 , etc.). -3. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Build your Project** and select it. +1. Open ESP-IDF project to test. You can create one using the menu **View** > **Command Palette** and type **ESP-IDF: Show Examples Projects**, choose the **Use Current ESP-IDF** framework (or other framework to test). A Window will appear with a list of examples to choose from. Pick one of these examples and click on the **Create Project Using Example ** and choose where to create this new project. +2. Press menu **View** > **Command Palette** and type **ESP-IDF: Set Espressif Device Target** and choose the **IDF_TARGET** for this testing report (esp32, esp32 S2 , etc.). +3. Press menu **View** > **Command Palette** and type **ESP-IDF: Build your Project** and select it. > **NOTE**: Each IDF_TARGET has to be built @@ -86,9 +86,9 @@ _Dependency_: Depends on Test Case 2 _Steps:_ -1. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Select Port to Use** and select it. +1. Press menu **View** > **Command Palette** and type **ESP-IDF: Select Port to Use** and select it. 2. Choose the Serial Port to connect and the workspace folder where to save the `idf.port` configuration setting. -3. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Flash your Project** and select it. +3. Press menu **View** > **Command Palette** and type **ESP-IDF: Flash your Project** and select it. 4. Select the flash method UART. Flashing should begin after. > **NOTE:** JTAG and DFU flash test results could be added here or added in a separated test case. @@ -106,9 +106,9 @@ _Dependency_: Depends on Test Case 2 and Test Case 3 _Steps:_ -1. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Select port to use** and select it. +1. Press menu **View** > **Command Palette** and type **ESP-IDF: Select port to use** and select it. 2. Choose the serial port to connect and the workspace folder where to save the `idf.port` configuration setting. -3. Press menu **View**, click on **Command Palette** and type **ESP-IDF: Monitor Device** and select it. +3. Press menu **View** > **Command Palette** and type **ESP-IDF: Monitor Device** and select it. 4. ESP-IDF Monitor should begin after. _Expected Results:_ diff --git a/docs/MULTI_PROJECTS.md b/docs/MULTI_PROJECTS.md index 03d689fd2..25c7b0d24 100644 --- a/docs/MULTI_PROJECTS.md +++ b/docs/MULTI_PROJECTS.md @@ -37,8 +37,8 @@ Projects folders (Known in vscode as workspace folders) and workspace level sett 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** then **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...**. +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. @@ -72,9 +72,9 @@ and `my-ws.code-workspace`: } ``` -1. If you open Visual Studio Code, click Menu **File** and run **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`). +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. + > **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. diff --git a/docs/PROJECT_CONFIGURATION.md b/docs/PROJECT_CONFIGURATION.md index 67033984f..268594b96 100644 --- a/docs/PROJECT_CONFIGURATION.md +++ b/docs/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). +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). Use the `ESP-IDF: Open Project Configuration` to manage the project configuration profiles to record the following settings for each configuration: diff --git a/docs/SETTINGS.md b/docs/SETTINGS.md index df5a53825..836e64e17 100644 --- a/docs/SETTINGS.md +++ b/docs/SETTINGS.md @@ -4,7 +4,7 @@ This extension contributes the following settings that can be later updated in s > **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 the user 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. For more information please take a look at [Working with Multiple Projects](./MULTI_PROJECTS.md). Use the `Select where to Save Configuration Settings` command to choose where to save settings when using this extension commands. +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. For more information please take a look at [Working with Multiple Projects](./MULTI_PROJECTS.md). 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. @@ -36,7 +36,7 @@ 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.** +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. @@ -55,7 +55,7 @@ These settings are specific to the ESP32 Chip/Board | `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.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 `\\` | User, Remote or Workspace | @@ -75,7 +75,7 @@ This is how the extension uses them: 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 [here](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/jtag-debugging/tips-and-quirks.html#jtag-debugging-tip-openocd-configure-target). 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}`. +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}`. ## Code Coverage Specific Settings diff --git a/docs/SETUP.md b/docs/SETUP.md index ad336f562..73897d970 100644 --- a/docs/SETUP.md +++ b/docs/SETUP.md @@ -49,7 +49,7 @@ Setup wizard provides 3 choices: > **NOTE:** When running any of these choices, the setup wizard will install ESP-IDF Python packages and ESP-IDF debug adapter (`EXTENSION_PATH`/esp_debug_adapter/requirements.txt) python packages where `EXTENSION_PATH` is located in: - 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` so make sure that if using an existing python virtual environment that installing these packages doesn't affect your virtual environment. @@ -63,10 +63,10 @@ After choosing any of the previous options, a status page is displayed showing E # JSON Manual Configuration -The user can manually configure the extension by setting the following configuration settings with corresponding values. Please take a look at [Configuration Settings](./SETTINGS.md) for more information. +You can manually configure the extension by setting the following configuration settings with corresponding values. Please take a look at [Configuration Settings](./SETTINGS.md) for more information. -1. With Visual Studio Code Command Palette (F1 or View Menu -> Command Palette) and type **Preferences: Open Settings (JSON)**. This will open the user global settings for Visual Studio Code. - > **NOTE:** The user could choose to modify its workspace settings.json for a workspace limited configuration or a project limited configuration in the project's `.vscode/settings.json`. Please take a look at [Working with multiple projects](./MULTI_PROJECTS.md). +1. With Visual Studio Code Command Palette (F1 or View Menu -> Command Palette) and type **Preferences: Open Settings (JSON)**. This will open you global settings for Visual Studio Code. + > **NOTE:** You could choose to modify its workspace settings.json for a workspace limited configuration or a project limited configuration in the project's `.vscode/settings.json`. Please take a look at [Working with multiple projects](./MULTI_PROJECTS.md). 2. Your settings.json should look like: MacOS/Linux @@ -149,7 +149,7 @@ For example if required ESP-IDF Tools are: you need to set in `idf.customExtraPaths`: -- Linux/MacOS +- MacOS/Linux ``` /home/myUser/.espressif/tools/openocd/version/openocd-esp32/bin:/home/myUser/.espressif/tools/xtensa-esp32/version/xtensa-esp32/bin diff --git a/docs/UNIT_TESTING.md b/docs/UNIT_TESTING.md index 983f0dd35..1d0d59a65 100644 --- a/docs/UNIT_TESTING.md +++ b/docs/UNIT_TESTING.md @@ -13,7 +13,7 @@ TEST_CASE("test name", "[module name]") ## Configure the ESP-IDF Project to enable unit tests in the extension -Let's say the user has a ESP-IDF project with the following structure: +Let's say you has a ESP-IDF project with the following structure: ``` unit_test @@ -29,13 +29,13 @@ unit_test 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 the user wants 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. +If you wants 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 [unit_test](https://github.com/espressif/esp-idf/tree/master/examples/system/unit_test) ESP-IDF example which can serve as reference. ## Running the tests -When the user click on the Testing Tab in the 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. When it press the run button on a test, it will configure the current project before the tests as follows: +When you click on the Testing Tab in the 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. 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. diff --git a/docs/WSL.md b/docs/WSL.md index 80b74a6af..2835c25d7 100644 --- a/docs/WSL.md +++ b/docs/WSL.md @@ -65,7 +65,7 @@ Now configure the USB serial device to be able to connect to the WSL with `usbip 1. Open PowerShell command prompt with administrator rights and then type in the command `usbipd list` for a list of USB serial devices. -2. To access the specify device which is from local Windows on WSL, the user needs to bind this device to WSL. Open PowerShell command prompt with administrator right and then type in the command `usbipd bind -b `: +2. To access the specify device which is from local Windows on WSL, you needs to bind this device to WSL. Open PowerShell command prompt with administrator right and then type in the command `usbipd bind -b `: > **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).

Start Tracing 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.

Blink example

-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.

Building @@ -44,14 +44,14 @@ You have several options to create a project: Size

-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 Flashing

-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`.

Monitor @@ -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 GCov example

-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.

GUI Menuconfig @@ -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.

OpenOCD Commands @@ -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.

html report 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.

Threads @@ -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 eFuse Explorer list

-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.

eFuse Explorer expanded 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.

- Gif of hovering feature + Gif of hovering feature

### 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.

- Screenshot of bottom panel + Screenshot of bottom panel

2. **Manual Search:** You can manually search for hints by copy pasting errors.

- Gif of manual search + Gif of manual search

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 @@ Select ESP-IDF

-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.

Install status

-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 @@ Select ESP-IDF Tools

-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.

Enter ESP-IDF Tools paths manually

-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.

Install complete

-> **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).

Partition Table Editor

-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 Rainmaker Connect

-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.

Rainmaker Auth Method 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",