Zynq + SPI + IRQ - knowledge & code template needed
Budget: $30 – $250 USD
I am seeking someone familiar with Zynq + Linux development to provide a template for a larger project that I want to implement myself.
I have a very basic Zynq design, just the PS with one AXI SPI added.
The design ALSO has some IRQ lines, coming in from another IC on a board.
It is a standard pattern:
- Configure some registers in a chip over SPI
- Wait for an IRQ from that chip
- Read out some registers over SPI
I am seeking a template for Linux code (not bare-metal) to do something like this.
I am NOT familiar with out IRQ's are serviced in a linux environment.
Can this be done in userspace? Does it require a kernel module? This is a big question that I will need an answer to.
I am also NOT familiar with an AXI SPI peripheral is used.
(I think Vivado generates an API for it?)
I will provide a simple Vivado project, with a Zynq target.
Deliverable will be:
- Information on how to do this (kernel module, userspace program, or a combination of both)
- Code for the program and/or module
I am really only looking for a template here, from someone who KNOWS HOW TO DO THIS.
Code working on my board is not required.
For those embedded engineers who really want to know, "Why?":
I currently have a microcontroller-based device that controls 3 separate high-accuracy ADC's over SPI.
The code to configure the ADC's and respond to the interrupt is straightforward - exactly what you would use a microcontroller for.
But now, I need to build some factory-line and R&D support tools with quite tricky requirements, and building those tools on the existing MCU & device will be a HUGE pain.
The goal is to use a larger A-class CPU, the Zynq, and to port all my C code, so I can build those internal tools with a much larger set of features to build the actual tools. (HDMI display, networking, big USB sticks, etc).
I have a very basic Zynq design, just the PS with one AXI SPI added.
The design ALSO has some IRQ lines, coming in from another IC on a board.
It is a standard pattern:
- Configure some registers in a chip over SPI
- Wait for an IRQ from that chip
- Read out some registers over SPI
I am seeking a template for Linux code (not bare-metal) to do something like this.
I am NOT familiar with out IRQ's are serviced in a linux environment.
Can this be done in userspace? Does it require a kernel module? This is a big question that I will need an answer to.
I am also NOT familiar with an AXI SPI peripheral is used.
(I think Vivado generates an API for it?)
I will provide a simple Vivado project, with a Zynq target.
Deliverable will be:
- Information on how to do this (kernel module, userspace program, or a combination of both)
- Code for the program and/or module
I am really only looking for a template here, from someone who KNOWS HOW TO DO THIS.
Code working on my board is not required.
For those embedded engineers who really want to know, "Why?":
I currently have a microcontroller-based device that controls 3 separate high-accuracy ADC's over SPI.
The code to configure the ADC's and respond to the interrupt is straightforward - exactly what you would use a microcontroller for.
But now, I need to build some factory-line and R&D support tools with quite tricky requirements, and building those tools on the existing MCU & device will be a HUGE pain.
The goal is to use a larger A-class CPU, the Zynq, and to port all my C code, so I can build those internal tools with a much larger set of features to build the actual tools. (HDMI display, networking, big USB sticks, etc).