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.

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

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 in 0.5; 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})

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