miguel_rodrigues

Members
  • Content Count

    25
  • Joined

  • Last visited

  • Days Won

    1

Reputation Activity

  1. Like
    miguel_rodrigues got a reaction from tuan in Are there any example for HDMI => VGA converter that VGA reasult stored on BRAM also   
    Dear tuan,
     
    I have done something similar as what you want to achieve. I will give you some general recommendations and if you have more specific questions, feel free to ask
    Capture the HDMI input using the IPs provided by Digilent, as in HDMI => VGA converter on ZYBO Use AXI Stream to send such amount of data to the DDR, triggering such DMA transaction using your own custom DMA controller (IP that writes to AXI DMA registers) Every time the DMA transaction ends, trigger a new one, always writing to the same DDR memory location. Use ANOTHER DMA transaction (AXI Stream) to read from the DDR memory location where the frames are being written, using another custom DMA controller. Every time this new DMA transaction ends, trigger a new one, always reading from the same DDR memory location. Have Linux installed on the PS, with the DDR divided in 2 (half for Linux and half for shared PS/PL data). Create device drives in order to access the memory zone where the frames are. Have a program always reading such memory zone and send the frames over the Ethernet.  
    A while ago I created this tutorial that is somewhat related to parts of this (http://www.instructables.com/id/Zybo-AXI-DMA-Inside-Embedded-Linux/).
    In the end, it has some reference links that should help you better understand some of the things involved in the process.
     
    PS: I have this system implemented on Zybo but instead of capturing frames via HDMI, I capture them using an ov7670 image sensor. The flow is exactly the same however
  2. Like
    miguel_rodrigues got a reaction from tuan in Are there any example for HDMI => VGA converter that VGA reasult stored on BRAM also   
    To write data to memory, you use the AXI Stream protocol. The AXI Stream will then be converted by an AXI Interconnect IP which will convert the AXI Stream into an AXI4, which connects to the S_AXI_HP0 of the PS, as you say. With the ILA's, can you confirm that data is being written to the memory AND from the memory correctly?

    By default, the OS will occupy the whole DDR (512MB). You will need to explicitly tell the OS to just use half of this memory (0x00000000 to 0x0FFFFFFF). The memory zone where the frames will be stored needs to be outside the OS memory zone, i.e., above 0x10000000. For instance, it may be 0x10000000 to 0x100FFFFF for 1MB frame.
     Yes, you will need to build the OS by yourself in order to restrict the OS to only use the first 256MB of the DDR. You will need to modify the zynq_zybo.h file, as explained in the tutorial.
    The problem is that you are writing to the OS memory zone. Since the OS may also write into it, not only corruption of data may occur but worst, you may write on top of important system data and cause problems. That is why you should separate memory zones, into OS and shared data.
    You don't need to ask. As above, the problem is you are trying to write into the OS memory zone and you shouldn't. If you separate things, the AXI interface will behave without influence of the OS.
    For the OS to read data from the DDR you may use /dev/mem (which is not good as the whole physical memory is available to a buggy application) or you can use generic uio drivers. This implies modifying the system device tree, and is explained in the tutorial.
     
    No problem. I know this is all can be a bit overwhelming but you will get there with patience From your post, I believe everything works in bare-metal, the problem is integrating with Linux OS. Is this correct?
     
    Feel free to ask more questions
  3. Like
    miguel_rodrigues reacted to jpeyron in Zedboard weight   
    Hi Miguel,
    The Zedboard is roughly .357 lbs with nothing connected to it but the sd card. Hope this helps!
    cheers,
    Jon
  4. Like
    miguel_rodrigues reacted to jpeyron in Zybo beginner - Simple communication via i2c   
    Miguel Rodrigues,
    There is some good documentation here , here for creating the axi IIC. Here is an example of the IP for the PmodAD2 here  that uses IIC.  Here you can download the PmodAD2 example project for the Nexys 3 in VHDL. It uses ISE 13.4 so you would need to do a little modifications to get it working in Vivado. I would use one of the Pmod headers JB- JF.  If you use the reference manual for the PmodAD2 here you see the pinout description table to know how it is connected. Hopefully this helps!
    thank you,
    Jon
  5. Like
    miguel_rodrigues got a reaction from JColvin in AXI DMA inside Linux - How to   
    So, I published my tutorial in Instructables (here).
     
    If anyone wants to use it as a basis for a better one, it is welcomed to do so
     
    Hope it is usefull for someone
  6. Like
    miguel_rodrigues got a reaction from parthpower in AXI DMA inside Linux - How to   
    Hi everybody,
     
    I am using the Zybo running with Linux. I have been able to write/read from registers inside the PL from within a custom application, in a similar way as this tutorial does. However, it seems much more complicated to do DMA transfers. I have searched many forums and read lots of threads but still I don't know how to achieve this.
     
    I'm a beginner in Zynq so any kind of input is appreciated Thanks in advance
  7. Like
    miguel_rodrigues got a reaction from JColvin in AXI DMA inside Linux - How to   
    Thanks JColvin, that thread gave me that extra information I needed to put the DMA working
     
    Since many more people may be wondering how to use AXI DMA inside Linux, I will try to make available as a tutorial what I have done to achieve this. I plan to so this weekend so next week it should be already available. If anyone knows where is the best place to host such tutorial, say something
  8. Like
    miguel_rodrigues got a reaction from JColvin in Linux freeze in the end of the boot process   
    Today I got the chance to work with a decent power supply (5V 3A) and everything worked fine