08-07-2017 10:44 AM
I'm trying to make use of the AXI-Stream FIFO (4.1, PG080), in combination with a custom Linux driver, to stream (slow) data from an external source. I'm using Vivado 2017.2 and Petalinux 2017.2. Two problems:
Is there a way to make use of the AXI-Stream FIFO for use _other_ than DMA and ethernet?
08-07-2017 12:07 PM
And now I've figured out #1. I stumbled across it in UG1144 while looking for other stuff. In "Devicetree Configuration,' starting a p. 74, there is the following:
All the changes have to be made in meta-user only. For example, if you want to change anything, you can do in meta-user by rewriting the entire node with your changes in meta-user layer. You can delete a particular node from any of the generated dtsi, using delete-node in meta-user.
After a bit of digging on the syntax, I'm now successfully re-writing the node with my own information.
08-07-2017 10:54 AM
" The LogiCORE™ IP AXI4-Stream FIFO core allows memory mapped access to a AXI4-Stream interface "
I use AXI Stream FIFO *instead* of DMA to have a quick way to push stream data from the PS/Microblaze.
What is that you need? It is not very clear.
08-07-2017 11:03 AM
@hbucher wrote:
" The LogiCORE™ IP AXI4-Stream FIFO core allows memory mapped access to a AXI4-Stream interface "
I use AXI Stream FIFO *instead* of DMA to have a quick way to push stream data from the PS/Microblaze.
What is that you need? It is not very clear.
That's exactly the IP I'm using. Your quote is first sentence in the introductory text of PG080. And that's exactly what I'm trying to do.
It seems to work fine if I instantiate using the block diagram, but then I can't get the device tree setup correctly. If I instantiate external to the block diagram, the accesses hang.
08-07-2017 11:07 AM
@pladow6262 I use it all the time.
Why don't you try to run an example from the SDK in standalone mode? That will give you less moving parts to get used to usage.
08-07-2017 11:10 AM
@hbucher wrote:
@pladow6262 I use it all the time.
Why don't you try to run an example from the SDK in standalone mode? That will give you less moving parts to get used to usage.
We have. We have a basic bare-metal application using the FIFOs. But in those cases, the FIFOs were instantiated inside the block diagram and the address editor was used to assign the addresses. The FIFOs work fine.
But now we are trying to move to Linux. If we leave the FIFOs in the block diagram, the device tree automatically generated for the FIFOs assume their use is for ethernet, and we cannot figure out how to either rip-out or override those items. So, we moved the FIFOs outside the block diagram. When we do that, there is not option to set the base address of the FIFOs.
So, the question is how to use the AXI-Stream FIFO with Linux (petalinux) with a custom driver.
08-07-2017 11:27 AM
Ok, I think I have #2 figured out. Via the typical customization GUI for the IP, there is no way to set the base addresses.
However, via the TCL console I did:
set_property CONFIG.C_BASEADDR 0x43c00000 [get_ips axi_fifo*]
set_property CONFIG.C_AXI4_BASEADDR 0x43c10000 [get_ips axi_fifo*]
set_property CONFIG.C_AXI4_HIGHADDR 0x43c1FFFF [get_ips axi_fifo*]
And now I can access the FIFO when instantiated outside the block diagram.
08-07-2017 11:57 AM
Yes, that is the default way to configure IP (note that the GUI does the same via TCL).
Best,
Herbert
08-07-2017 12:07 PM
And now I've figured out #1. I stumbled across it in UG1144 while looking for other stuff. In "Devicetree Configuration,' starting a p. 74, there is the following:
All the changes have to be made in meta-user only. For example, if you want to change anything, you can do in meta-user by rewriting the entire node with your changes in meta-user layer. You can delete a particular node from any of the generated dtsi, using delete-node in meta-user.
After a bit of digging on the syntax, I'm now successfully re-writing the node with my own information.