To apply for this task please complete this mandatory coding challenge together with your application: T884
Applications without matching coding challenge completed will not be considered.
Read our Google Summer of Code Overview page:
https://wiki.apertus.org/index.php/GSoC_Overview
Create a Linux kernel driver to program and debug the Lattice MachXO2 used as routing fabrics in the AXIOM Beta.
The two MachXO2s are located on the AXIOM Beta Main Board and each of them has a PIC16 micro-controller attached which has full control over the JTAG interface as well as some other control lines. The PIC16s themselves are connected to the ZYNQ SoC on the MicroZed via I2C.
Currently the both MachXO2 are 'programmed' with a python script which takes some time and doesn't allow easy update and development for those relatively important FPGAs. A Linux kernel driver would not just speed up things but also allow to test and even debug new code easily.
Goals:
- Implement some kind of 'upload' interface (JTAG, I2C, SPI)
- Implement a debug interface (probably JTAG) to interface OpenOCD
Prerequisites:
- Lattice FPGA Know-How
- Micro-controller Know-How
- Linux Kernel Know-How
Language Skills:
- C
Useful Links:
- https://wiki.apertus.org/index.php/AXIOM_Beta/Camera_Structure
- https://wiki.apertus.org/index.php/Beta_Main_Board
- http://www.latticesemi.com/-/media/LatticeSemi/Documents/ApplicationNotes/MO/MachXO2ProgrammingandConfigurationUsageGuide.ashx?document_id=39085
- http://ww1.microchip.com/downloads/en/DeviceDoc/PIC16F1717_8_9-data-sheet-40001740C.pdf
Difficulty: Hard
Mentors: Bertl
To get in touch with any mentor check the Mentor Contact List.
Notes: If you do not have access to the required hardware platforms/dev kits, we will provide them (or remote access) to you for the duration of the project.