https://github.com/chalandi/blinky_pico2_dual_core_nosdk
Bare-metal programming on RP2350 dual-core ARM Cortex-m33/RISC-V Hazard3 (non-SDK)
https://github.com/chalandi/blinky_pico2_dual_core_nosdk
pi-pico2 pico2 rp2350
Last synced: 7 months ago
JSON representation
Bare-metal programming on RP2350 dual-core ARM Cortex-m33/RISC-V Hazard3 (non-SDK)
- Host: GitHub
- URL: https://github.com/chalandi/blinky_pico2_dual_core_nosdk
- Owner: Chalandi
- License: gpl-3.0
- Created: 2024-09-08T02:39:05.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-14T12:08:05.000Z (about 1 year ago)
- Last Synced: 2024-09-15T00:52:27.624Z (about 1 year ago)
- Topics: pi-pico2, pico2, rp2350
- Language: C
- Homepage:
- Size: 25.2 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Blinky_Pico2_dual_core_nosdk
==================[](https://github.com/chalandi/Blinky_Pico2_dual_core_nosdk/actions)
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:
- CPU, dual-core boot both ARM and RISC-V supported, clock and PLL initialization,
- timebase derived from SysTick,
- blinky LEDs example,
- implementation in C11 with absolute minimal use of assembly.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:
```sh
cd Blinky_Pico2_dual_core_nosdk
Rebuild.sh ARM
```Build a RISC-V binary using the following command:
```sh
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.