Configuration

Global Settings (User/Workspace)

Configure these in User Settings (Ctrl+,) or Workspace Settings:

onsemi.repositories

Type: object

Default: {}

Description: Repository configurations indexed by repository path.

Example:

{
  "onsemi.repositories": {
    "c:\\workspace\\zsdk": {
      "projectType": "zephyr",
      "tools": [
        {
           "id": "zephyr-sdk",
           "installPath": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\zephyr-sdk\\0.17.4",
           "version": "0.17.4",
           "isToolchain": true
         },
         {
           "id": "cmake",
           "installPath": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\cmake\\4.0.3\\bin",
           "version": "4.0.3",
           "isToolchain": false
         },
      ]
    },
    "c:\\cmake-project": {
      "projectType": "cmake",
      "tools": [
        {
           "id": "cmake",
           "installPath": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\cmake\\4.0.3\\bin",
           "version": "4.0.3",
           "isToolchain": false
         },
         {
           "id": "arm-none-eabi-gcc",
           "installPath": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\arm-none-eabi-gcc\\14.3.1\\bin",
           "version": "14.3.1",
           "isToolchain": true
         }
      ]
    }
  }
}

Properties:

  • projectType: Repository/project type - "zephyr", "cmake", or "unknown"

  • tools: Array of tool configurations

    • id: Tool identifier (e.g., "arm-none-eabi-gcc", "zephyr-sdk")

    • version: Tool version string

    • installPath: Absolute path to tool installation directory

    • isToolchain: Boolean indicating if tool is a toolchain

onsemi.certificatePath

Type: string

Default: ""

Description: Path to a custom CA certificate file to trust for HTTPS requests, Git SSL verification (GIT_SSL_CAINFO), and pip installs (--cert). Useful for corporate proxies that use self-signed or internal CA certificates.

Note

The path is validated before use; if it points to a directory or a missing file it is logged and skipped instead of aborting the install. In uv-managed Python environments the custom CA is passed to uv via the SSL_CERT_FILE environment variable (uv does not accept pip’s --cert flag), and --allow-insecure-host is used when onsemi.allowInsecureTls is set.

Example:

{
  "onsemi.certificatePath": "C:/certs/corporate-ca.crt"
}

onsemi.allowInsecureTls

Type: boolean

Default: false

Description: Disables TLS certificate verification for onsemi Studio HTTP requests, Git SSL verification, and pip trusted-host checks (not recommended for production).

onsemi.git.useWindowsSchannel

Type: boolean

Default: true (Windows only)

Description: On Windows, routes Git and West operations through Git’s native Secure Channel (schannel) SSL backend, so Git validates server certificates against the Windows certificate store. This resolves corporate proxy / custom-CA failures without a certificate bundle. It is applied via scoped GIT_CONFIG_* environment overrides (covering git invoked internally by west update) rather than mutating your global git config, and is reverted on deactivation. Has no effect on non-Windows platforms.

Example:

{
  "onsemi.git.useWindowsSchannel": false
}

onsemi.quickStart.enabled

Type: boolean

Default: true

Description: Show the Quick Start view in the onsemi Studio Activity Bar. The Quick Start view surfaces the Workspace and Tools Setup, Import Application, and Create New Application wizards alongside links to documentation. Set to false to hide the view from the sidebar.

Example:

{
  "onsemi.quickStart.enabled": false
}

Project-Specific Settings (Folder/Resource)

These settings apply to individual project folders and are typically stored in .vscode/settings.json:

onsemi.workspacePath

Type: string

Default: ""

Description: Absolute path to the workspace/repository containing this project.

onsemi.toolchain

Type: string

Default: ""

Description: Absolute path to the toolchain directory.

Example: "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\zephyr-sdk\\0.17.4"

onsemi.venv.path

Type: string

Default: ""

Description: Path to Python virtual environment.

Example: "C:\\zephyr-workspace\\.venv"

onsemi.args

Type: array

Default: []

Scope: resource

Description: Additional command-line arguments for build commands.

Example:

{
  "onsemi.args": ["--args1", "--args2"]
}

onsemi.envVars

Type: array

Default: []

Scope: resource

Description: Additional environment variables for build commands.

Example:

{
  "onsemi.envVars": [
    {
      "name": "ZEPHYR_BASE",
      "value": "C:/zephyr-workspace/zephyr"
    },
    {
      "name": "CMAKE_BUILD_PARALLEL_LEVEL",
      "value": "8"
    }
  ]
}

onsemi.build.configurations

Type: array

Default: []

Scope: resource

Description: Build configurations for the project.

Common Properties (all project types):

  • name (required): Configuration name

  • active: Whether this is the active configuration

  • args: Array of additional arguments

  • envs: Array of environment variables (same format as onsemi.envVars)

Zephyr-Specific Properties:

  • boardName: Target board identifier

  • sysbuild: Enable sysbuild mode (true/false)

  • pristine: Pristine build mode ("auto", "always", or "never")

  • arch: Target architecture (e.g., "arm", "riscv64")

  • snippets: Array of Zephyr snippet names to apply to the build. Each entry is passed to west build as a repeated -S <name> flag. Defaults to an empty list and is preserved when a configuration is cloned. Available snippets can be listed with the onsemi: West: List Snippets command or selected from the Snippets multi-select in the Configure Settings panel.

Zephyr-Specific Configuration Example:

{
  "onsemi.build.configurations": [
    {
      "name": "debug",
      "active": true,
      "boardName": "evb",
      "sysbuild": false,
      "pristine": "auto",
      "args": ["--", "-DCONFIG_DEBUG_OPTIMIZATIONS=y"],
      "envs": [
        {
          "name": "CONF_FILE",
          "value": "prj_debug.conf"
        }
      ]
    },
    {
      "name": "release",
      "active": false,
      "boardName": "evb",
      "sysbuild": true,
      "args": ["--", "-DCONFIG_SIZE_OPTIMIZATIONS=y"],
      "envs": [
        {
          "name": "CONF_FILE",
          "value": "prj_release.conf"
        },
        {
          "name": "EXTRA_DTC_OVERLAY_FILE",
          "value": "boards/onnn_rsl15_evb.overlay"
        }
      ]
    }
  ]
}

CMake-Specific Properties:

  • buildType: CMake build type ("Debug", "Release", "RelWithDebInfo", "MinSizeRel")

  • generator: CMake generator (e.g., "Ninja")

  • toolchainFile: Path to CMake toolchain file

  • cacheVars: Array of CMake cache variables

    • name: Variable name

    • value: Variable value

  • configurationPreset: CMake configuration preset name

  • buildPreset: CMake build preset name

  • sourceDir: Per-build-configuration override of the CMake source directory (relative to the project root). Used for superbuild layouts where different build configurations point at different sub-projects of the same workspace folder. When omitted, the project’s default source directory is used.

CMake-Specific Configuration Example:

{
  "onsemi.build.configurations": [
    {
      "name": "Debug",
      "active": true,
      "buildType": "Debug",
      "generator": "Ninja",
      "toolchainFile": "C:/cmake-toolchains/arm-none-eabi.cmake",
      "cacheVars": [
        {
          "name": "CMAKE_EXPORT_COMPILE_COMMANDS",
          "value": "ON"
        },
        {
          "name": "BUILD_TESTING",
          "value": "OFF"
        }
      ]
    },
    {
      "name": "Release",
      "active": false,
      "buildType": "Release",
      "generator": "Ninja",
      "configurationPreset": "release-preset",
      "buildPreset": "release-build"
    }
  ]
}

IntelliSense Settings

onsemi.intelliSenseProvider

Type: string

Default: "clangd"

Options: "clangd" | "mscpp"

Scope: resource

Description: Select IntelliSense provider. clangd is the default; mscpp (Microsoft C/C++) remains a supported alternative.

Example:

{
  "onsemi.intelliSenseProvider": "clangd"
}

onsemi.autoGenerateClangdConfig

Type: boolean

Default: true

Scope: resource

Description: Automatically generate .clangd configuration file.

onsemi.disableIntelliSense

Type: boolean

Default: true

Scope: resource

Description: Disable automatic IntelliSense configuration.

Complete Project Settings Example

Zephyr Project (.vscode/settings.json):

{
  "onsemi.workspacePath": "C:\\workspace\\zephyr",
  "onsemi.toolchain": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\zephyr-sdk\\0.17.4",
  "onsemi.venv.path": "c:\\workspace\\zephyr\\.venv",
  "onsemi.build.configurations": [
    {
      "name": "debug",
      "active": true,
      "boardName": "evb",
      "pristine": "auto",
      "envs": [
        { "name": "CONF_FILE", "value": "prj_debug.conf" },
        { "name": "DTC_OVERLAY_FILE", "value": "C:/boards/evb.overlay" }
      ]
    },
    {
      "name": "release",
      "active": false,
      "boardName": "evb",
      "sysbuild": true,
      "envs": [{ "name": "CONF_FILE", "value": "prj_release.conf" }]
    }
  ]
}

CMake Project (.vscode/settings.json):

{
  "onsemi.workspacePath": "C:\\workspace\\cmake-project",
  "onsemi.toolchain": "C:\\Users\\username\\AppData\\Local\\onsemi\\tools\\arm-none-eabi-gcc\\14.3.1\\bin",
  "onsemi.build.configurations": [
    {
      "name": "Debug",
      "active": true,
      "args": [],
      "envVars": [],
      "buildType": "",
      "generator": "Ninja",
      "targets": [],
      "configurationPreset": "Debug-CM33",
      "buildPreset": "",
      "toolchainFile": "",
      "cacheVars": [
        { "name": "CMAKE_EXPORT_COMPILE_COMMANDS", "value": "ON" },
        { "name": "BUILD_TESTING", "value": "OFF" }
      ]
    },
    {
      "name": "Release",
      "active": false,
      "args": [],
      "envVars": [],
      "buildType": "",
      "generator": "Ninja",
      "targets": [],
      "configurationPreset": "MinSizeRel-CM33",
      "buildPreset": "",
      "toolchainFile": "",
      "cacheVars": [
        { "name": "CMAKE_EXPORT_COMPILE_COMMANDS", "value": "ON" }
      ]
    }
  ]
}

SDK Manifest (sdk.json)

Bare-metal SDKs and projects derived from them describe themselves to the extension through an sdk.json file. Two flavors exist:

SDK-side ``sdk.json`` (sits at the root of an installed SDK):

  • name: Stable SDK identifier used for dependency matching (e.g., "onsemi-bm-sdk")

  • version: Semver version of the SDK installation (e.g., "1.4.2")

  • envVarName: Name of the environment variable the extension exports for this SDK so projects can reference it from CMakePresets.json via $env{...} (e.g., "ONSEMI_BM_SDK" → used as $env{ONSEMI_BM_SDK})

  • minJLinkVersion: Optional minimum recommended J-Link version for this product (e.g., "7.94"). When set, onsemi Studio warns (once per window session, non-blocking) if J-Link is missing or older than this version when starting a J-Link debug session or running west flash, and offers a shortcut to the SEGGER download page. SDKs that do not declare this field produce no warning.

  • isNVMSupport: Optional boolean. When true, the NVM Image Tool panel and the onsemi.panel.nvm command are surfaced for this SDK (via the onsemi.nvmSupported context key).

Project-side ``sdk.json`` (sits inside the project, alongside CMakePresets.json):

  • sdkDependencies: Map of SDK name → semver range that the project requires. Example:

    {
      "sdkDependencies": {
        "onsemi-sdk": "^1.4.0",
        "onsemi-rsl15-sdk": ">=2.0.0 <3.0.0"
      }
    }
    

When the project is configured the extension resolves each entry against the installed SDKs registered under onsemi.repositories. If a dependency cannot be satisfied the extension reports an actionable error of the form “This project requires <NAME> <range>; installed: <list>” and the configure step is aborted. When all dependencies are satisfied the matching SDK’s envVarName is exported into the project’s environment so the corresponding $env{...} substitution in CMakePresets.json resolves to the SDK’s install path.

Auth-Gated Toolchains (tools.json)

A tool declared in an SDK’s tools.json may require authorized onsemi access to download by setting "auth": "github" (for example, a custom toolchain). When you are not authorized to download such a tool — you cancel the sign-in / PAT prompt or your account lacks access — that tool is skipped instead of failing the whole install. Remaining tools continue installing, and the setup wizard’s Finish step lists the skipped toolchains with a note that they require authorized onsemi access and can be installed later once access is granted. This applies to both Express and Advanced setup modes.