Create Hardware with FPGAs, Linux and Python
Organised by Tim Ansell
Tuesday, 23 January 2018
Call for Proposals
This miniconf is all about hands on learning in a tutorial format, so there is no call for proposals.
In 2005 the Love-Rusty 3000 was a state of the art crypto accelerator. Developed by the infamous Robert Love & Rusty Russell, it was the talk of Linux.conf.au 2005. Many intrepid kernel hackers spent much of the conference developing a Linux driver for the advanced feature set1.
Sadly in 2018 the hardware is no longer available, the innovative & advanced feature set can no longer inspire new Engineers. This doesn't have to be the end thanks to the development of low cost and accessible FPGA hardware. You can help resurrect this jewel of a device to inspire the next generation! What was old is new again!
The Migen tooling developed by M-Labs when extended by EnjoyDigital's litex ecosystem enables creation of "System on Chip" (SoCs) that can run Linux. Using a Python based HDL combined with open CPUs cores, the complete source code available under open source licenses.
This technology has been used in everything from custom mobile phone base stations, quantum mechanics physics experiments and is even the basis for the TimVideos HDMI2USB project which is currently being used to record Linux.conf.au!
During the day we will take you through the following;
- Creating your own SoC using Python based Migen and litex.
- Running your SoC on an FPGA and booting into Linux.
- Creating a peripheral providing the Love-Rusty 3000 feature set and adding to your SoC.
- Controlling your new peripheral from Linux.
This will all be done without ever directly touching a single line of Verilog or VHDL. No experience in either of these languages is required!
While this tutorials aims to be as accessible as possible, only so much can be covered in a day. For this reason attendees are required to;
- Have strong programming experience. Python and C will be in heavy use.
- Have compiled and customized their own Linux kernel. (Experience with Linux Kernel development is a definite plus!)
- Must do the prework at http://XXXXX before the tutorial. (Anyone who hasn't done the pre-work will be asked to leave.)
- Understanding of how a CPU operates. (Understanding what CSR registers and "memory mapped IO" are a plus.)
This tutorial requires hardware to complete, you must have the following;
- An FPGA development board on the list at http://XXXX -- A number of loaner boards are available, contact email@example.com
- You must have a fast, modern, laptop running Ubuntu 14.04 LTS or a version later than 16.04 Linux in a VM on Mac OS X can be problematic.
: Hardware description language
: Like any of Pico RISC V, OpenRISC 1K, LatticeMicro32 or J2 open processor.