08-12-2015 04:19 PM
When I add the axi-dma_0 ip to my block diagram the resulting petalinux image fails after the "Starting Kernel" message.
I've attached the pl.dtsi file that petaLinux is generating and I know that if I remove the axi_dma_0 block the petaLinux is fine, just like when I don't put the IP block in the block diagram.
Is this something that petaLinux is meant to handle correctly? While I've seen people post solutions to similar problems I haven't seen an explaination of those solutions to help me apply it here. Do I just need to go off and learn about device trees in a generic way and then the solution will become clear?
Any and all help and pointers to solutions eagerly awaited.
I'm using the 2014.4 versions of Vivado and petaLinux, the target hardware is a microZed.
08-12-2015 05:19 PM
I just followed: http://www.wiki.xilinx.com/Build+Device+Tree+Blob and the pl.dtsi it generated is attached.
Both channels have "interrupts = <-1>;" added to them, and now the kernel boots.
Now to figure out how to to use the DMA :)
08-12-2015 08:59 PM
Okay I'm just not getting this. It was working, well at least it was building and booting, and trying to confirm further parts of the process was working I coppied in the parts of a known to work device tree regarding the ethernet controller. This broke things so I undid my edits and it was still broken. So now I've cleaned everything completely and it is still broken.
When I say broken the "petalinux-build" errors when attempting to build the system.dtb:
[ERROR] Error: ~/VivadoProjects/StepByStep/MicroZed_PetaLinux/subsystems/linux/configs/device-tree/pl.dtsi:19.22-23 syntax error
After cleaning we are back to the exact pl.dtsi as I attached above.
If I remove the interrupts declarations the build error goes away but the starting kernel bug returns. Why is this interrupts declaration breaking the device tree build tool?
08-13-2015 03:32 AM
For information on uisng interrupts on the device tree, you should look at the link below. This has an nice example:
Im assuming you are uisng an AXI Interrupt controller?
If so, you will need to look at the binding info for this driver. you have this set to interrupts = <-1>, which is incorrect.
This will likely be 0 -> 32