Sorry, you need to enable JavaScript to visit this website.

AMP Quick Start advice

Solved
4 posts / 0 new
rsg's picture
rsg
Junior(1)
AMP Quick Start advice

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:

  1. 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.
  2. We want to run Linux on the network/common peripherals side (e.g. input devices, etc.), and FreeRTOS for running the device.
  3. 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.
  4. 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:

  1. 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.
  2. A Petalinux BSP/Kernel for core0
  3. Ability to run a FreeRTPS-based app on core1
  4. Ethernet support on the Linux side, of course.
  5. A means of communicating between the Linux and FreeRTOS sides.
  6. 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:

  1. 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?)
  2. An FPGA configuration (pardon my potentially obsolete terminology) that sets up a MicroZed board for Linux/FreeRTOS AMP.
  3. 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?
Thanks!

JFoster's picture
JFoster
Moderator(48)
Hello rsg,

Hello rsg,

1.What version of Vivado should I be using?

        I am going to suggest you down grade to Vivado 2016.2. The reason Vivado 2016.2 is because that is the latest version we have that offers a petalinux BSP that you will need in your design.

(Bonus: if it is less than the current 2017.1 version, will I be able to move my license?

       You can see the limits of your license by opening the Vivado License Manager. Typically they are perpetual, or can be renewed for free by using Xilinx's online support system or contact you local FAE.

You can see that I have a permanent license for Vivado_HLS and System Edition, however for the ip v_ccm I lost the ability to use that back at the end of 2015. Wrose case, once you build and it fails you will either need to renew your license through Xilinx online license center, or contacting your local FAE.

2. An FPGA configuration (pardon my potentially obsolete terminology) that sets up a MicroZed board for Linux/FreeRTOS AMP.

Here are some excellent links to material to get you start

a. https://www.xilinx.com/support/documentation/sw_manuals/petalinux2014_2/ug978-petalinux-zynq-amp.pdf

b. https://forums.xilinx.com/t5/Embedded-Linux/where-is-pre-canned-AMP-solution-Linux-FreeRTOS/td-p/259490

c. http://blog.idv-tech.com/2014/02/26/zedboard-linux-freertos-amp-board-bringup-guide/

 

3. Other advice/current information, etc.

I have a few suggestions for you to think about for the future of your design

a. If you team does not have a a developer who has worked with FPGAs before, learn a bit about constraints or at least XDC so you are not caught by surprise when you need to constrain your design.

b. I would also suggest you prototype what you can with our wide variety of Carrier Card (MicroZed has a bunch!) Then afterwards if you plan to create your own you will have the ability to leverage our designs. If your plans are to really only be making in the 10s of your devices, maybe the Breakout Carrier Card would be most useful to you. With the Breakout Carrier Card you can create some small boards, and solder them directly into the design, thus making each one a potential custom board(I believe this is the path you were indicating you planned to go down)

c. You may want to also potentially look into SDSoc, this may be useful if you have any algorithms or other kinds of processing that you will need to do. SDSoC will let you move your processing into the fabric as yoour needs evolve.

4. 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?

That would be greatly appreciated if you could write up a blog with your experiences! I am sure it would help others in the future! Just make a post on the forum and I will sticky it to the top of the page and make a link to it in the Zynq Geek blog we have http://zedboard.org/zynqgeek (You can copy photos into your forum post by making your post using Mozilla FireFox)

--Josh

rsg's picture
rsg
Junior(1)
Thanks, Josh!

Thanks, Josh!
I have successfully installed both Vivado 2016.2 and PetaLinux 2016.2, by creating a /home/Xilinx folder and pointing /opt/Xilinx to it, as I read somewhere.  <rant>Xilinx really, <b>really</b> could do a better job on installation instructions!!!</rant>.
After that, I got the BSP from microzed.org for the 7010 MicroZed board, and was able to build that successfully.
Next step is to modify the example from the BSP to incorporate the second core and add the AMP FreeRTOS.  I am following your link C, as it seems most relevant to what I am trying to do.  I am going to set something up somewhere (probably GitLab or GitHub) and publish that link.  Hopefully that will help if I run into problems, and eventually, result in a repo for others who want to do the same.
First problem I ran in to is that PetaLinux 2016.2 does not seem to include FreeRTOS, as PL 2013.10 apparently did.  The good news there is that I can potentially use FreeRTOS V9.0, which is great in that it supports static memory allocation for the various OS objects - a very good thing.  The bad news is that I'm afraid it won't have the code for interprocessor communications with the Linux system running on Core0 of my AMP setup.  Any ideas where I can get the missing code?  Is there any documentation on this?
Thanks!

JFoster's picture
JFoster
Moderator(48)
Hello RSG,

Hello RSG,

I am not aware of any documentation, however I would imagine someone out there has had the same issue you are encountering and has documented it somewhere. My suggestion would be for you to ask over at Xilinx's forum or perhaps a FreeRTOS support forum in order to reach a broader audience.

--Josh