Difference between revisions of "Linux Kernel Driver for Lattice MachXO2 programming/debugging"

From apertus wiki
Jump to: navigation, search
 
Line 1: Line 1:
== Project Summary ==
== Project Summary ==


My task was to make a Linux Kernel Driver to program/debug Lattice MachXO2 FPGAs (used as routing fabrics) in AXIOM Beta Main Board.
The aim of this project (task #T729) was to make a Linux Kernel Driver to program and debug the Lattice MachXO2 FPGAs present in AXIOM Beta. These FPGAs are used as routing fabrics to handle all the low speed GPIO communications that are required for plugin modules, shields and the center solder on area without sacrificing valuable Zynq GPIOs.
Two main goals of this project were:<br>
 
* To implement an ”upload“ interface to program MachXO2 FPGAs
Two main goals of this project were:
* To implement a debug interface for OpenOCD
* To implement an ”upload“ interface to program the FPGAs
I have yet successfully implemented an upload interface which enables us to upload a compressed bitstream (produced by Lattice Diamond tools) into MachXO2's SRAM.
* To implement a debug (JTAG) interface to interface OpenOCD
This allows a quick and easy way to upload new configurations while testing.
 
 
Previously, both the MachXO2 FPGAs were programmed with python scripts which didn’t allow easy update and development. The Linux Kernel Driver acts as a central entity to manage the FPGAs, provides a JTAG interface to any application like OpenOCD to make SVF replays possible, and essentially makes testing and debugging new code much easier.


'''Google Summer of Code 2020 project.'''
'''Google Summer of Code 2020 project.'''
Line 19: Line 21:


* [https://github.com/Swaraj1998/axiom-beta-rfdev GSoC'20 Source Code]
* [https://github.com/Swaraj1998/axiom-beta-rfdev GSoC'20 Source Code]
*[https://github.com/Swaraj1998/axiom-beta-rfdev/blob/master/GSoC2020_final_report.pdf GSoC'20 Final Report]
* [https://drive.google.com/file/d/1XxUCo4E4EjMdfU9HKhAgaJ09wq88L1E8/view?usp=sharing GSoC'20 Phase-II Report]


* [https://drive.google.com/file/d/1nBbAbasn-awyiGloveNo6Ot1sKVymnKA/view?usp=sharing GSoC'20 Phase-I Report]
* [https://drive.google.com/file/d/1nBbAbasn-awyiGloveNo6Ot1sKVymnKA/view?usp=sharing GSoC'20 Phase-I Report]

Latest revision as of 17:47, 31 August 2020

1 Project Summary

The aim of this project (task #T729) was to make a Linux Kernel Driver to program and debug the Lattice MachXO2 FPGAs present in AXIOM Beta. These FPGAs are used as routing fabrics to handle all the low speed GPIO communications that are required for plugin modules, shields and the center solder on area without sacrificing valuable Zynq GPIOs.

Two main goals of this project were:

  • To implement an ”upload“ interface to program the FPGAs
  • To implement a debug (JTAG) interface to interface OpenOCD


Previously, both the MachXO2 FPGAs were programmed with python scripts which didn’t allow easy update and development. The Linux Kernel Driver acts as a central entity to manage the FPGAs, provides a JTAG interface to any application like OpenOCD to make SVF replays possible, and essentially makes testing and debugging new code much easier.

Google Summer of Code 2020 project.

Mentored by: Herbert Poetzl (@Bertl)

Implemented by: Swaraj Hota (@bluez_)


2 Important Links