How to Get Started Developing With Zephyr® for the PIC32CM PL10 Curiosity Nano Board on Windows®

Last modified by Microchip on 2026/04/17 16:38

 

The following steps will guide you through setting up Zephyr® to develop with the PIC32CM PL10 cnano board on a Windows® 11 PC.

 

Zephyr Logo

Procedure

Confirm Zephyr support for the board.

To determine if a board is supported in Zephyr, go to the "Supported Boards and Shields" page.

A search where Microchip Technology Inc. is the vendor will show that PIC32CM PL10 Curiosity Nano is an officially-supported Zephyr board:

  • Board name: pic32cm_pl10_cnano
  • SoC: PIC32CM6408PL10048 (Arm® Cortex®‑M0+)

Board information is documented in the Zephyr board docs and backed by a full board definition in the Zephyr tree (Device Tree Source (DTS) text file), Kconfig (text-based configuration system), defconfig (software configuration file that works with Kconfig), and CMake (manages the software build process).

This means no porting work is required to get started.


Set up the Zephyr development environment.

Follow the standard Zephyr getting started flow—nothing Microchip‑specific is required.

The authoritative instructions are in the Zephyr docs, "Getting Started Guide".

Note: Section instructions will first tell you what needs to be done and then how to do it. So, we recommend reading the full section content before taking any actions, such as installing dependencies.

This setup works on Linux®, macOS®, or Windows®. Select Windows so that all getting-started content will be Windows-related.

Select and Update OS window

If you already work with Zephyr on other boards, you can reuse that environment.

For reference, the required components are:

  • Python® 3
  • CMake®
  • Ninja®
  • West (Zephyr’s meta-tool)
  • Zephyr Software Development Kit (SDK) (includes Arm® GNU Compiler Collection (GCC))

Clone Zephyr and initialize the workspace.

After following the guide to install your host dependencies, you will be instructed to execute the following commands:

1
2
3
4
west init zephyrproject
cd zephyrproject
west update
west zephyr-export

This pulls the Zephyr core plus all required modules, including Microchip HAL content used by PIC32CM devices. Continue with the guide until you reach the section on building your first app.


Build your first application (Blinky).

Zephyr already includes sample apps you can run unmodified, such as Blinky. To ensure that Blinky builds successfully, go to the Zephyr board docs discovered in Step 1 to find setup instructions for this board. Specifically under the Programming and Debugging section, check that the pic32cm device pack is installed. Then proceed to build the Blinky app:

1
west build -b pic32cm_pl10_cnano samples/basic/blinky

This works because:

  • The board’s default configuration (pic32cm_pl10_cnano_defconfig) already enables GPIO and the onboard LED.
  • The Devicetree maps the LED correctly.

Flash the board.

The PIC32CM PL10 Curiosity Nano includes an on‑board Nano debugger, which Zephyr can use via standard debug tools. The typical flow is:

1
west flash

Zephyr’s board support defines the flashing runner in board.cmake, so you don’t need to specify the tool manually.

Note: Zephyr does not depend on MPLAB® Tools for VS Code® or MPLAB X IDE. Zephyr uses its own build and flash tooling, even though the hardware debugger is the same.


Debugging is optional, but recommended.

The GNU Debugger (GDB) is a widely used, open‑source command-line debugger. Zephyr includes native support for GDB-based debugging on this board:

1
west debugde

This launches:

  • A GDB server
  • An Arm GDB session attached to the PIC32CM Cortex‑M0+

The exact debug backend is defined in the board files, not in your application.

Back to Top

What Hardware Features are Supported in Zephyr

According to the board documentation, Zephyr currently exposes:

  • Arm Cortex‑M0+ CPU
  • NVIC interrupt controller
  • GPIO (including onboard LED)
  • Flash and SRAM
  • SysTick timer

These features are explicitly listed as supported in the board’s DTS and documentation.

Additional peripherals (ADC, SERCOM, RTC, DMA, etc.) may be present in the SoC but are enabled incrementally in Zephyr—always check the DTS and Kconfig before assuming their availability.

Back to Top

Useful Information on Where to Look Next

Board documentation: 

Board source files (DTS, Kconfig): 

These are essential when you:

  • Add peripherals
  • Customize pin muxing
  • Write device drivers

Back to Top

Mental Model (For Users Familiar with MPLAB Tools or MPLAB Harmony v3)

The following table compares MPLAB/Harmony features with their Zephyr counterparts to help you understand how to work with Zephyr.

MPLAB Tools & MPLAB Harmony v3 Software Framework Zephyr
MCC-generated init code Devicetree + Kconfig
MPLAB XC32 projects west build
MPLAB Harmony drivers Zephyr drivers
IDE-centric CLI-first, IDE-optional
* MPLAB Tools & MPLAB Harmony refers to MPLAB Code Configurator (MCC) with MPLAB Harmony v3 used either in MPLAB Extensions for Microsoft VS Code or MPLAB X IDE.

Back to Top