Set Up a Custom Board#

Use one of the following workflows to develop applications for a custom board:

  • Create a device-compatible project by using a board-independent Empty sample application.

  • Retarget an example project created for a Silicon Labs development board to a device on your custom board.

Create a Device-Compatible Project#

The simplest approach is to create a project directly for the target device used on your custom board.

When you create the project, select the target device.

Board selection during project creationBoard selection during project creation

Then select one of the board-independent Empty sample applications provided by the Silicon Labs SDK, such as:

  • Bluetooth - SoC Empty

  • Empty C Project

Board-independent Empty sample applicationsBoard-independent Empty sample applications

This approach creates a project that is already configured for the selected device, including:

  • Memory layout

  • Clock configuration

  • Available peripherals

  • Device-specific constraints

The project should build successfully without additional modifications. You can then add any additional configurations required for your custom board and application requirements.

Retarget an Example Project#

If an existing example project closely matches your application, you can create a project for a Silicon Labs development board, such as a Radio Board or Explorer Kit, that uses a device similar to the target part on your custom board. You can then retarget it to the device on your custom board.

This workflow lets you reuse existing software components, peripheral configurations, and application code from a Silicon Labs example.

1. Add a Virtual Device#

You do not need a physical board to use this workflow. Silicon Labs development boards can be added as virtual devices in Simplicity Studio.

Silicon Labs development boards use superset target devices that provide additional pins, increased memory, enhanced peripherals, and expanded system capabilities.

For custom boards that use devices within the same device family, the retargeting workflow supports transitions between superset and subset devices.

To add a virtual device:

  1. On the DEVICES page, select Add Device(s).

  2. In the Search field, enter the device or board name. Make sure the Board and Part checkboxes are selected.

    • If no boards match, delete the last character to broaden the search.

    • If no matches still appear, select a more general device family instead of one tied to a specific wireless protocol.

  3. Select the device or board from the Device & Products Catalog.

  4. The selected device is added to the Device tree, and a device profile tab opens.

2. Create an Example Project#

After you add a virtual device:

  1. Select the board in the Device tree.

  2. Open the Example Projects & Demos tab to view example projects for that board. If few examples are listed, select a different board.

  3. Use filters to narrow the results.

  4. Select CREATE for a project that closely matches the application you are developing or that uses similar peripherals.

  5. Review the project documentation before you continue.

Selecting an example project for a custom board workflowSelecting an example project for a custom board workflow

After you create the project, make sure it builds successfully in Visual Studio Code before you retarget it.

3. Retarget the Project#

Although retargeting can be performed at any time, retargeting early helps minimize rework, especially if the target part does not have the same resources, such as pins or peripherals, as the part on the original board.

Retargeting requires you to remove the board and select the actual target part from the Project Configurator (.slcp file). This process includes two separate save operations: one after you remove the board and another after you set the target part.

To retarget the project:

  1. In Simplicity Studio, select Projects.

  2. For your project, open the Overview tab and locate the Target and Tool Settings card.

  3. Select Change Target/SDK/Generators.

  4. Enter custom board in the Boards Search or Select field.

  5. In the Part Search or Select field, start entering the target part, and then select it from the drop-down list. Remove any listed boards by selecting the small x next to each board.

  6. Select Save.

Retargeting a project to a custom board deviceRetargeting a project to a custom board device

The project is regenerated for the selected device.

When you retarget from a Silicon Labs development board, Project Configurator preserves board configurations, software components, and drivers, such as LEDs, buttons, HFXO, LFXO, RF front-end, and sensors, from the original board. This eliminates the need to manually create a Board Support Package (BSP) by using the Pintool, provided that the custom board pin configuration matches the Silicon Labs board.

If the pin configuration differs, for example, if an LED is assigned to a different pin, update the configuration by using the Pintool based on your custom board schematics.

4. Resolve Configuration Issues#

After you retarget the project, review it for configuration mismatches.

  • Pin Assignments:

    Update pin definitions to match the custom board schematic.

  • Hardware Resources:

    When you retarget to a target device with the same hardware features, such as peripherals, power modes, and memory, the configuration from the original example is retained. If the target device lacks peripherals or features that the original example uses, remove or replace unsupported components to prevent build failures.

  • Memory Configuration:

    Project Configurator automatically updates the linker configuration to reflect memory changes.

After you resolve any configuration issues, generate a Project Configuration Report. This report summarizes installed board components and helps verify the project setup.

Configure Debugging for a Custom Board#

The following Silicon Labs debug adapters are supported for programming and debugging custom boards and hardware:

Debug Adapter

Debug Mode

Description

Wireless Starter Kit Mainboard (WSTK BRD4001A)

OUT

Uses the external debug connection for a custom board.

Wireless Pro Kit Mainboard (WPK BRD4002A, OPN: Si-MB4002A)

MINI

Uses the onboard mini-Simplicity connector.

Wireless Pro Kit Mainboard (WPK BRD4002A, OPN: Si-MB4002A)

OUT

Uses the debug connectors on the side of the board.

Simplicity Link Debugger (Si-DBG1015A)

OUT

Connects to the custom board through the mini-Simplicity connector or header pins by using jumper wires.

Note: For either a WSTK or WPK configured for OUT mode, the recommended connection method is to use a Simplicity Debug Adapter Board (SLSDA001A). Insert the adapter board into the Debug Connector and Simplicity Connector, and then use a 10-pin ribbon cable to connect to the debug connector on the custom board.

Configure the Debug Adapter#

  1. In Simplicity Studio, select DEVICES.

  2. In the Device tree, select the board you want to use as a custom board.

  3. In the General Information panel, change Debug Mode to the correct type for your device.

    Changing debug mode in the General Information panelChanging debug mode in the General Information panel

  4. Under the selected adapter in the Device tree, select Detect Target Part.

    Detect Target Part option in the Device treeDetect Target Part option in the Device tree

  5. If the target device is an SiWG917 device, select Check if your target board is based on SiWG917.

    Detect Target Part dialog for an SiWG917 deviceDetect Target Part dialog for an SiWG917 device

  6. Select Detect Target Part.

Note: To detect a different target device, right-click the detected target in the Device tree and select Reset Hardware Override. Then run Detect Target Part again.

Configure Debug Sessions in VS Code#

The VS Code extension automatically retrieves the debug adapter configuration from Simplicity Device Manager, so no additional setup is typically required to flash and debug a custom board. The debug adapter configured for the custom board appears under Devices in the Simplicity VS Code extension.

If the default settings are not sufficient, use the project-specific Debug Configurator:

  1. Right-click the project folder.

  2. Select Open Configurators 2.0.

    Open Configurators 2.0 from the project folderOpen Configurators 2.0 from the project folder

  3. Select Debug Configurator.

The standard debug configuration fields are prefilled. Expand the bottom section of the dialog to view optional fields for the debug session, including configuration options for RTT and SWO terminals.

Optional RTT and SWO settings in Debug ConfiguratorOptional RTT and SWO settings in Debug Configurator

Common Settings#

  • Break after Reset: Stops code execution after a reset instead of running to main.

  • Run to entry point: Defaults to main, but you can change it for special debugging scenarios.

Enable the RTT Config and/or SWO Config sections to apply custom settings for those terminals. The default settings are typically sufficient.