Dear Alex and Lars and IIO Mainteners,
Many thanks for your detailed, helpful and quick answers, I really
appreciate it.
I will assimilate all your informations and links and let you know how
it goes.
Best regards,
Michel Arruat.
On 3/13/21 11:46 AM, Lars-Peter Clausen wrote:
On 3/12/21 5:54 PM, Michel Arruat wrote:
Dear IIO Maintainers,
I'm starting studying IIO framework in order to migrate our
acquisition systems, based on fast ADC, to this framework.
So far we are using our framework named ZIO which was developed more
than 10 years ago, when IIO was not mature enough to handle high speed
constraints, large DMA transfer(>256MB) and zero copy.
Out of curiosity https://ohwr.org/project/zio
I did have a few discussions with Frederico and Alessandro back in the
day (maybe 6-7 years now) about what can be done to combine IIO and ZIO.
Unfortunately we couldn't quite get agreement on whether it is better to
have one or two frameworks.
One thing where IIO and ZIO differ is that IIO is more around streaming
data, while ZIO is around packetized data. In ZIO when you capture data
you get a header with metadata.
But having support for packetized data with metadata in addition to
streaming data is something we wanted to have for IIO for a while now.
Just nobody has implemented it yet.
I know that there are a few people that use IIO with packetized data,
but it is sort of in a hacky way where the userspace application uses
the streaming interface but captures exactly the number of bytes that
are in a packet. This sort of works, but having proper packetized data
support would be nice.
The idea is to get rid of our local framework and move to IIO to
benefit from the large Users community.
For now, most of our drivers are running on x86_64 architecture, even
if future applications will run on SoC (Zynq UltraScale+).
I made a first prototype, widely inspired from your "ad_adc.c" driver
found on your git repo, with a 4.18 kernel. I am facing some issues
including kernel Oops while unloading the module.
Could you please let me know which minimal kernel version is required
to use the "IIO DMA engine buffer" features. In addition, I would
really appreciate if you could point me to some reference IIO ADC
driver implementation that handles similar DMA transfer size with good
performances.
As Alex said high-speed support is still in progress of being upstreamed.
I do maintain a set of branches for recent Linux LTS releases which have
a minimum set of patches to get high-speed support enabled.
See https://github.com/larsclausen/linux/branches
Maybe this is helpful since you should be able to easily import them
into your kernel tree.
- Lars