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
**Difficulty:** Hard
**Mentors:** Bertl
To get in touch with any mentor check the [[ https://www.apertus.org/GSoC-2019-Mentor-Contact-List | 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.