01-30-2020 12:18 AM - edited 01-30-2020 12:23 AM
I have a Zynq Ultrascale+ MPSoc Development Board(ZCU106). I applied HD-SDI Video Capture and Display Project on it and it works fine. Now I have a custom board and I'm trying to apply HD-SDI Video Capture project on it but I have a DDR3 instead of DDR4 and also my FPGA is different. Therefore I changed FPGA type and DDR configurations and left the other settings same as the reference design when I created the Vivado Project. I generated bitstream, exported hardware and launched SDK.
Xilinx supplies the BSP File for the specific boards and in the reference design they creating petalinux project with BSP:
% cd $TRD_HOME/apu/vcu_petalinux_bsp
% petalinux-create -t project -s xilinx-vcu-trd-zcu106-v2019.1-final.bsp
Then configure the petalinux project with HDF File:
% cd xilinx-vcu-trd-zcu106-v2019.1-final
% petalinux-config --get-hw-description=<Path to prebuilt HDF>
01-30-2020 12:47 AM - edited 01-30-2020 01:10 AM
Same tears here. The key is in the device tree hack. Xilinx, of course, don't teach about this, is not their business. And unfortunately there isn't much material to learn, and if there is, too shallow. I found lots, really lots of deceiving posts kind of "build petalinux for a custom board in a few minutes" but isn't that easy. Is not good allowing so many information that is simply not true. Even if it is desirable it was easy. A pleasant lie harms more than a painful truth.
Update: unless success is to get the board to boot and login, even if devices don't work and that 'thing' as an OS is probably useless. That's really easy to achieve.
02-06-2020 04:50 AM - edited 02-06-2020 04:51 AM
02-06-2020 06:56 AM - edited 02-06-2020 06:56 AM
05-23-2020 03:06 PM - edited 05-24-2020 08:09 PM
It seems that even after adding your custom device tree as above, there is still the issue of the configured "MACHINE" name. If this is set to a standard development board, then your custom device tree content would be applied on top of the standard board definitions from the DTG repository (device-tree-xlnx) . On the other hand, if you customize the machine name, then the device tree generator will look for a custom device tree in the repository by that name, and fail. From the post here: https://forums.xilinx.com/t5/Embedded-Linux/Custom-device-tree-board-file-not-found-when-building-device/m-p/930774
if you can create an appropriate bbappend file to set the "periph_type_overrides" variable for the device-tree recipe then a custom "top level" board device tree could be identified and located as the foundation. Does anyone have such a bbappend that has been demonstrated to work?
Update, t+30 hours: The response by stephenm to the post: https://forums.xilinx.com/t5/Embedded-Linux/PetaLinux-2017-3-Completely-custom-Device-Tree/m-p/814945#M23167 seemed to do the trick. Placed the custom device tree under <repo root device-tree-xlnx>/device_tree/data/kernel_dtsi/2019.1/BOARD/<MACHINE_NAME>.dtsi, then petalinux-config with same MACHINE_NAME under DTG Settings, created the patch from <repo root> as in the post and placed the patch in the device-tree recipe where indicated, edited device-tree.bbappend. Not sure why in the post stephenm says to place the patch also under plnx_workspace. And in 2019.1 that path is a little different. But it worked at least once for me.