DEV Community

Cover image for RaspberryPI Pico with Python: Make Firmware
Przemysław Papla
Przemysław Papla

Posted on • Edited on

RaspberryPI Pico with Python: Make Firmware

Introduction

In this article, I'll walk you through the process of crafting a custom firmware file for the Raspberry Pi Pico using
MicroPython. We'll explore the simplicity and power of MicroPython, providing step-by-step
instructions for creating a personalized firmware. By the end, you'll have the skills to shape the capabilities of your
Raspberry Pi Pico, enhancing its versatility and tailoring it to your specific project needs. Let's delve into the world
of MicroPython and enhance your microcontroller programming experience!

Setup

Clone micropython

  1. Choose Location:
    • Decide on a suitable location on your PC where you want to store the MicroPython repository.
  2. Open Terminal:
    • Navigate to the location where you want to clone the repository. You can use the cd command to change directories.
  3. Clone the Repository:

    • Run the following command to clone the MicroPython repository into the chosen location:
      git clone git@github.com:micropython/micropython.git
      cd micropython
      git submodule update --init lib/pico-sdk lib/tinyusb
    

Once these steps are completed, you'll have successfully cloned the MicroPython repository to your local machine, and
you can proceed with the next steps in your project.

Create module

Create a new file named main.py within the $MICROPYTHON_PATH/ports/rp2/modules directory. This is a file in which
you can write your own script. As example, I will use the following snippet:

import time
from machine import Pin

led = Pin(25, Pin.OUT)

while True:
    led.value(0)
    time.sleep(0.5)
    led.value(1)
    time.sleep(0.5)
Enter fullscreen mode Exit fullscreen mode

Create firmware

This sequence of commands is used to build and compile our firmware.

micropython/mpy-cross$ make
micropython/ports/rp2$ make submodules
micropython/ports/rp2$ make
Enter fullscreen mode Exit fullscreen mode
  1. make: This command is executed in the micropython/mpy-cross directory. It invokes the make tool to build the MicroPython cross-compiler.
  2. make submodules: Executed in the micropython/ports/rp2 directory, this command initializes and updates the submodules required for the Raspberry Pico.
  3. make: The final command, also executed in the micropython/ports/rp2 directory, triggers the actual build process for MicroPython on the Raspberry Pi Pico. It compiles the code and generates the firmware that can be flashed onto the microcontroller

Upon executing the specified commands, a uf2 file will be generated as the output. This uf2 file encapsulates the
compiled and processed MicroPython firmware, ready to be flashed onto the Raspberry Pico or the target device
specified in the build configuration.

ls build-PICO/*.uf2
Enter fullscreen mode Exit fullscreen mode

To flash your raspberry follow steps from the previous article.

Summary

In short, this article helps you make a custom firmware for the Raspberry Pico using MicroPython. It explains setup
steps, like cloning MicroPython and creating a module with a sample LED blink script. The step-by-step guide then shows
how to create a uf2 file ready to flash onto the Raspberry Pico.

The complete code is available on
my GitHub repository.

References

Top comments (0)