Alejandro Wolf

  • Content Count

  • Joined

  • Last visited

  • Days Won


Alejandro Wolf last won the day on January 8 2016

Alejandro Wolf had the most liked content!

About Alejandro Wolf

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @StudentAmsterdam I did not finish it. I do not have the time right now to do so. But I'll try to stay alert to the forum to answer any question you might have. Best regards.
  2. Yeah, I know that you dont have to generate the device tree, but is good to know how. Regarding the ramdisk, is not necesary for booting linux. I don't have a uramdisk image in my sd card and I booted archlinux from the sd card and also Linaro ubuntu. But if you don't have ramdisk and don't modify the zynq_zybo.h it wont boot at all. best regards. Alejandro
  3. I have a tutorial to build the kernel from scratch, but It's in spanish. With the help of google translate and some carefull reading, I believe that you can make it work ignoring all the OpenCV stuff and using your linux distribution instead of arch: If there are enough interested people, I could translate it. Reading your post I realized that maybe it's hangs up because is triying to boot Ramdisk. If you compiled u-boot by youtself edit the zynq_zybo.h in /include/configs/. Change this: "sdboot=if mmcinfo; then " \ "run uenvboot; " \ "echo Copying Linux from SD to RAM fs... && " \ "fatload mmc 0 0x3000000 ${kernel_image} && " \ "fatload mmc 0 0x2A00000 ${devicetree_image} && " \ "fatload mmc 0 0x2000000 ${ramdisk_image} && " \ "bootm 0x3000000 0x2000000 0x2A00000; " \ "fi\0" \to this: "sdboot=if mmcinfo; then " \ "run uenvboot; " \ "echo Copying Linux from SD to RAM fs... && " \ "fatload mmc 0 0x3000000 ${kernel_image} && " \ "fatload mmc 0 0x2A00000 ${devicetree_image} && " \ "bootm 0x3000000 - 0x2A00000; " \ "fi\0" \then compile u-boot and try again. Best regards
  4. That actually was just a demo I did for some students. The end result can be appreciated here. In the end I used a HDMI input instead of the camera because of the faster frame rate. I tested it using a video from my personal computer or a GoPro camera. I have a tutorial for running OpenCV on the Zybo board from scratch, but it is in spanish and does not cover the hdmi capture. I'm not quite confortable sharing my proyect because its messy and I kind of hacked the AXI HP ports to capture the HDMI input and output the video with no Linux graphical interface. I'm not using DMA at all and yet I'm transfering full video frames from the FPGA to the processor at enought speed to capture 1080p@60fps video. I can clean up the proyect for the HDMI capture/VGA output and translate the tutorial, but it would take me a while. best regards
  5. For some reason, I've only managed to get the HDMI working with the pre-built kernel that Digilent provides. When I try to build my own kernel the HDMI output doesn't work. I tried to configure the kernel to match wathever is on the device tree of the tutorial but with no luck. I supposed there is some kernel module that is not available for us
  6. Aparently nowhere....I asked a while ago and I only achieved what you are saying with the pre-build kernel. What I'm doing now is reserve the upper 64 MB of the RAM and copy the frame that I want to display to that sector using a custom kernel driver. Then a custom hardware from my own displays whatever is on that address of RAM to the screen.
  7. Hi Alex, Sorry for the incredibly late answer. My current setup achieves about 23-25 fps with a USB VGA camera. Depending on the usb camera the performance can be different. For example, I have a 320x240 camera that achieves 9 fps only with the Zybo and I have another camera that achieves about 15 fps with 720p resolution.
  8. Hi Josh, I managed to install ArchLinux, Debian, Ubuntu, and Linaro on the Zybo. And using your precompiled Kernel I got the HDMI video output on custom designs with custom peripherals. Unfortunately, the kernel that you used (and also the u-boot) doesn't work for my particular needs, so I re-built them, and of course I lost the HDMI output, but I'm using SSH now so it's not a big deal, but I wanna get it working. I activated the AXI clkgen driver, the Digilent axi_dynclk Driver, the Xilinx DRM, and the Digilent VGA/HDMI DRM Encoder driver on the kernel configuration, but I did not managed to get the HDMI working... So I'm guessing that something is missing. Which drivers are necesary to build with the kernel to get the HDMI output? I added everything I think was necesary but with no success.
  9. Yes it can. Currently I have a Zybo board running arch linux and running OpenCV. It's not that fast to process video at a good framerate using only the CPU, you need to use some kind of hardware aceleration for processing video.
  10. I resolved the map=xx issue by modifying the u-boot source. I had to change fdt_high and initrd_high in /include/configs/zynq_zybo.h so the u-boot wont place anything on the top of the memory
  11. ​If I use mem in the bootargs the system halts in "starting kernel" I guess it is because the device tree copies for some reason to the top of the memory, and that address is removed. Here is the output U-Boot 2014.01-00005-gc29bed9-dirty (May 11 2015 - 12:22:58) I2C: ready Memory: ECC disabled DRAM: 512 MiB MMC: zynq_sdhci: 0 SF: Detected S25FL128S_64K with page size 256 Bytes, erase size 64 KiB, total 16 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: Gem.e000b000 Hit any key to stop autoboot: 0 Device: zynq_sdhci Manufacturer ID: 1b OEM: 534d Name: 00000 Tran Speed: 50000000 Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 14.6 GiB Bus Width: 4-bit reading uEnv.txt ** Unable to read file uEnv.txt ** Copying Linux from SD to RAM fs... reading uImage 3459296 bytes read in 304 ms (10.9 MiB/s) reading devicetree.dtb 13495 bytes read in 16 ms (823.2 KiB/s) ## Booting kernel from Legacy Image at 03000000 ... Image Name: Linux-3.18.0-xilinx-46110-gd627f Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3459232 Bytes = 3.3 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 02a00000 Booting using the fdt blob at 0x2a00000 Loading Kernel Image ... OK Loading Device Tree to 1fb29000, end 1fb2f4b6 ... OK Starting kernel ...
  12. ​Thanks Cristian. Maybe that will cover most of my needs. I'll look into that.
  13. Thanks Jamey. I'll try those options. PS: I never writed a driver before. The examples that I see are already "done". I would love an step-by-step guide on how to write drivers. best regards Alejandro Wolf
  14. Hi. I managged to run both Linaro and ArchLinux on the Zybo board, with HDMI output (but i'm gonna remove it after). But I'm having some troubles to comunicate with my custom hardware. I'm used to programming in Hardware, and I made several real time high performance applications like face recognition and real time video processing on pure verilog (Nexys 3, Nexys 4, Atlys boards), but I'm kind of new to cross-compiling, linux kernels, and drivers. I have a few master AXI modules that directly communicates with the DDR3 memory using the HP ports (no DMA, VDMA or similiars), and I just reserve a fraction of the DDR3 memory to work with them. Now in Linux, all the address are virtual, so I must write a driver, or find a way to allocate physicall contiguous memory in software. -My IP usually work this way (e.g this is a sobel filter): It receives the base address where the image to process is located (usually is XRGB888 format), the resolution of the image, several arguments like threshold, and it outputs directly the result on the VGA port or HDMI port or a touchscreen that I have (all of them are custom IP) or it write the output on the DDR3 memory. If the flow requires SW interventions, It triggers a interrupt. Now that I'm using Linux, I have 3 options: Use DMA: I kind of know how to use DMA on baremetal on the software side, but I have no idea how to make a custom IP that comunicates with the DMA modules. I have a decent understanding how master and slave AXI full interfaces works tough.Write a custom driver that works the way my IP needs.Hack with things like dma-mapping, contiguous memory allocations, memory maps, etc.Make a "don't touch" region of ram for Linux, so the HW can work with it.With simple AXI peripherals that are mapped to a fixed address (0x4XXXXXXX) and doesnt communicate with the DDR3, I use mmap and to access the registers, and it work well, but I can't use interrupts. With peripherals that use the DDR3, the configuration parts is done the same way that the regular AXI peripherals, but the RAM buffer, needs to be reserved so Linux doesn't write to it, or it only do it on my command. Also I need the physicall address of that reserverd ram region to pass it to the peripheral. I'd like some highlights on how to make a custom DMA module (hardware side please), but any of the 4 options works. PS: Also, some of these modules that work with RAM doesn't even have an slave axi interface, so they won't appear on the automatic generated device tree. Any information would be usefull. Best regards. Alejandro Wolf.