01-02-2019 06:12 AM
I'm trying to comprehend what the differences are between the different kernel's offered by Xilinx, Mr Torvalds and Analog Devices.
Let me explain my situation: I'm working on a ZCU102 board with a ADRV9009 evaluation board on top. At Analog devices they recommend using their Linux kernel for better interaction with their products but my intuition says I should stick with the Xilinx kernel. To determine my company's strategy in this we need to understand the differences of the kernels, because there are in fact some major differences. I did overwrite some generic files when I tried to fit the ADRV9009 drivers into the Xilinx kernel.
Can you please explain to me how the Xilinx kernel flow works? ( I understand you can't speak for the AD kernel repository )
01-02-2019 10:14 AM - edited 01-02-2019 10:17 AM
The Xilinx Linux Kernel on github would have drivers specific to Xilinx Devices. How the kernel itself operates would be the same. If you are using a Xilinx device, then I would recommend using the Xilinx Linux kernel.
How exactly will you use the ZCU102, and AD device. For example, will the kernel be running on the A53 on the ZCU102, and connecting to the AD device via an external interface? If so, then one way to add the AD drivers would be to compile the driver separately and add (insmod) the driver as a module to the Xilinx Kernes, and update the DT accordingly. You can use the Petalinux to build the Linux Image.
01-03-2019 01:29 AM
Thanks @stephenm for your answer.
I think it is an important matter to understand how the people from Xilinx work and operate with the kernel.
Your idea about compiling any drivers separately is a very good one, although I have bad experiences with out of tree compiled kernels, but this is something I definite would like to try. You know, the Analog driver for the adrv9009W -PCBZ EV module is a complex one with some FPGA code in the bitstream and the AD drivers includes even firmware for the onboard ARM device. However, I did forget to mention in my original question that I already managed to manually build a Xilinx kernel with the AD drivers built in ( after a few weeks of work.) The drivers where just copied into the kernel tree and compiled along with the Xilinx kernel.
This raised to me some questions about how to deal with these drivers and the different kernels. Therefore it is crucial to understand how things are done in the bigger picture.
Can you shed some light on how close the Xilinx kernel is kept up to date with the Torvals kernel? or vice versa? I saw as an example these files in the mainline kernel: dts -> xilinx
Are these merges taking place on a timed interval or more like cherry picking back the important bits into the mainline kernel? Any documentation about this topic is very welcome and helpful.
Thank you very much