Home

Awesome

Blinky_Pico2_dual_core_nosdk

Build Status

This repository implements an entirely manually-written bare metal project for the RaspberryPi(R) Pico2 RP2350 dual-core ARM(R) Cortex(R)-M33 / RISC-V Hazard3.

Features include:

A clear and easy-to-understand build system based on GNUmake completes this fun and educational project.

This repository provides keen insight on starting up a bare metal RaspberryPi(R) Pico2 RP2350 using no sdk.

Details on the Application

This low-level startup boots through core 0 and performs the low level initialization of the C/C++ environment and the clock configuration then starts up core 1 (via a specific protocol). Core 1 subsequently carries out the blinky application, while core 0 enters an endless, idle loop.

Low-level initialization brings the CPU up to full speed at $150~MHz$. Hardware settings such as wait states have seemingly been set by the bootloader.

Building the Application

Build on *nix* is easy using an installed ARM compiler gcc-arm-none-eabi or/and RISC-V compiler riscv32-unknown-elf

Build an ARM binary using the following command:

cd Blinky_Pico2_dual_core_nosdk
Rebuild.sh ARM

Build a RISC-V binary using the following command:

cd Blinky_Pico2_dual_core_nosdk
Rebuild.sh RISC-V

The build results including ELF-file, HEX-mask, MAP-file and assembly list file are created in the Output directory.

Continuous Integration

CI runs on pushes and pull-requests with a simple build and result verification on ubuntu-latest using GutHub Actions.