All Projects → niklasekstrom → A314

niklasekstrom / A314

Licence: cc0-1.0
A314, a trapdoor expansion that lets you use a Raspberry Pi as a co-processor to an Amiga 500

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to A314

Spypi
An (un-)ethical hacking-station based on Raspberry Pi and Python
Stars: ✭ 167 (-5.11%)
Mutual labels:  raspberry-pi
Blynk Library Python
Blynk library for Python. Works with Python 2, Python 3, MicroPython.
Stars: ✭ 170 (-3.41%)
Mutual labels:  raspberry-pi
Apa102 Pi
Pure Python library to drive APA102 LED stripes; Use with Raspberry Pi.
Stars: ✭ 174 (-1.14%)
Mutual labels:  raspberry-pi
Stressberry
Stress tests for the Raspberry Pi
Stars: ✭ 167 (-5.11%)
Mutual labels:  raspberry-pi
Pico Micropython Examples
Examples to accompany the "Raspberry Pi Pico Python SDK" book.
Stars: ✭ 168 (-4.55%)
Mutual labels:  raspberry-pi
Rpi Security
A security system written in python to run on a Raspberry Pi with motion detection and mobile notifications
Stars: ✭ 171 (-2.84%)
Mutual labels:  raspberry-pi
Aasdk
Library to build AndroidAuto headunit emulator
Stars: ✭ 167 (-5.11%)
Mutual labels:  raspberry-pi
Omxiv
OpenMax image viewer for the Raspberry Pi
Stars: ✭ 175 (-0.57%)
Mutual labels:  raspberry-pi
Johnny Five
JavaScript Robotics and IoT programming framework, developed at Bocoup.
Stars: ✭ 12,498 (+7001.14%)
Mutual labels:  raspberry-pi
Raspberrypi Timemachine
Apple Time Machine with raspberry Pi
Stars: ✭ 174 (-1.14%)
Mutual labels:  raspberry-pi
Div Games Studio
Complete cross platform games development package, originally for DOS but now available on modern platforms.
Stars: ✭ 168 (-4.55%)
Mutual labels:  raspberry-pi
Make
📖📖📖📖📖 写给软件工程师看的硬件编程指南
Stars: ✭ 170 (-3.41%)
Mutual labels:  raspberry-pi
Octoprint Tft
A OctoPrint touch interface for TFT touch modules based on GTK+3
Stars: ✭ 172 (-2.27%)
Mutual labels:  raspberry-pi
Diozero
Java Device I/O library that is portable across Single Board Computers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.
Stars: ✭ 167 (-5.11%)
Mutual labels:  raspberry-pi
Live Stream Radio
24/7 live stream video radio station CLI / API 📹 📻
Stars: ✭ 175 (-0.57%)
Mutual labels:  raspberry-pi
Bme680 Python
Python library for the BME680 gas, temperature, humidity and pressure sensor.
Stars: ✭ 167 (-5.11%)
Mutual labels:  raspberry-pi
Naomi
The Naomi Project is an open source, technology agnostic platform for developing always-on, voice-controlled applications!
Stars: ✭ 171 (-2.84%)
Mutual labels:  raspberry-pi
Zram Config
A complete zram-config utility for swap, directories, and logs to reduce SD, NAND and eMMC block wear.
Stars: ✭ 175 (-0.57%)
Mutual labels:  raspberry-pi
Debian Pi Aarch64
This is the first 64-bit system in the world to support all Raspberry Pi 64-bit hardware!!! (Include: PI400,4B,3B+,3B,3A+,Zero2W)
Stars: ✭ 2,505 (+1323.3%)
Mutual labels:  raspberry-pi
Wmbusmeters
Read the wireless mbus protocol to acquire utility meter readings.
Stars: ✭ 172 (-2.27%)
Mutual labels:  raspberry-pi

A314

What is it?

The A314 is an expansion board for the Amiga 500 that goes in the trapdoor expansion slot. A Raspberry Pi (RPi) is attached to the A314, and the A500 and the RPi can communicate through a shared memory.

PCB A314 with RPi attached

We have constructed a communication protocol through which associated processes on each platform (Amiga and RPi) can allocate logical channels, carried over one physical SPI channel. The protocol is handled by a driver on each side (a314.device on the Amiga and a314d on the RPi). The drivers are responsible for alerting receiving processes of incoming data via an interrupt.

What can you do with it today?

We have implemented a few services that run on the RPi and on the A500:

  • a314fs is a file system that is mounted in AmigaDOS as a device, PI0:
    The volume in PI0: is called PiDisk:, and is mapped to a directory in the RPi.

  • pi is a command that lets you invoke executables on the RPi from the AmigaDOS CLI. For example, if your current working directory is on PiDisk: and you run "pi vc hello.c -o hello", then the vc program (the VBCC cross-compiler) is executed on the RPi with the given arguments. It will cross-compile “hello.c” into the Amiga executable file “hello”. The resulting binary is immediately accessible through the a314fs.
    You may also launch Interactive applications using the pi command, such as "pi mc -a" which will run Midnight Commander. Running pi without any arguments is equivalent to "pi bash" and will present you with a bash prompt from the RPi.

Pi command Cross-compiling in RemoteWB
  • PiAudio lets the RPi stream audio samples directly to the shared chip memory, from where Paula plays those samples. PiAudio is integrated with ALSA on the RPi so that any program that plays audio through ALSA can be used, i.e. "pi mpg123 -a amiga song.mp3" plays song.mp3 using the program mpg123 to the Amiga.

  • RemoteWB works by moving the Workbench bitplanes over to the chip memory on the A314. This requires that the A500 has at least a 8372 Agnus. During drawing of each frame on the Amiga, the RPi reads those bitplanes, encodes them into a GIF image, and transmits that image to a web browser through a web socket. The web browser in turn, returns key presses and mouse movements back to the Amiga through the same web socket. In effect, this becomes a web browser based remote control application, comparable to VNC but with near zero performance impact on the Amiga CPU!

  • VideoPlayer is a simple program that displays a sequence of images on the A500 by letting the RPi write bitplanes directly to the shared memory (this again requires that the A314 memory is chip memory, and not "ranger" memory).

  • ethernet is a SANA-II driver that forwards Ethernet packets to the network interface of the RPi. Together with an Amiga TCP/IP stack this provides network access to the Amiga.

What could it potentially be used for in the future?

Here are some services that we have considered but not gotten around to implement:

  • Networking through a bsdsocket.library implementation that forwards socket operations to the RPi and executes those operations there. This would give a higher degree of offloading than using the SANA-II driver with a TCP/IP stack running on the Amiga.

  • Your ideas?

Do you want to get involved?

If this sounds interesting, you'll probably want an A314 of your own to play with. We have released all the information needed to make a board, freely available in this GitHub repository.

In the Hardware directory there are schematics and Gerber files that can be used to produce a PCB.

The Verilog source code used to generate a programming object file (.pof) for the Intel MAX 10 FPGA is available in the HDL directory. You'll need a USB-Blaster download cable (or a clone) to connect to the JTAG connector on the A314 board. You can compile the design using the Quartus Prime Lite Edition.

The source code for the software that runs on the Amiga and on the RPi is available in the Software directory.

If you have an idea about something cool to make using the A314, but you don't have the means to build a PCB on your own, then we have a small number of pre-built boards that we plan to hand out, given the idea sounds interesting enough. Send a message to Eriond on EAB and describe what you would like to make, and perhaps you can get one.

There used to be an IRC channel for discussing A314, but we have since moved to Discord. Here's the invite link.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].