Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/analogdevicesinc/codefusion-studio/llms.txt

Use this file to discover all available pages before exploring further.

A CFS workspace is the top-level container that organizes one or more projects targeting an Analog Devices microcontroller or DSP. Each workspace is described by a .cfsworkspace file — a JSON document that records the selected SoC, board, package, and a Projects array that captures per-core configuration such as firmware platform, plugin ID, build system, and Zephyr version. Opening a workspace in CodeFusion Studio automatically loads the System Planner Configuration Tools dashboard so you can begin configuring pins, clocks, memory, and peripherals straight away.

What is a CFS workspace?

Single-core workspace

A workspace built around a single processor core — for example, the ARM Cortex-M4F on a MAX32690. Ideal for straightforward MSDK or Zephyr projects.

Multi-core workspace

A workspace that includes multiple cores, such as the CM4 and RISC-V cores found on the MAX32690. Each core gets its own project entry and code generation plugin.

Template workspace

Created from a pre-defined ADI workspace plugin that ships with recommended defaults — firmware platform, KConfig flags, CMake arguments, and board name all pre-populated.

Manually configured workspace

Built step-by-step through the Workspace Creation Wizard, letting you choose exactly which cores to enable, which code generation plugin to use, and all platform options.

Create a new workspace

New workspaces are created with the Workspace Creation Wizard inside VS Code.

Launch the Wizard

1

Open the CFS panel

Click the CodeFusion Studio icon in the VS Code activity bar.
2

Start a new workspace

Click New Workspace to open the Workspace Creation Wizard.
3

Select a processor

Choose a processor from the list. You can type a partial name to filter the options.
4

Choose a board and package

For an ADI reference board, select it under Standard Boards and Packages. For a custom board, select it under Custom Board Packages.

Choose a creation method

After selecting the processor and board you will be presented with two options:
Choose a pre-defined SoC template that comes with ADI-recommended configuration options. Templates are provided by workspace plugins and appear in the wizard automatically. Both single-core and multi-core templates are available.
This is the fastest way to get a working project — all firmware platform settings, KConfig flags, and CMake arguments are pre-populated from the plugin defaults.

Complete workspace setup

1

Enter workspace name

Enter a workspace name using only letters, numbers, underscores, dashes, and periods. Spaces and other special characters are not permitted.
2

Set location

Use the default location or uncheck the box to choose a different directory. You can also type a path manually or use the Browse button.
3

Create the workspace

Click Create Workspace.
4

Trust the workspace

If prompted with Do you trust the authors of the files in this workspace?, click Yes, I trust the authors to continue.
5

System Planner opens

Once created, workspace files appear in the File Explorer and the System Planner Configuration Tools dashboard opens automatically.
If generation fails, error messages will guide you to resolve issues before trying again.

Open an existing workspace

If the project contains a *.code-workspace file:
1

Open the CFS panel

Click the CodeFusion Studio icon in the VS Code activity bar.
2

Open workspace

Click Open Workspace to open the file explorer.
3

Select the workspace

Select the desired workspace and click Open Workspace. The contents are displayed in the Explorer view in the primary side bar.
On some systems, files starting with . are hidden by default.

Copy workspace settings

You can create a new workspace based on the settings of an existing workspace by clicking Configure Workspace in the CodeFusion Studio interface. This opens the wizard pre-filled from the selected .cfsworkspace file. You can then modify options such as processor selection, board configuration, core settings, and firmware platform without starting from scratch.
For example, if you initially created a workspace for the MAX32690 EV kit using an MSDK template, you can use Configure Workspace to start from that setup and switch to a Zephyr template.

Migrate an existing project to System Planner

Older .cfsconfig files are not compatible with the new System Planner format. To enable System Planner in an existing project, you must create a new workspace using the latest format.
It is strongly recommended to keep a backup copy of the original project files before migrating.
1

Save a copy of the original config

Save a local copy of the original .cfsconfig file from your existing project.
2

Create a new workspace

Create a new workspace using the Workspace Creation Wizard.
3

Open the original config in a text editor

In VS Code, right-click the original .cfsconfig file, select Open with, then choose Text Editor.
4

Compare configs

Compare the new .cfsconfig file to your saved original and identify any missing top-level fields.
5

Reconfigure in System Planner

Use System Planner to update configurations as needed:
  • Allocate and configure peripherals
  • Assign and configure pins
  • Configure clocks
  • Allocate and partition memory
  • View registers
6

Save and verify

Save your changes and verify pin and clock assignments with System Planner.

Multi-core workspaces

On devices such as the MAX32690, the SoC contains both an ARM Cortex-M4F (CM4) and a RISC-V (RV) core. A CFS workspace can target both cores simultaneously. Each core gets its own entry in the Projects array of the .cfsworkspace file, with independent plugin, firmware platform, and platform configuration settings. In the System Planner, the Workspace Projects table lists all enabled cores and lets you track peripheral allocation, pin assignments, and memory partitions independently for each.

TrustZone workspaces

Arm® TrustZone® is a hardware-based security technology available on Cortex-M33 cores. CodeFusion Studio supports TrustZone on the MAX32657 and MAX32658 devices, allowing you to create independent secure and non-secure execution environments in a single workspace.
  • Secure environment — runs trusted code and protects sensitive assets such as secure boot, cryptographic libraries, or key storage.
  • Non-secure environment — runs code that does not require isolation, such as the main application, drivers, and general-purpose user code.

Create a TrustZone-enabled workspace

1

Select a compatible device

In the Workspace Creation Wizard, select a MAX32657 or MAX32658 device and choose a board.
2

Select the TF-M template

In the Workspace Creation Options screen, select the TF-M Secure Partition template. This option automatically configures a secure partition environment using Trusted Firmware-M (TF-M) with Zephyr and ADI defaults.
Once created, the System Planner displays a flag next to each project clearly marking secure and non-secure configurations, helping you distinguish which project owns which resources.

Workspace file format

Each workspace is represented on disk by a .cfsworkspace JSON file. This file is the authoritative record of the workspace and is read by both the VS Code extension and the cfsutil CLI.

Minimal workspace file

{
  "Copyright": "Copyright (c) 2024 Analog Devices, Inc.  All rights reserved.",
  "DataModelVersion": "0.0.1",
  "Timestamp": "2024-11-18T12:25:18.955Z",
  "Soc": "",
  "WorkspacePluginId": "",
  "Board": "",
  "Package": "",
  "Projects": [],
  "WorkspacePluginVersion": "",
  "WorkspaceName": "",
  "Location": ""
}

Populated multi-core workspace (MAX32690)

The following example shows a workspace targeting the MAX32690 with a Zephyr-based CM4 project and an MSDK-based RISC-V project:
{
  "Copyright": "Copyright (c) 2024 Analog Devices, Inc.  All rights reserved. This software is proprietary to Analog Devices, Inc. and its licensors.",
  "DataModelVersion": "0.0.1",
  "Timestamp": "2025-03-17T13:17:04.502Z",
  "Soc": "MAX32690",
  "WorkspacePluginId": "",
  "Board": "AD-APARD32690-SL",
  "Package": "WLP",
  "Projects": [
    {
      "Id": "corepart_01jrdgezrce69rsqvja125h3v2",
      "CoreId": "CM4",
      "Name": "Arm Cortex-M4F",
      "IsPrimary": true,
      "IsEnabled": true,
      "PluginId": "com.analog.project.zephyr.plugin",
      "PluginVersion": "1.0.0",
      "FirmwarePlatform": "zephyr",
      "PlatformConfig": {
        "ProjectName": "myProject",
        "BuildSystem": "ninja",
        "ZephyrBoardName": "zephyr_board_name",
        "ZephyrVersion": "4.2.0",
        "KConfigFlags": "CONFIG_DEBUG=y\nCONFIG_NO_OPTIMIZATIONS=y\n",
        "CMakeArgs": "zephyr_cc_option(-fstack-usage)\n",
        "EnableTFM": false,
        "MCUbootImgtoolPath": "${config:cfs.sdk.path}/SDK/zephyr/bootloader/mcuboot/scripts",
        "MCUbootKeyType": "rsa-3072"
      }
    },
    {
      "Id": "corepart_01jrdgezrce6a8zq3xaqac6wkg",
      "CoreId": "RV",
      "Name": "RISC-V",
      "IsPrimary": false,
      "IsEnabled": true,
      "PluginId": "com.analog.project.msdk.plugin",
      "PluginVersion": "1.1.0",
      "FirmwarePlatform": "msdk",
      "PlatformConfig": {
        "ProjectName": "myProject",
        "MsdkBoardName": "msdk_board_name",
        "Cflags": "-fstack-usage\n-gdwarf-4"
      }
    }
  ],
  "WorkspacePluginVersion": "1.0.0",
  "WorkspaceName": "test-workspace-name",
  "Location": "test/workspace/path"
}
FieldDescription
CopyrightLicense/copyright notice for the workspace file.
DataModelVersionThe schema version used to parse this file.
SocThe target SoC identifier, for example MAX32690.
WorkspacePluginIdID of the workspace plugin used to create the workspace (empty for manually configured workspaces).
BoardThe board name, for example AD-APARD32690-SL.
PackageThe SoC package variant, for example WLP or TQFN.
ProjectsArray of per-core project configurations.
Projects[].IdUnique identifier for this core partition entry.
Projects[].CoreIdCore identifier, for example CM4 or RV.
Projects[].IsPrimaryMarks the mandatory primary core.
Projects[].PluginIdThe code generation plugin used for this core.
Projects[].FirmwarePlatformPlatform tag: zephyr, msdk, etc.
Projects[].PlatformConfigPlugin-specific options such as board name, Zephyr version, and build system.
WorkspacePluginVersionVersion of the workspace plugin (empty for manually configured workspaces).
WorkspaceNameThe workspace name as entered in the Workspace Creation Wizard.
LocationFilesystem path to the workspace directory.

Build docs developers (and LLMs) love