1.1.0 Release Notes
Source
CodeFusion Studio source can be found on GitHub under tag V1.1.0
About this release
CodeFusion Studio 1.1.0 introduces major enhancements for multi-core development, including multi-core project management, heterogeneous multi-core debugging, and powerful resource partitioning tools.
What's new
Tools
- System Planner: A new centralized interface for accessing configuration tools and managing workspace resources, including cores, peripherals, clocks, pins, and memory partitions.
- Memory Allocation – Define and manage memory partitions per core to optimize resource distribution across multi-core SoCs.
- Peripheral Allocation– Assign and configure peripheral blocks per core directly within the System Planner.
- Heterogeneous Multi-Core Debugging – Debug multiple cores in a single environment, eliminating the need for multiple IDEs.
- Device Tree View: Enables hardware component review for Zephyr-based projects, improving visibility and configuration management.
- Workspaces for Multi-Core Projects – Projects are now upgraded to workspaces, allowing one project per core for better organization and management. This ensures a streamlined development process across multiple cores in a unified workspace.
- UX upgrades - Improved accessibility and usability for the Registers page and Pin Config page.
- Context menu enhancements – With the move to multi-project per core workspaces, context-based action filtering has been introduced. Clicking on a project in the Context panel dynamically updates the Actions panel to display only relevant actions.
- Catalog Manager – A background service that automatically syncs the SoC data model, ensuring up-to-date information on cores, boards, and other hardware configurations.
- Plugin based project creation – A flexible, extensible plugin architecture that cleanly separates configuration from code generation, allowing developers to create plugins that align with internal standards.
Development platforms and tools
- Support for Zephyr RTOS 4.1 Get started
- Support for the Micro SDK (MSDK) Get started with MSDK
- Support for Registers-only (bare-metal) – A reference plugin for advanced workflows that generates MMR-based code for use in custom toolchains.
- Compiler and debug support available for Zephyr (ARM Cortex-M only) and MSDK (ARM Cortex-M and RISC-V) projects.
Supported versions
Component | Version |
---|---|
Arm GNU Toolchain | 14.2.Rel1 |
xPack GNU RISC-V Toolchain | 14.2.0-3 |
Zephyr RTOS | 4.1.0 |
Zephyr SDK | 0.17.0 |
Host architecture support
CodeFusion Studio is supported on the following host operating systems:
- Windows 10 or 11 (64-bit)
- macOS (ARM64)
- Ubuntu 22.04 and later (64-bit)
Target architecture support
Introduced support for the following processors:
Processor | MSDK | Zephyr | Config Tools | TESA |
---|---|---|---|---|
MAX32650 | Yes | Yes | No | Yes |
MAX32660 | Yes | Yes | No | No |
MAX32666 | No | Yes | No | No |
MAX32675C | Yes | Yes | No | No |
Known issues
- CodeFusion Studio is not compatible with VS Code version 1.99. This is expected to be resolved in newer versions of VS Code. VS Code v1.98 is known to be compatible with CodeFusion Studio.
Project management issues
- Zephyr supported for single-core configurations only
- Allocating Zephyr firmware to a RISC‑V core is unsupported and can produce invalid DTS overlays or build failures. Additionally, combinations that include Zephyr on ARM Cortex‑M cores and MSDK or bare-metal on RISC‑V cores are also unsupported. Use Zephyr only on ARM Cortex‑M cores in standalone configurations.
Tools issues
- Build failure when using conflicting timer modes (Zephyr projects)
- Zephyr projects that configure multiple Timer (TMR) peripherals in different modes, for example TMR0 in PWM mode and TMR1 in Compare mode, fail to build with the error:
multiple definition of 'Wrap_MXC_TMR_*
. This is because thewrap_max32_tmr.h
contains function definitions that are referenced by multiple drivers. The issue can be resolved by prefixing the function definitions inwrap_max32_tmr.h
withstatic inline
.
- Zephyr projects that configure multiple Timer (TMR) peripherals in different modes, for example TMR0 in PWM mode and TMR1 in Compare mode, fail to build with the error:
- Peripheral configuration support
- Peripheral configuration is currently supported for: ADC, I2C, SPI, Timers, UART, Watchdog Timers (WDT), and Real-Time Clocks (RTC). This also includes low-power variants such as LPTMR and LPUART.
- Timer pin limitations
- Some packages may not expose all timer signals on pins. For example, on the MAX32690 TQFN package, TMR2 and LPTMR1 have no exposed pins, which limits certain functionalities. These timers can still be used in modes that don’t require physical pins. When selecting modes, avoid selecting modes that require pins. These modes are not hidden in the UI.
- Unsupported peripherals in Zephyr
- Some peripherals are not supported in Zephyr. Enabling an unsupported peripheral results in a warning message
peripheral is not currently supported
in the Warnings section of the generated overlay file. Disable the unsupported peripheral and regenerate the code to resolve the warning. Refer to the generated overlay file for a complete list of unsupported peripherals.
- Some peripherals are not supported in Zephyr. Enabling an unsupported peripheral results in a warning message
- Partition naming restrictions
- Partition names created in the Memory Allocation tool must not start with a number, contain spaces, or include special characters (excluding
_
). Using an invalid partition name results in aparse error: expected '{', '=', or ';'
during code generation.
- Partition names created in the Memory Allocation tool must not start with a number, contain spaces, or include special characters (excluding
- MSDK
Board_Init()
interferes with peripheral allocation- CFS applies peripheral configuration from your
.cfsconfig
file through thePeripheralInit()
function. In MSDK-based projects, the SDK also provides aBoard_Init()
function that runs beforePeripheralInit()
and may configure peripherals such as UARTs or LEDs. To ensure.csfconfig
settings take full effect, override the SDK’sBoard_Init()
function by adding an empty version to a source file, such asmain.c
. This replaces the weak version defined by the SDK:
- CFS applies peripheral configuration from your
int Board_Init(void)
{
// Prevent MSDK from pre-configuring peripherals
return 0;
}
Registers-only (bare-metal) plugin issues
The Registers-only (bare-metal) plugin is available when using the manual configuration option in the Workspace Creation Wizard. The generated code is intended for reference only. Build and debug support is not included, and the code may not obey all the constraints on ordering and timing required by the hardware. The following limitations are known:
- Clock enable missing for peripherals assigned to non-primary core
- Clock enable instructions are only emitted when the peripheral is assigned to the primary core.
- Oscillator initialization not generated
- Code generation emits code to configure the clock tree, but it does not generate code to initialize the oscillators. Manual setup is required.
- Timer configuration in 32-bit mode is incomplete
- When using timers in 32-bit mode, the generated code does not set the TMRb clock to match TMRa, as required by the hardware.
Debug issues
- Segger JLink does not support all parts. See the following table for details. For a list of supported devices, see the Segger website.
Part | Issue | Alternatives |
---|---|---|
MAX32655FTHR | No JTAG connector for direct JLink connection | Use MAXPICO debugger instead |
MAX32660EVSYS | No JTAG connector for direct JLink connection | Use MAXPICO debugger instead |
MAX32662 | Not supported | Use MAXPICO debugger instead |
MAX32666FTHR | Serial output not available | Use MAXPICO debugger instead |
MAX32670EVKIT | J-Link supported, but board does not expose SWD/JTAG pins | Use MAXPICO debugger instead |
MAX32690FTHR | Serial output not available | Use MAXPICO debugger if you need serial output |
APARD32690 | Serial output not available | Use MAXPICO debugger if you need serial output |
MAX78000FTHR | Not supported | Use MAXPICO debugger instead |
- Debug toolbar remains after stopping session
- After pressing Stop following a Restart during a debug session, the debug toolbar may remain visible. To remove it, open the command palette and type
Reload Window
.
- After pressing Stop following a Restart during a debug session, the debug toolbar may remain visible. To remove it, open the command palette and type
- RISC-V debug session exits when modifying local variable during live debug with OpenOCD
- Modifying a local variable's value through the Variables view during a RISC-V debug session with OpenOCD can cause the session to exit unexpectedly.
SDK issues
- Maintenance Tool not supported on macOS 15 Sequoia
- The Maintenance Tool does not currently work on macOS 15 Sequoia. To uninstall CodeFusion Studio on this platform, manually delete the CodeFusion Studio directory from the filesystem.