I initially sent these messages to Trenz support, but figure they belong here in order to help out the most people:
I am the primary engineer pursuing the USB 2.0/3.0 function on one of our designs that use your SoM (TE0808-04-9EG-2IE) and am currently working on a design on the evaluation kit (TEBF0808-04). I am working with the latest release files you guys provide for Vivado 2018.2. I work on an Ubuntu 16.04 work station (supported by Xilinx for Vivado 2018.2).
I am currently trying to reproduce the behavior of the pre-built Petalinux image (BOOT.BIN and image.ub) provided with the 2018.2 release. With the release image, I am able to get USB 2.0 and USB 3.0 working perfectly fine, but not when I build the image from source. These are the steps I followed to create my own image from source:
1. Ran _create_linux_setup.sh and chose maximum setup
2. Modified design_basic_settings.sh with my path to Vivado
installation as well as short ID for the TE0808-04-9EG-2IE (9eg_2ib_sk)
3. Made sure all tools and files used have proper permissions for
execution and are owned by the current user
4. Sourced vivado_create_project_guimode.sh
5. Ran synthesis, implementation, and bitstream generation.
6. Exported hardware to SDK with bitstream included
7. Created FSBL for design (all defaults)
8. Extracted the config files from the os files on the release (config,
rootfs_config, and the config.gz containing the kernel config from
the image, as well as the system-user.dtsi for updated device tree
settings)
9. Created a petalinux project under the project.sdk/petabuild folder
(petalinux-create -t project -n USB3_Test --template zynqMP)
10. Imported hardware I built from the script provided (petalinux-config
--get-hw-description $path_to_hdf)
11. Loaded project configuration used in release (petalinux-config, then
use load command)
12. Loaded rootfs configuration used in release (petalinux-config -c
rootfs, then use load command)
13. Loaded kernel configuration used in release (petalinux-config -c
kernel, then use load command)
14. Replaced the default
project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi with
the one provided in the release files
15. Built the project: petalinux-build
16. Packaged the project: petalinux-package --boot --fsbl $path_to_fsbl
--fpga $path_to_exported_bitstream --uboot --force
17. Copied images/linux/image.ub and images/linux/BOOT.BIN to boot
partition of properly formatted MicroSD card
18. Booted the hardware using this image built from source
I noticed that instead of proper USB operation, I get the error message: "[ 14.187998] usb usb1-port1: connect-debounce failed" and neither USB 2.0 or 3.0 are working, there is no interface to a hard drive that I have inserted into a USB port under /dev/sdX.
Is there something I am missing? A step I am not doing properly or some customization of the build I am not doing properly that explains this failure?
-------------------------
I have found a few places that there were differences between my build and the pre-built one, for example I added the recipes-kernel folder from the os folder. The major difference, however, was in the TE modified FSBL, when I added the pre-built FSBL to my image, suddenly USB 3 was working. I am trying to build the FSBL from source, using the template you guys provide under sw_libs, and while it compiles it does not behave properly when I try to boot using it... Any idea why? I also flashed the OTP memory of a SI5345 chip with the same frequency plan as what was discussed in the TE modified FSBL and tried to boot using a default FSBL image, but USB 3 did not work with a message related to dwc3 not being able to find the PHY. Can you guys shed any light on that?
What I am trying to figure out now, specifically, is if there is some requirement for the SRST_B to be asserted after the silabs chip is programmed due to some timing issue in the Zynq US+ PS boot sequence. I am also trying to determine what impact, if any, changing the clock plan (not frequency output to USB3 MGT bank) has on performance when reset is still asserted.