How to Get Started Developing With Zephyr® for the PIC32CM PL10 Curiosity Nano Board on Windows®
The following steps will guide you through setting up Zephyr® to develop with the PIC32CM PL10 cnano board on a Windows® 11 PC.

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".
This setup works on Linux®, macOS®, or Windows®. Select Windows so that all getting-started content will be Windows-related.

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:
2
3
4
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:
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:
Zephyr’s board support defines the flashing runner in board.cmake, so you don’t need to specify the tool manually.
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:
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.
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.
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
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. | |