11-08-2018 09:59 PM
I have done the HDMI passthrough example design and modified it how i want it. I ripped out TPG and audio blocks and made the RX and TX ports out to the FPGA fabric. I manually modified the c code to remove the TPG and audio functions and other things like loopback mode. I have been manually running the makefile that was generated by the example design. Then i manually download the .elf file via xsdb to the microblaze.
I have also created the example design for the VPSS scaler only which has a similar makefile.
So now i am taking my modified HDMI environment (packaged block design) along with a vpss scaler only (packaged block design), custom rtl, the axi to video and the video to axi blocks.
I need to add the scaler specific initialization code from the scaler example design to my HDMI c code. What is the best way to do this? The .sdk directory from the example design has been carried over from the hdmi example design but does not seem to be linked to the new hardware and thus i am unable to figure out how to get the c code and what should be an xsdk project to my vivado project. I want to be able to use xsdk so that i have an ide to be able to see how all the c files link together and use search functions, etc so that i can begin adding the scaler code if it must be done manually.
Is there away to automatically generate the c code for various IP that are part of an example design or do you have to manually take pieces from each example design like i described above and then copy and paste it into an existing environment.
Also my vivado project and c code and xsdk and license are on a node locked linux server. I use vivado lab on my laptop to download the bitfile to my FPGA. How do use xsdk as a debugger once i have figured out the above environment problems when my environment is on linux with no direct connection from server to the board and no PC lincense?
11-08-2018 10:28 PM
I mention about remote debug on xsdb.
> How do use xsdk as a debugger once i have figured out the above environment problems when my environment is on linux with no direct connection from server to the board and no PC lincense?
You can change target host's IP address from localhost to your machine's IP address on xsdb (xsdk).
Create new connection at "Run" -> "Debug configrations" -> "System Debugger on Local" -> "Target Setup" -> "New ("Connection : Local")"on XSDK.
11-09-2018 06:37 AM
When you export the hdf (from Vivado) to SDK, you basically tell SDK what device and processor you use but also what IPs are in your design.
Thus, SDK will load the corresponding drivers into the BSP and you can then use it.
So each time you are doing a modification to your vivado design, make sure to re-export the hdf file to SDK.
Then to connect to a board which is not directly connected to your local machine, create a new taget as mentioned by @watari. Make sure to run hw_server on the machine on which the board is connected.
Hope that helps,
11-09-2018 08:22 AM
Are there any videos, tutorials or examples with screen shots that show what tabs control telling it the IP and processor being used?
I will try the remote interface but if there are examples for this too that would be helpful.
11-12-2018 12:28 AM
You cannot select what IP are beeing used in SDK. SDK will automatically load all the drivers for the IPs which are in the vivado design described by your hdf file.
For the processor, you can select which one the application will be running on when creating the application.
11-12-2018 09:02 AM
I found this tutorial and followed the steps. I believe it matches what you are implying.
It doesn’t seem to work. The tutorial describes creating a block design and then create top-level HDL wrapper, implement the design and then export the hardware design file. Launch SDK. SDK does not recognize that I have a processor in the design. If you look at the attachments you will see the error and you will see there is a Microblaze processor in the hierarchy of the design.
One difference that I see between the tutorial and my design is that instead of the design being a block design with an HDL wrapper created with the Create HDL Wrapper function then implemented like in the tutorial, I have my own top-level Verilog that instantiates various Verilog blocks and two block designs that were packaged as IP. I have tried OOC and Global for the IP and SDK still does not recognize that there is a Microblaze processor.
11-12-2018 09:15 AM
The only way to create a hdf file with all the information is by designing in a Block Design.
Is there any reason why you are not using a block design?
I would recommend moving your design to a block design. At least the part containing the microblaze and the Xilinx IPs. Note that there is the Add Module feature in Vivado which allows you to import HDL file into a BD.
11-12-2018 10:19 AM
Our design has quite a few verilog blocks and it would be easier to do an implementation with the top-level being my verilog and I instantiate the verilog and the Xilinx IP. The HDMI IP is a block design. The scaler is another block design. The two AXI -Video conversion blocks are obtained from the IP catalog. The HDMI and the scaler are the only blocks that require Xilinx drivers. The HDMI RX must go through two of our IP blocks then through the Video to AXI -> Scaler -> AXi to Video and then it continues through other verilog blocks before going through MGT blocks that implement LVDS. If pull the scaler into my HDMI block design (so the video from our IP goes into the HDMI block design, through the scaler and back out of the HDMI block design) would this work and I can maintain my current vivado project implementation? I would then implement the HDMI block design (with all IP that require drivers included - but with no bitstream), export the .hdf and then create the application project in SDK. Shouldn't this work as long as all IPs requiring drivers be in a single block design (containing a microblaze). This process would go through the same steps as described in the above tutorial except no bitstream.
11-12-2018 04:21 PM
I have added the scaler to my hdmi block design. The .hdf shows the hdmi ips and 2 instances of the scaler as shown in the attached screen shot of the system.hdf tab. I imported the hdmi tx example for Passthrough_Microblaze. The system.mss shows the scaler as generic. How do I import the necessary driver into the BSP. The scaler only example design used
sdk importsources -name vpss_example_design -path ./src -linker-script
from the vpss_example.tcl. Is there a way for me to execute the same thing? Do I have to manually add the source files to the application project?
Would the following apply to my case? If so please provide detailed explanation of what goes in the repository.
Please provide as much detail as possible to a suggested path.
11-12-2018 11:39 PM
The drivers for the VPSS should also be called automatically. I am not sure why it is not done in your case.
Could you send me your hdf file for analysis?
Thanks and Regards,
11-13-2018 07:18 AM
I have attached the system.hdf. BTW, the scaler_0 and scaler_1 are actually a block design that contains the Video to AXI, VPSS Scaler, VTC and AXI to Video. Is doing it this way blocking the VPSS Scaler from being visible. The overall block design is much cleaner than adding 8 more blocks my doing the four as a block design and instantiating it twice for two video paths.
11-13-2018 07:39 AM
Yes, if you package a BD into an IP, vivado will not be aware of all the IP into your new packaged IP. There is a way to have to create files to have SDK calling the correct drivers but I would not start this way (maybe later when everything is working)
One one to change this is to use hierachy to create sub-modules into a BD (to have it easier to read)