A few quick start guides

Questions and discussions about the Xillybus IP core and drivers

A few quick start guides

Postby support »

Hello,

For all of you out there who find long documents tedious, there are a few quick start guides.

First, there's a general quick start guide to Xillybus, with translations to Chinese, Japanese and Korean.

As Xillybus supports a large range of FPGA families, the official doc has become a bit tangled, because of the need to spell out exactly how to set up the PCIe block for each and every old device. But this is relevant mostly to old devices, which become less and less used today. With Xilinx (or should I say AMD?), the flow for all devices that are supported by Vivado is the same. So it's quite pointless to let everyone go through (or rather, skip) the gory details about how to set up Virtex-5.

Same goes regarding installing the driver for Linux. The vast majority of users don't need this anymore. So once again, the "getting started" for Linux boils down to doing nothing.

So this quick start guide is deliberately incomplete. I guess 90% of the users will get away with just this guide, and the rest will have to resort to the regular docs. But it's still a gain.

The next thing is a quick start guide to using data acquisition with Xillybus (also with translations).

On the face of it, there's no need for a guide on this topic at all. Just write your application data to the FIFO. That's kind of obvious if you've understood the loopback test. But as it turns out, people try all kind of weird things. Well not necessarily weird, but if you're used to thinking about data packets and buffers, no wonder that the design gets inclined in that direction.

Then comes the real question: To talk or not to talk about overflows from the very beginning? It's the elephant in the room when it comes to data acquisition: That moment when data is lost because the buffers weren't enough. This is the most recurring complaint, and it's almost always because people write the acquired data to the disk, and then it turns out that the disk is much slower than they thought. Because it was soooo fast when they tested their brand new NVMe disk, only they didn't notice that they wrote to the disk cache in RAM and not to the flash itself.

One of the problems with these disks is that they're not making any noise. It's easy to tell that you write to the disk cache when the entire test is over, but the silence in the room prevailed (plus minus your computer's fans). But the NVMe doesn't give itself away.

So this is how the simplest topic turns into a whole story.

Thirdly, there's this topic about accessing device files. Like the other quick start guides, this too is translated.

That's yet one of those topics that can boil down to "do it the standard way, duh" but then people get it wrong. And the most common type of wrong is to use the low-level read() and then be surprised when it returns less than the number of bytes that were requested. This happens in particular in data acquisition applications, because the required amount of data is usually available within the 10 ms window until read() returns with less than required. So people wrongly expect read() to return the required amount, but then it works! Except for sometimes, when it doesn't.

So there is the correct way to do it, and there is example code for how to do it, and then people don't use it. I can understand those who use scripting languages (say, Python), so they have an excuse for not copy-pasting an example in C. But those who use C and don't follow the example code? Maybe this quick start guide will do the job.

So this was a long and rambling note about quick start guides that put it short... If there are any comments about these guides, this is the place.

Regards,
Eli
support
 
Posts: 802
Joined:

Return to Xillybus