About Sandpiper
Sandpiper is a custom SoC system built around the Zynq 7020 FPGA using the Smart Zynq SP board. It is a Linux-based small computer with custom video and audio circuitry programmed into the FPGA fabric.
Hardware Features
- Processor: Dual 32-bit ARMv7 Cortex-A9 cores running at 667MHz with hardware floating point / NEON
- Memory: 512MB DDR3 RAM (MT41K256M16) with 32 Mbytes shared between devices
- Video: HDMI output supporting multiple resolutions (320x240, 320x480, 640x480, 640x240) with 8-bit indexed or 16-bit RGB color modes
- Audio: 16-bit stereo PCM audio at 44.1 KHz, 22.05 KHz, or 11.025 KHz via HDMI
- Connectivity: Gigabit Ethernet (RTL8211E PHY), SD card slot, UART and power via USB
Software
- Operating System: Petalinux (Xilinx) with custom device driver (
/dev/sandpiper) - SDK: C/C++ SDK with samples for video, audio, and VCP (Video Coprocessor) programming
- Toolchain: GCC 13.3.0 ARM cross-compiler
Emulation
The Sandpiper QEMU repository includes all necessary utilities to run the sandpiper system emulator.
- Location: The
qemu/bin/directory contains the required executables. - Platform: Prebuilt binaries are provided for Windows.
- Disk Image: The emulator uses the same disk image as the physical Sandpiper device, which is distributed separately (download path will be announced when available). The file name is
extracted_sdcard.imgand should be copied to thebin/directory for the emulator to run. - Usage: To start the emulator (after you have the OS image), simply go to the root directory of qemu repo and type
boot_emulator.bat. After the emulator starts and shows the petalinux login screen, you can start terminal.bat from the same directory to connect to it and remotely control the machine. Pleae note that network works and can access the internet, so you should be able to copy files either from git or any other source over the network.
Development Toolchain
The Sandpiper disk image comes prebuilt with GCC 13.3.0. To develop on your host machine:
- Linux (Ubuntu 24.04):
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install g++-arm-linux-gnueabihf - Windows: Download "13.3.Rel1 AArch32 GNU/Linux target with hard float" from
ARM GNU Toolchain Downloads
Also install Make for Windows - MacOS:
brew install arm-linux-gnueabihf-binutils
brew link arm-linux-gnueabihf-binutils
The hardware can be updated simply by changing the bitstream file on the SD card—no complicated flashing procedures or hardware programmers required.
Documentation
Explore the SDK documentation to learn how to develop for the Sandpiper platform:
- SDK Documentation - Platform overview and API reference
- Platform Utilities - Device initialization and memory management
- Video Processing Unit - Display and graphics control
- Audio Processing Unit - Audio playback and control
- Keyboard Manufacturing - Build instructions for the keyboard module
Project Resources
Additional resources and repositories:
PCB schematics, keyboard firmware and enclosure
Sandpiper SDK and samples
Sandpiper OS build config and prebuilt BOOT binaries
Gateware files for the Zynq7020 FPGA board