Often when we see projects using embedded Linux we think of them as not being hardware hacks. But this is a horse of an entirely different color. [Matt Porter] is leveraging a little known feature to directly access a 6502 processor from inside a Linux environment. In other words, this hack lets you write code for a 6502 processor, then load and execute it all from the same Linux shell.
The project leverages the best parts of the BeagleBone, which is an ARM development board running embedded Linux. It’s got a lot of GPIO pins that are easy to get via the boards pin sockets. And the design of the processor makes it fast enough to work well as a host for the 6502 chip. Which brings us back to how this is done. The Linux kernel has support for Remote Processors and that’s the route [Matt] traveled. With everything wired up and a fair amount of kernel tweaking he’s able to map the chip to the /dev/bvuart directory. If you want all the details the best resource is this set of slides (PDF) from his talk at Embedded Linux Conference – Europe.
This is one way to get out of all that hardware work [Quinn Dunki] has been doing to build her own computer around a 6502 chip.
[Thanks Andrew via Dangerous Prototypes]
Very interesting! I imagine the Beaglebone could emulate the 6502 faster than the 14MHz the chip is running at. But of course that’s not the point! I may have to pull out one of my Z80s and see what can be done with it. After I figure out what exactly a “PRUSS” is! :-)
PRUSS is an I/O coprocessor for the main ARM CPU. The BeagleBone’s SoC has two of them. Think of it like using an Arduino to offload real time tasks from a PC, or dedicating a couple of cogs to bitbanging a peripheral in a Propeller.
Been done about 30 years before! Have a look at the second processors for the BBC Micro.
Dave, your mission, should you choose to accept it, is to hook a BeagleBone up to the Tube port ;)
Or the Z80 cartridge for the C64? :D
It may not be the first coprocessor ever invented, but this is still an amazing accomplishment.