Microchip M2S Hello FPGA Kit

Microchip M2S Hello FPGA Kit

Overview

The Microchip M2S Hello FPGA Kit is a low-cost, compact, entry-level FPGA platform for users with low to medium FPGA experience. It supports powerful demos in image processing, signal processing, and artificial intelligence, and can measure live FPGA core power consumption while designs are running. Flash Freeze mode lets users freeze a design while maintaining the I/O state for low power applications. The kit also includes Arduino and mikroBUS connectors for prototyping and expansion.

The Zephyr board target for this port is m2s_hello_fpga_kit/m2s010.

Reference material for the kit is available in the official Microchip M2S Hello FPGA Kit product page and the related user guides and schematics published by Microchip.

Programming and debugging

The m2s_hello_fpga_kit board supports the runners and associated west commands listed below.

flash debug debugserver rtt attach
openocd ✅ (default) ✅ (default)

Building

Applications for the m2s_hello_fpga_kit/m2s010 board target can be built as usual:

west build -b m2s_hello_fpga_kit/m2s010

Clock Configuration

The current SmartFusion2 port does not program the MSS clock tree from Zephyr. The actual CPU and peripheral clocks must already be configured in the SmartFusion2 hardware design, for example in the MSS/Libero configuration used to build the board image.

In Zephyr, the software-visible CPU frequency is taken from the devicetree CPU node:

  • &cpu0 { clock-frequency = <...>; }

That value is then used to derive:

  • CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC

  • the SystemCoreClock variable used by the SmartFusion2 SoC port

The SmartFusion2-specific clock-controller node is currently used for UART clocking, while the remaining peripherals still use their local devicetree frequency properties. If the hardware clock configuration changes, update the devicetree to match the real board configuration. For example, an application overlay can override the CPU and peripheral clock description values:

&cpu0 {
   clock-frequency = <80000000>;
};

&clkc {
   clock-frequencies = <80000000 40000000>;
};

The devicetree values must describe the real hardware clocks. Changing them in Zephyr alone does not reprogram the SmartFusion2 clock hardware.

Flashing

The board uses the OpenOCD runner configuration from board.cmake and support/openocd.cfg. Once the CMSIS-DAP/OpenOCD setup for the kit is available in the host environment, the usual commands are:

west flash --runner openocd
west debug --runner openocd

Helpful Documentation

The following Microchip documents are useful when extending or upstreaming the board support.

Board Documentation

SoC Documentation

The quick start guide is useful for board bring-up, connector overview and kit contents. The device datasheet is the better top-level reference for package options, memory sizes, hard IP inventory and electrical capabilities. The programming guide is the better reference for flash programming, device configuration flows, boot/programming modes and debug-related setup.