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