Ugh! So I know this is complicated and all, but I didn't realize exactly how until I got started... Let me back up a bit.
We have recently started a project to port an existing real-time (RT) system to a MicroZed board, for all of the cool reasons to get onto that platform. My basic idea is for an AMP system, with Linux on core0 and FreeRTOS on core1. This is for a vestibular research real-time device control system that was originally developed using Netburner devices (e.g. Freescale ColdFire/ucos). We've evolved to the point were we need higher performance, and wider support for different real-time interfaces (e.g. encoders, digital motor control, various digital I/O, etc.) The important thing to note is that this system is deployed with a variety of motion platforms, using different driver/sensor strategies. The idea is to develop a system that uses FPGA resources to support the different I/O interfaces for any given device.
Okay, if you are still with me, the basic design I've come up with conceptually is an AMP setup, with core0 running Linux, and core1 running FreeRTOS. The initial device largely uses only Ethernet (with a few digital I/Os for switch sensing, LED indicators, and the like; eventually, other devices will need things like encoder interfaces and the like.
I'm a bit confused about all the options out there. The most applicable AppNotes (and the like) are somewhat old.
What I am looking for is advice in getting a basic system up and running ASAP, with the ability to customize going forward. Here are my specific points:
- This is a low volume application (a few dozen at most) with each installation having different mixes of peripherals; hence, the Zync choice for basic processing. One can assume we'll be using the debug/eval boards available, as much as possible.
- We want to run Linux on the network/common peripherals side (e.g. input devices, etc.), and FreeRTOS for running the device.
- We need to get a quick prototype running soon, which is a simple AMP setup, with Ethernet on the Linux side, and simple DIO on the FreeRTOS side.
- Eventually, we will need to customize both hardware and software for some of the more tricky devices.
My going in position usually includes starting with the latest development tools, etc. Therefore, I've purchased two MicroZed Eval Kits, and installed the current Vivado 2017.1 tools, with the license from one of the kits; if the answer involves going back a few versions, hopefully I can move my license; advice welcome here too!
So to sum it all up, I want the following:
- A canned, pre-built FPGA configuration for a basic AMP configuration, with a few (e.g. 8 inputs and 8 outputs) general digital I/Os.
- A Petalinux BSP/Kernel for core0
- Ability to run a FreeRTPS-based app on core1
- Ethernet support on the Linux side, of course.
- A means of communicating between the Linux and FreeRTOS sides.
- All sources, so that as the devices become more demanding, I can take advantage of the Xilinx Zync parts!
Here are my specific questions/requests:
- What version of Vivado should I be using? (Bonus: if it is less than the current 2017.1 version, will I be able to move my license?)
- An FPGA configuration (pardon my potentially obsolete terminology) that sets up a MicroZed board for Linux/FreeRTOS AMP.
- Other advice/current information, etc.
One final question: given my desires, I'm more than willing to write up my experiences, with the hope of helping those down the line! But, where would I publish that?